├── .dockerignore
├── .gitignore
├── .idea
└── .idea.ConfTool
│ └── .idea
│ ├── .gitignore
│ ├── .name
│ ├── indexLayout.xml
│ └── vcs.xml
├── .vscode
├── launch.json
├── settings.json
└── tasks.json
├── Client
├── App.razor
├── Authentication
│ ├── Authentication.razor
│ ├── LoginDisplay.razor
│ └── RedirectToLogin.razor
├── ClientCodeMap.dgml
├── Common
│ ├── Collapsible.razor
│ ├── MainLayout.razor
│ ├── MainLayout.razor.css
│ ├── NavMenu.razor
│ └── NavMenu.razor.css
├── ConfTool.Client.csproj
├── Counter
│ └── Counter.razor
├── Index.razor
├── Infrastructure
│ ├── ClientLoggerInterceptor.cs
│ ├── Configuration.cs
│ └── pwa
│ │ ├── commands.txt
│ │ └── workbox-config.js
├── Program.cs
├── Properties
│ └── launchSettings.json
├── Time
│ └── Time.razor
├── Webcam
│ ├── IWebcamService.cs
│ ├── Webcam.razor
│ ├── Webcam.razor.css
│ ├── WebcamOptions.cs
│ ├── WebcamService.cs
│ └── WebcamServiceCollectionExtensions.cs
├── _Imports.razor
└── wwwroot
│ ├── appsettings.json
│ ├── css
│ ├── app.css
│ ├── bootstrap
│ │ ├── bootstrap.min.css
│ │ └── bootstrap.min.css.map
│ └── open-iconic
│ │ ├── FONT-LICENSE
│ │ ├── ICON-LICENSE
│ │ ├── README.md
│ │ └── font
│ │ ├── css
│ │ └── open-iconic-bootstrap.min.css
│ │ └── fonts
│ │ ├── open-iconic.eot
│ │ ├── open-iconic.otf
│ │ ├── open-iconic.svg
│ │ ├── open-iconic.ttf
│ │ └── open-iconic.woff
│ ├── favicon.ico
│ ├── icon-192.png
│ ├── icon-512.png
│ ├── index.html
│ ├── jsinterop
│ └── webcam.js
│ ├── manifest.json
│ ├── sw.js
│ ├── sw.js.map
│ ├── workbox-1a734021.js
│ └── workbox-1a734021.js.map
├── ClientModules
├── ConferencesModule
│ ├── Components
│ │ ├── ConferenceComponentDisplayModes.cs
│ │ └── ConferenceHeader.razor
│ ├── ConfTool.ClientModules.Conferences.csproj
│ ├── ConferencesModuleServiceCollectionExtensions.cs
│ ├── Configuration.cs
│ ├── Pages
│ │ ├── Conference.razor
│ │ ├── Conference.razor.cs
│ │ └── Conferences.razor
│ ├── Services
│ │ ├── ConferencesServiceClientGrpc.cs
│ │ ├── ConferencesServiceClientHttp.cs
│ │ ├── CountriesServiceClient.cs
│ │ ├── Dialog
│ │ │ ├── DialogService.cs
│ │ │ ├── DialogServiceCollectionExtensions.cs
│ │ │ └── IDialogService.cs
│ │ └── IConferencesServiceClient.cs
│ ├── _Imports.razor
│ └── wwwroot
│ │ └── jsinterop
│ │ └── dialog.js
└── StatisticsModule
│ ├── ConfTool.ClientModules.Statistics.csproj
│ ├── Configuration.cs
│ ├── Pages
│ └── Statistics.razor
│ ├── Services
│ └── StatisticsServiceClient.cs
│ ├── StatisticsModuleServiceCollectionExtensions.cs
│ ├── _Imports.razor
│ └── wwwroot
│ ├── jsinterop
│ └── wcpiechart.js
│ └── libs
│ └── wc-piechart
│ ├── angular-scripts.js
│ ├── polyfills.js
│ └── wc-piechart.js
├── ConfTool.sln
├── IdentityServer4Demo
├── Api
│ └── TestController.cs
├── Config.cs
├── DemoCorsPolicy.cs
├── DemoRedirectValidator.cs
├── Dockerfile
├── IdentityServer4Demo.csproj
├── IdentityServer4Demo.sln
├── Program.cs
├── Properties
│ └── launchSettings.json
├── Quickstart
│ ├── Account
│ │ ├── AccountController.cs
│ │ ├── AccountOptions.cs
│ │ ├── ExternalController.cs
│ │ ├── ExternalProvider.cs
│ │ ├── LoggedOutViewModel.cs
│ │ ├── LoginInputModel.cs
│ │ ├── LoginViewModel.cs
│ │ ├── LogoutInputModel.cs
│ │ ├── LogoutViewModel.cs
│ │ └── RedirectViewModel.cs
│ ├── Consent
│ │ ├── ConsentController.cs
│ │ ├── ConsentInputModel.cs
│ │ ├── ConsentOptions.cs
│ │ ├── ConsentViewModel.cs
│ │ ├── ProcessConsentResult.cs
│ │ └── ScopeViewModel.cs
│ ├── Device
│ │ ├── DeviceAuthorizationInputModel.cs
│ │ ├── DeviceAuthorizationViewModel.cs
│ │ └── DeviceController.cs
│ ├── Diagnostics
│ │ ├── DiagnosticsController.cs
│ │ └── DiagnosticsViewModel.cs
│ ├── Extensions.cs
│ ├── Grants
│ │ ├── GrantsController.cs
│ │ └── GrantsViewModel.cs
│ ├── Home
│ │ ├── ErrorViewModel.cs
│ │ └── HomeController.cs
│ ├── SecurityHeadersAttribute.cs
│ └── TestUsers.cs
├── SameSiteHandlingExtensions.cs
├── Startup.cs
├── Views
│ ├── Account
│ │ ├── AccessDenied.cshtml
│ │ ├── LoggedOut.cshtml
│ │ ├── Login.cshtml
│ │ └── Logout.cshtml
│ ├── Consent
│ │ └── Index.cshtml
│ ├── Device
│ │ ├── Success.cshtml
│ │ ├── UserCodeCapture.cshtml
│ │ └── UserCodeConfirmation.cshtml
│ ├── Diagnostics
│ │ └── Index.cshtml
│ ├── Grants
│ │ └── Index.cshtml
│ ├── Home
│ │ └── Index.cshtml
│ ├── Shared
│ │ ├── Error.cshtml
│ │ ├── Redirect.cshtml
│ │ ├── _Layout.cshtml
│ │ ├── _Nav.cshtml
│ │ ├── _ScopeListItem.cshtml
│ │ └── _ValidationSummary.cshtml
│ ├── _ViewImports.cshtml
│ └── _ViewStart.cshtml
├── appsettings.json
├── web.config
└── wwwroot
│ ├── css
│ ├── site.css
│ ├── site.min.css
│ └── site.scss
│ ├── favicon.ico
│ ├── icon.jpg
│ ├── icon.png
│ ├── js
│ ├── signin-redirect.js
│ └── signout-redirect.js
│ └── lib
│ ├── bootstrap
│ ├── LICENSE
│ ├── README.md
│ ├── dist
│ │ ├── css
│ │ │ ├── bootstrap-grid.css
│ │ │ ├── bootstrap-grid.css.map
│ │ │ ├── bootstrap-grid.min.css
│ │ │ ├── bootstrap-grid.min.css.map
│ │ │ ├── bootstrap-reboot.css
│ │ │ ├── bootstrap-reboot.css.map
│ │ │ ├── bootstrap-reboot.min.css
│ │ │ ├── bootstrap-reboot.min.css.map
│ │ │ ├── bootstrap.css
│ │ │ ├── bootstrap.css.map
│ │ │ ├── bootstrap.min.css
│ │ │ └── bootstrap.min.css.map
│ │ └── js
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.bundle.js.map
│ │ │ ├── bootstrap.bundle.min.js
│ │ │ ├── bootstrap.bundle.min.js.map
│ │ │ ├── bootstrap.js
│ │ │ ├── bootstrap.js.map
│ │ │ ├── bootstrap.min.js
│ │ │ └── bootstrap.min.js.map
│ └── scss
│ │ ├── _alert.scss
│ │ ├── _badge.scss
│ │ ├── _breadcrumb.scss
│ │ ├── _button-group.scss
│ │ ├── _buttons.scss
│ │ ├── _card.scss
│ │ ├── _carousel.scss
│ │ ├── _close.scss
│ │ ├── _code.scss
│ │ ├── _custom-forms.scss
│ │ ├── _dropdown.scss
│ │ ├── _forms.scss
│ │ ├── _functions.scss
│ │ ├── _grid.scss
│ │ ├── _images.scss
│ │ ├── _input-group.scss
│ │ ├── _jumbotron.scss
│ │ ├── _list-group.scss
│ │ ├── _media.scss
│ │ ├── _mixins.scss
│ │ ├── _modal.scss
│ │ ├── _nav.scss
│ │ ├── _navbar.scss
│ │ ├── _pagination.scss
│ │ ├── _popover.scss
│ │ ├── _print.scss
│ │ ├── _progress.scss
│ │ ├── _reboot.scss
│ │ ├── _root.scss
│ │ ├── _spinners.scss
│ │ ├── _tables.scss
│ │ ├── _toasts.scss
│ │ ├── _tooltip.scss
│ │ ├── _transitions.scss
│ │ ├── _type.scss
│ │ ├── _utilities.scss
│ │ ├── _variables.scss
│ │ ├── bootstrap-grid.scss
│ │ ├── bootstrap-reboot.scss
│ │ ├── bootstrap.scss
│ │ ├── mixins
│ │ ├── _alert.scss
│ │ ├── _background-variant.scss
│ │ ├── _badge.scss
│ │ ├── _border-radius.scss
│ │ ├── _box-shadow.scss
│ │ ├── _breakpoints.scss
│ │ ├── _buttons.scss
│ │ ├── _caret.scss
│ │ ├── _clearfix.scss
│ │ ├── _deprecate.scss
│ │ ├── _float.scss
│ │ ├── _forms.scss
│ │ ├── _gradients.scss
│ │ ├── _grid-framework.scss
│ │ ├── _grid.scss
│ │ ├── _hover.scss
│ │ ├── _image.scss
│ │ ├── _list-group.scss
│ │ ├── _lists.scss
│ │ ├── _nav-divider.scss
│ │ ├── _pagination.scss
│ │ ├── _reset-text.scss
│ │ ├── _resize.scss
│ │ ├── _screen-reader.scss
│ │ ├── _size.scss
│ │ ├── _table-row.scss
│ │ ├── _text-emphasis.scss
│ │ ├── _text-hide.scss
│ │ ├── _text-truncate.scss
│ │ ├── _transition.scss
│ │ └── _visibility.scss
│ │ ├── utilities
│ │ ├── _align.scss
│ │ ├── _background.scss
│ │ ├── _borders.scss
│ │ ├── _clearfix.scss
│ │ ├── _display.scss
│ │ ├── _embed.scss
│ │ ├── _flex.scss
│ │ ├── _float.scss
│ │ ├── _overflow.scss
│ │ ├── _position.scss
│ │ ├── _screenreaders.scss
│ │ ├── _shadows.scss
│ │ ├── _sizing.scss
│ │ ├── _spacing.scss
│ │ ├── _stretched-link.scss
│ │ ├── _text.scss
│ │ └── _visibility.scss
│ │ └── vendor
│ │ └── _rfs.scss
│ └── jquery
│ ├── LICENSE.txt
│ ├── README.md
│ └── dist
│ ├── jquery.js
│ ├── jquery.min.js
│ ├── jquery.min.map
│ ├── jquery.slim.js
│ ├── jquery.slim.min.js
│ └── jquery.slim.min.map
├── README.md
├── Server
├── ConfTool.Server.csproj
├── Controllers
│ ├── ConferencesController.cs
│ ├── CountriesController.cs
│ └── StatisticsController.cs
├── Dockerfile
├── GrpcServices
│ ├── ConferencesServiceCodeFirst.cs
│ ├── ConferencesServiceContractFirst.cs
│ ├── CounterService.cs
│ ├── GreeterService.cs
│ └── TimeService.cs
├── Hubs
│ └── ConferencesHub.cs
├── Model
│ ├── AutoMapperProfile.cs
│ ├── Conference.cs
│ ├── ConferencesDbContext.cs
│ └── DataGenerator.cs
├── Pages
│ ├── Error.cshtml
│ ├── Error.cshtml.cs
│ └── Shared
│ │ └── _Layout.cshtml
├── Program.cs
├── Properties
│ └── launchSettings.json
├── ServerCodeMap.dgml
├── Startup.cs
├── appsettings.Development.json
└── appsettings.json
├── Shared
├── ConfTool.Shared.csproj
├── Contracts
│ ├── IConferencesService.cs
│ └── ITimeService.cs
├── DTO
│ ├── ConferenceDetails.cs
│ ├── ConferenceDetailsRequest.cs
│ └── ConferenceOverview.cs
├── Protos
│ ├── ConferencesService.proto
│ ├── CounterService.proto
│ └── GreeterService.proto
└── Validation
│ └── ConferenceDetailsValidator.cs
├── Tests
├── CollapsibleTest.cs
└── ConfTool.Tests.csproj
├── Tools
├── ConfTool.Tools.csproj
└── Program.cs
├── nuget.config
└── tye.yaml
/.dockerignore:
--------------------------------------------------------------------------------
1 | **/.classpath
2 | **/.dockerignore
3 | **/.env
4 | **/.git
5 | **/.gitignore
6 | **/.project
7 | **/.settings
8 | **/.toolstarget
9 | **/.vs
10 | **/.vscode
11 | **/*.*proj.user
12 | **/*.dbmdl
13 | **/*.jfm
14 | **/azds.yaml
15 | **/bin
16 | **/charts
17 | **/docker-compose*
18 | **/Dockerfile*
19 | **/node_modules
20 | **/npm-debug.log
21 | **/obj
22 | **/secrets.dev.yaml
23 | **/values.dev.yaml
24 | LICENSE
25 | README.md
--------------------------------------------------------------------------------
/.idea/.idea.ConfTool/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Rider ignored files
5 | /contentModel.xml
6 | /projectSettingsUpdater.xml
7 | /modules.xml
8 | /.idea.ConfTool.iml
9 | # Editor-based HTTP Client requests
10 | /httpRequests/
11 | # Datasource local storage ignored files
12 | /dataSources/
13 | /dataSources.local.xml
14 |
--------------------------------------------------------------------------------
/.idea/.idea.ConfTool/.idea/.name:
--------------------------------------------------------------------------------
1 | ConfTool
--------------------------------------------------------------------------------
/.idea/.idea.ConfTool/.idea/indexLayout.xml:
--------------------------------------------------------------------------------
1 |
2 | You are not authorized to access this resource. Sorry, there's nothing at this address.
Current value: @_currentCount
17 | 18 | 19 | 20 | 21 | @code { 22 | private int _currentCount = 0; 23 | private CancellationTokenSource _cts; 24 | 25 | private async Task IncrementCount() 26 | { 27 | _cts = new CancellationTokenSource(); 28 | 29 | var client = new Count.Counter.CounterClient(_channel); 30 | var call = client.StartCounter(new CounterRequest() { Start = _currentCount }, cancellationToken: _cts.Token); 31 | 32 | try 33 | { 34 | await foreach (var message in call.ResponseStream.ReadAllAsync()) 35 | { 36 | _currentCount = message.Count; 37 | StateHasChanged(); 38 | } 39 | } 40 | catch (RpcException ex) when (ex.StatusCode == StatusCode.Cancelled) 41 | { 42 | // Ignore exception from cancellation 43 | } 44 | } 45 | 46 | private void StopCount() 47 | { 48 | _cts?.Cancel(); 49 | _cts = null; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Client/Index.razor: -------------------------------------------------------------------------------- 1 | @page "/" 2 | 3 | @using ConfTool.Client.Common 4 | 5 |Current time: @_currentTimeFromServer
18 | 19 | 20 | 21 | 22 | @code { 23 | private DateTime _currentTimeFromServer; 24 | private CancellationTokenSource _cts; 25 | 26 | private async Task StartTime() 27 | { 28 | var clock = _channel.CreateGrpcServiceLoading conferences...
28 | } 29 | else 30 | { 31 |Title | 35 |
---|
@conf.Title | 41 |
You do not have access to that resource.
6 |Would you like to logut of IdentityServer?
7 |You have successfully authorized the device
6 |Please enter the code displayed on your device.
7 |Once complete, you may close this tab.
7 |