From be80b86ad60a3ce38768d7945e5e615fc3044a31 Mon Sep 17 00:00:00 2001 From: Brice Date: Wed, 6 Jan 2021 15:45:04 +0100 Subject: [PATCH 01/38] Moved UI folders and files to new Admin.UI project --- .gitignore | 4 +- Skoruba.IdentityServer4.Admin.sln | 7 + .../Constants/AuthenticationConsts.cs | 0 .../Constants/AuthorizationConsts.cs | 0 .../Controllers/AccountController.cs | 52 +++--- .../Controllers/BaseController.cs | 0 .../Controllers/ConfigurationController.cs | 0 .../Controllers/GrantController.cs | 0 .../Controllers/HomeController.cs | 0 .../Controllers/IdentityController.cs | 0 .../Controllers/LogController.cs | 0 .../ControllerExceptionFilterAttribute.cs | 0 .../Localization/GenericServiceLocalizer.cs | 0 .../IGenericControllerLocalizer.cs | 0 .../Helpers/MD5HashHelper.cs | 0 .../Helpers/NotificationHelpers.cs | 0 .../Helpers/PagerHelpers.cs | 0 .../Helpers/TagHelpers/GravatarTagHelper.cs | 0 .../Helpers/TagHelpers/PickerTagHelper.cs | 0 .../Helpers/TagHelpers/SwitchTagHelper.cs | 0 .../Helpers/UrlHelpers.cs | 0 .../ConfigurationController.da.resx | 0 .../ConfigurationController.de.resx | 0 .../ConfigurationController.en.resx | 0 .../ConfigurationController.es.resx | 0 .../ConfigurationController.fa.resx | 0 .../ConfigurationController.fi.resx | 0 .../ConfigurationController.fr.resx | 0 .../ConfigurationController.pt.resx | 0 .../ConfigurationController.ru.resx | 0 .../ConfigurationController.sv.resx | 0 .../ConfigurationController.zh.resx | 0 .../Controllers/GrantController.da.resx | 0 .../Controllers/GrantController.de.resx | 0 .../Controllers/GrantController.en.resx | 0 .../Controllers/GrantController.es.resx | 0 .../Controllers/GrantController.fa.resx | 0 .../Controllers/GrantController.fi.resx | 0 .../Controllers/GrantController.fr.resx | 0 .../Controllers/GrantController.pt.resx | 0 .../Controllers/GrantController.ru.resx | 0 .../Controllers/GrantController.sv.resx | 0 .../Controllers/GrantController.zh.resx | 0 .../Controllers/IdentityController.da.resx | 0 .../Controllers/IdentityController.de.resx | 0 .../Controllers/IdentityController.en.resx | 0 .../Controllers/IdentityController.es.resx | 0 .../Controllers/IdentityController.fa.resx | 0 .../Controllers/IdentityController.fi.resx | 0 .../Controllers/IdentityController.fr.resx | 0 .../Controllers/IdentityController.pt.resx | 0 .../Controllers/IdentityController.ru.resx | 0 .../Controllers/IdentityController.sv.resx | 0 .../Controllers/IdentityController.zh.resx | 0 .../Identity/IdentityErrorMessages.en.resx | 0 .../Identity/IdentityErrorMessages.resx | 0 .../Services/ApiResourceService.da.resx | 0 .../Services/ApiResourceService.de.resx | 0 .../Services/ApiResourceService.en.resx | 0 .../Services/ApiResourceService.es.resx | 0 .../Services/ApiResourceService.fa.resx | 0 .../Services/ApiResourceService.fi.resx | 0 .../Services/ApiResourceService.fr.resx | 0 .../Services/ApiResourceService.pt.resx | 0 .../Services/ApiResourceService.ru.resx | 0 .../Services/ApiResourceService.sv.resx | 0 .../Services/ApiResourceService.zh.resx | 0 .../Resources/Services/ClientService.da.resx | 0 .../Resources/Services/ClientService.de.resx | 0 .../Resources/Services/ClientService.en.resx | 0 .../Resources/Services/ClientService.es.resx | 0 .../Resources/Services/ClientService.fa.resx | 0 .../Resources/Services/ClientService.fi.resx | 0 .../Resources/Services/ClientService.fr.resx | 0 .../Resources/Services/ClientService.pt.resx | 0 .../Resources/Services/ClientService.ru.resx | 0 .../Resources/Services/ClientService.sv.resx | 0 .../Resources/Services/ClientService.zh.resx | 0 .../Services/IdentityResourceService.da.resx | 0 .../Services/IdentityResourceService.de.resx | 0 .../Services/IdentityResourceService.en.resx | 0 .../Services/IdentityResourceService.es.resx | 0 .../Services/IdentityResourceService.fa.resx | 0 .../Services/IdentityResourceService.fi.resx | 0 .../Services/IdentityResourceService.fr.resx | 0 .../Services/IdentityResourceService.pt.resx | 0 .../Services/IdentityResourceService.ru.resx | 0 .../Services/IdentityResourceService.sv.resx | 0 .../Services/IdentityResourceService.zh.resx | 0 .../Services/IdentityService.da.resx | 0 .../Services/IdentityService.de.resx | 0 .../Services/IdentityService.en.resx | 0 .../Services/IdentityService.es.resx | 0 .../Services/IdentityService.fa.resx | 0 .../Services/IdentityService.fi.resx | 0 .../Services/IdentityService.fr.resx | 0 .../Services/IdentityService.pt.resx | 0 .../Services/IdentityService.ru.resx | 0 .../Services/IdentityService.sv.resx | 0 .../Services/IdentityService.zh.resx | 0 .../Services/PersistedGrantService.da.resx | 0 .../Services/PersistedGrantService.de.resx | 0 .../Services/PersistedGrantService.en.resx | 0 .../Services/PersistedGrantService.es.resx | 0 .../Services/PersistedGrantService.fa.resx | 0 .../Services/PersistedGrantService.fi.resx | 0 .../Services/PersistedGrantService.fr.resx | 0 .../Services/PersistedGrantService.pt.resx | 0 .../Services/PersistedGrantService.ru.resx | 0 .../Services/PersistedGrantService.sv.resx | 0 .../Services/PersistedGrantService.zh.resx | 0 .../Views/Account/AccessDenied.da.resx | 0 .../Views/Account/AccessDenied.de.resx | 0 .../Views/Account/AccessDenied.en.resx | 0 .../Views/Account/AccessDenied.es.resx | 0 .../Views/Account/AccessDenied.fa.resx | 0 .../Views/Account/AccessDenied.fi.resx | 0 .../Views/Account/AccessDenied.fr.resx | 0 .../Views/Account/AccessDenied.pt.resx | 0 .../Views/Account/AccessDenied.ru.resx | 0 .../Views/Account/AccessDenied.sv.resx | 0 .../Views/Account/AccessDenied.zh.resx | 0 .../Views/Configuration/ApiResource.da.resx | 0 .../Views/Configuration/ApiResource.de.resx | 0 .../Views/Configuration/ApiResource.en.resx | 0 .../Views/Configuration/ApiResource.es.resx | 0 .../Views/Configuration/ApiResource.fa.resx | 0 .../Views/Configuration/ApiResource.fi.resx | 0 .../Views/Configuration/ApiResource.fr.resx | 0 .../Views/Configuration/ApiResource.pt.resx | 0 .../Views/Configuration/ApiResource.ru.resx | 0 .../Views/Configuration/ApiResource.sv.resx | 0 .../Views/Configuration/ApiResource.zh.resx | 0 .../ApiResource/Section/Label.da.resx | 0 .../ApiResource/Section/Label.de.resx | 0 .../ApiResource/Section/Label.en.resx | 0 .../ApiResource/Section/Label.es.resx | 0 .../ApiResource/Section/Label.fa.resx | 0 .../ApiResource/Section/Label.fi.resx | 0 .../ApiResource/Section/Label.pt.resx | 0 .../ApiResource/Section/Label.ru.resx | 0 .../ApiResource/Section/Label.sv.resx | 0 .../ApiResource/Section/Label.zh.resx | 0 .../Configuration/ApiResourceDelete.da.resx | 0 .../Configuration/ApiResourceDelete.de.resx | 0 .../Configuration/ApiResourceDelete.en.resx | 0 .../Configuration/ApiResourceDelete.es.resx | 0 .../Configuration/ApiResourceDelete.fa.resx | 0 .../Configuration/ApiResourceDelete.fi.resx | 0 .../Configuration/ApiResourceDelete.fr.resx | 0 .../Configuration/ApiResourceDelete.pt.resx | 0 .../Configuration/ApiResourceDelete.ru.resx | 0 .../Configuration/ApiResourceDelete.sv.resx | 0 .../Configuration/ApiResourceDelete.zh.resx | 0 .../ApiResourceProperties.da.resx | 0 .../ApiResourceProperties.de.resx | 0 .../ApiResourceProperties.en.resx | 0 .../ApiResourceProperties.es.resx | 0 .../ApiResourceProperties.fa.resx | 0 .../ApiResourceProperties.fi.resx | 0 .../ApiResourceProperties.fr.resx | 0 .../ApiResourceProperties.pt.resx | 0 .../ApiResourceProperties.ru.resx | 0 .../ApiResourceProperties.sv.resx | 0 .../ApiResourceProperties.zh.resx | 0 .../ApiResourcePropertyDelete.da.resx | 0 .../ApiResourcePropertyDelete.de.resx | 0 .../ApiResourcePropertyDelete.en.resx | 0 .../ApiResourcePropertyDelete.es.resx | 0 .../ApiResourcePropertyDelete.fa.resx | 0 .../ApiResourcePropertyDelete.fi.resx | 0 .../ApiResourcePropertyDelete.fr.resx | 0 .../ApiResourcePropertyDelete.pt.resx | 0 .../ApiResourcePropertyDelete.ru.resx | 0 .../ApiResourcePropertyDelete.sv.resx | 0 .../ApiResourcePropertyDelete.zh.resx | 0 .../Views/Configuration/ApiResources.da.resx | 0 .../Views/Configuration/ApiResources.de.resx | 0 .../Views/Configuration/ApiResources.en.resx | 0 .../Views/Configuration/ApiResources.es.resx | 0 .../Views/Configuration/ApiResources.fa.resx | 0 .../Views/Configuration/ApiResources.fi.resx | 0 .../Views/Configuration/ApiResources.fr.resx | 0 .../Views/Configuration/ApiResources.pt.resx | 0 .../Views/Configuration/ApiResources.ru.resx | 0 .../Views/Configuration/ApiResources.sv.resx | 0 .../Views/Configuration/ApiResources.zh.resx | 0 .../Configuration/ApiScopeDelete.da.resx | 0 .../Configuration/ApiScopeDelete.de.resx | 0 .../Configuration/ApiScopeDelete.en.resx | 0 .../Configuration/ApiScopeDelete.es.resx | 0 .../Configuration/ApiScopeDelete.fa.resx | 0 .../Configuration/ApiScopeDelete.fi.resx | 0 .../Configuration/ApiScopeDelete.fr.resx | 0 .../Configuration/ApiScopeDelete.pt.resx | 0 .../Configuration/ApiScopeDelete.ru.resx | 0 .../Configuration/ApiScopeDelete.sv.resx | 0 .../Configuration/ApiScopeDelete.zh.resx | 0 .../Views/Configuration/ApiScopes.da.resx | 0 .../Views/Configuration/ApiScopes.de.resx | 0 .../Views/Configuration/ApiScopes.en.resx | 0 .../Views/Configuration/ApiScopes.es.resx | 0 .../Views/Configuration/ApiScopes.fa.resx | 0 .../Views/Configuration/ApiScopes.fi.resx | 0 .../Views/Configuration/ApiScopes.fr.resx | 0 .../Views/Configuration/ApiScopes.pt.resx | 0 .../Views/Configuration/ApiScopes.ru.resx | 0 .../Views/Configuration/ApiScopes.sv.resx | 0 .../Views/Configuration/ApiScopes.zh.resx | 0 .../Configuration/ApiSecretDelete.da.resx | 0 .../Configuration/ApiSecretDelete.de.resx | 0 .../Configuration/ApiSecretDelete.en.resx | 0 .../Configuration/ApiSecretDelete.es.resx | 0 .../Configuration/ApiSecretDelete.fa.resx | 0 .../Configuration/ApiSecretDelete.fi.resx | 0 .../Configuration/ApiSecretDelete.fr.resx | 0 .../Configuration/ApiSecretDelete.pt.resx | 0 .../Configuration/ApiSecretDelete.ru.resx | 0 .../Configuration/ApiSecretDelete.sv.resx | 0 .../Configuration/ApiSecretDelete.zh.resx | 0 .../Views/Configuration/ApiSecrets.da.resx | 0 .../Views/Configuration/ApiSecrets.de.resx | 0 .../Views/Configuration/ApiSecrets.en.resx | 0 .../Views/Configuration/ApiSecrets.es.resx | 0 .../Views/Configuration/ApiSecrets.fa.resx | 0 .../Views/Configuration/ApiSecrets.fi.resx | 0 .../Views/Configuration/ApiSecrets.fr.resx | 0 .../Views/Configuration/ApiSecrets.pt.resx | 0 .../Views/Configuration/ApiSecrets.ru.resx | 0 .../Views/Configuration/ApiSecrets.sv.resx | 0 .../Views/Configuration/ApiSecrets.zh.resx | 0 .../Views/Configuration/Client.da.resx | 0 .../Views/Configuration/Client.de.resx | 0 .../Views/Configuration/Client.en.resx | 0 .../Views/Configuration/Client.es.resx | 0 .../Views/Configuration/Client.fa.resx | 0 .../Views/Configuration/Client.fi.resx | 0 .../Views/Configuration/Client.fr.resx | 0 .../Views/Configuration/Client.pt.resx | 0 .../Views/Configuration/Client.ru.resx | 0 .../Views/Configuration/Client.sv.resx | 0 .../Views/Configuration/Client.zh.resx | 0 .../Client/Section/ActionButtons.da.resx | 0 .../Client/Section/ActionButtons.de.resx | 0 .../Client/Section/ActionButtons.en.resx | 0 .../Client/Section/ActionButtons.es.resx | 0 .../Client/Section/ActionButtons.fa.resx | 0 .../Client/Section/ActionButtons.fi.resx | 0 .../Client/Section/ActionButtons.fr.resx | 0 .../Client/Section/ActionButtons.pt.resx | 0 .../Client/Section/ActionButtons.ru.resx | 0 .../Client/Section/ActionButtons.sv.resx | 0 .../Client/Section/ActionButtons.zh.resx | 0 .../Client/Section/Authentication.da.resx | 0 .../Client/Section/Authentication.de.resx | 0 .../Client/Section/Authentication.en.resx | 0 .../Client/Section/Authentication.es.resx | 0 .../Client/Section/Authentication.fa.resx | 0 .../Client/Section/Authentication.fi.resx | 0 .../Client/Section/Authentication.fr.resx | 0 .../Client/Section/Authentication.pt.resx | 0 .../Client/Section/Authentication.ru.resx | 0 .../Client/Section/Authentication.sv.resx | 0 .../Client/Section/Authentication.zh.resx | 0 .../Client/Section/Basics.da.resx | 0 .../Client/Section/Basics.de.resx | 0 .../Client/Section/Basics.en.resx | 0 .../Client/Section/Basics.es.resx | 0 .../Client/Section/Basics.fa.resx | 0 .../Client/Section/Basics.fi.resx | 0 .../Client/Section/Basics.fr.resx | 0 .../Client/Section/Basics.pt.resx | 0 .../Client/Section/Basics.ru.resx | 0 .../Client/Section/Basics.sv.resx | 0 .../Client/Section/Basics.zh.resx | 0 .../Client/Section/Consent.de.resx | 0 .../Client/Section/Consent.en.resx | 0 .../Client/Section/Consent.es.resx | 0 .../Client/Section/Consent.fa.resx | 0 .../Client/Section/Consent.fi.resx | 0 .../Client/Section/Consent.fr.resx | 0 .../Client/Section/Consent.pt.resx | 0 .../Client/Section/Consent.ru.resx | 0 .../Client/Section/Consent.sv.resx | 0 .../Client/Section/Consent.zh.resx | 0 .../Client/Section/DeviceFlow.de.resx | 0 .../Client/Section/DeviceFlow.en.resx | 0 .../Client/Section/DeviceFlow.es.resx | 0 .../Client/Section/DeviceFlow.fa.resx | 0 .../Client/Section/DeviceFlow.fr.resx | 0 .../Client/Section/DeviceFlow.pt.resx | 0 .../Client/Section/DeviceFlow.sv.resx | 0 .../Client/Section/DeviceFlow.zh.resx | 0 .../Client/Section/Label.de.resx | 0 .../Client/Section/Label.en.resx | 0 .../Client/Section/Label.es.resx | 0 .../Client/Section/Label.fa.resx | 0 .../Client/Section/Label.fi.resx | 0 .../Client/Section/Label.fr.resx | 0 .../Client/Section/Label.pt.resx | 0 .../Client/Section/Label.ru.resx | 0 .../Client/Section/Label.sv.resx | 0 .../Client/Section/Label.zh.resx | 0 .../Configuration/Client/Section/Name.de.resx | 0 .../Configuration/Client/Section/Name.en.resx | 0 .../Configuration/Client/Section/Name.es.resx | 0 .../Configuration/Client/Section/Name.fa.resx | 0 .../Configuration/Client/Section/Name.fi.resx | 0 .../Configuration/Client/Section/Name.fr.resx | 0 .../Configuration/Client/Section/Name.pt.resx | 0 .../Configuration/Client/Section/Name.ru.resx | 0 .../Configuration/Client/Section/Name.sv.resx | 0 .../Configuration/Client/Section/Name.zh.resx | 0 .../Client/Section/Token.de.resx | 0 .../Client/Section/Token.en.resx | 0 .../Client/Section/Token.es.resx | 0 .../Client/Section/Token.fa.resx | 0 .../Client/Section/Token.fi.resx | 0 .../Client/Section/Token.fr.resx | 0 .../Client/Section/Token.pt.resx | 0 .../Client/Section/Token.ru.resx | 0 .../Client/Section/Token.sv.resx | 0 .../Client/Section/Token.zh.resx | 0 .../Configuration/Client/Settings.da.resx | 0 .../Configuration/Client/Settings.de.resx | 0 .../Configuration/Client/Settings.en.resx | 0 .../Configuration/Client/Settings.es.resx | 0 .../Configuration/Client/Settings.fa.resx | 0 .../Configuration/Client/Settings.fi.resx | 0 .../Configuration/Client/Settings.fr.resx | 0 .../Configuration/Client/Settings.pt.resx | 0 .../Configuration/Client/Settings.ru.resx | 0 .../Configuration/Client/Settings.sv.resx | 0 .../Configuration/Client/Settings.zh.resx | 0 .../Configuration/ClientClaimDelete.da.resx | 0 .../Configuration/ClientClaimDelete.de.resx | 0 .../Configuration/ClientClaimDelete.en.resx | 0 .../Configuration/ClientClaimDelete.es.resx | 0 .../Configuration/ClientClaimDelete.fa.resx | 0 .../Configuration/ClientClaimDelete.fi.resx | 0 .../Configuration/ClientClaimDelete.fr.resx | 0 .../Configuration/ClientClaimDelete.pt.resx | 0 .../Configuration/ClientClaimDelete.ru.resx | 0 .../Configuration/ClientClaimDelete.sv.resx | 0 .../Configuration/ClientClaimDelete.zh.resx | 0 .../Views/Configuration/ClientClaims.da.resx | 0 .../Views/Configuration/ClientClaims.de.resx | 0 .../Views/Configuration/ClientClaims.en.resx | 0 .../Views/Configuration/ClientClaims.es.resx | 0 .../Views/Configuration/ClientClaims.fa.resx | 0 .../Views/Configuration/ClientClaims.fi.resx | 0 .../Views/Configuration/ClientClaims.fr.resx | 0 .../Views/Configuration/ClientClaims.pt.resx | 0 .../Views/Configuration/ClientClaims.ru.resx | 0 .../Views/Configuration/ClientClaims.sv.resx | 0 .../Views/Configuration/ClientClaims.zh.resx | 0 .../Views/Configuration/ClientClone.da.resx | 0 .../Views/Configuration/ClientClone.de.resx | 0 .../Views/Configuration/ClientClone.en.resx | 0 .../Views/Configuration/ClientClone.es.resx | 0 .../Views/Configuration/ClientClone.fa.resx | 0 .../Views/Configuration/ClientClone.fi.resx | 0 .../Views/Configuration/ClientClone.fr.resx | 0 .../Views/Configuration/ClientClone.pt.resx | 0 .../Views/Configuration/ClientClone.ru.resx | 0 .../Views/Configuration/ClientClone.sv.resx | 0 .../Views/Configuration/ClientClone.zh.resx | 0 .../Views/Configuration/ClientDelete.da.resx | 0 .../Views/Configuration/ClientDelete.de.resx | 0 .../Views/Configuration/ClientDelete.en.resx | 0 .../Views/Configuration/ClientDelete.es.resx | 0 .../Views/Configuration/ClientDelete.fa.resx | 0 .../Views/Configuration/ClientDelete.fi.resx | 0 .../Views/Configuration/ClientDelete.fr.resx | 0 .../Views/Configuration/ClientDelete.pt.resx | 0 .../Views/Configuration/ClientDelete.ru.resx | 0 .../Views/Configuration/ClientDelete.sv.resx | 0 .../Views/Configuration/ClientDelete.zh.resx | 0 .../Configuration/ClientProperties.da.resx | 0 .../Configuration/ClientProperties.de.resx | 0 .../Configuration/ClientProperties.en.resx | 0 .../Configuration/ClientProperties.es.resx | 0 .../Configuration/ClientProperties.fa.resx | 0 .../Configuration/ClientProperties.fi.resx | 0 .../Configuration/ClientProperties.fr.resx | 0 .../Configuration/ClientProperties.pt.resx | 0 .../Configuration/ClientProperties.ru.resx | 0 .../Configuration/ClientProperties.sv.resx | 0 .../Configuration/ClientProperties.zh.resx | 0 .../ClientPropertyDelete.da.resx | 0 .../ClientPropertyDelete.de.resx | 0 .../ClientPropertyDelete.en.resx | 0 .../ClientPropertyDelete.es.resx | 0 .../ClientPropertyDelete.fa.resx | 0 .../ClientPropertyDelete.fi.resx | 0 .../ClientPropertyDelete.fr.resx | 0 .../ClientPropertyDelete.pt.resx | 0 .../ClientPropertyDelete.ru.resx | 0 .../ClientPropertyDelete.sv.resx | 0 .../ClientPropertyDelete.zh.resx | 0 .../Configuration/ClientSecretDelete.da.resx | 0 .../Configuration/ClientSecretDelete.de.resx | 0 .../Configuration/ClientSecretDelete.en.resx | 0 .../Configuration/ClientSecretDelete.es.resx | 0 .../Configuration/ClientSecretDelete.fa.resx | 0 .../Configuration/ClientSecretDelete.fi.resx | 0 .../Configuration/ClientSecretDelete.fr.resx | 0 .../Configuration/ClientSecretDelete.pt.resx | 0 .../Configuration/ClientSecretDelete.ru.resx | 0 .../Configuration/ClientSecretDelete.sv.resx | 0 .../Configuration/ClientSecretDelete.zh.resx | 0 .../Views/Configuration/ClientSecrets.da.resx | 0 .../Views/Configuration/ClientSecrets.de.resx | 0 .../Views/Configuration/ClientSecrets.en.resx | 0 .../Views/Configuration/ClientSecrets.es.resx | 0 .../Views/Configuration/ClientSecrets.fa.resx | 0 .../Views/Configuration/ClientSecrets.fi.resx | 0 .../Views/Configuration/ClientSecrets.fr.resx | 0 .../Views/Configuration/ClientSecrets.pt.resx | 0 .../Views/Configuration/ClientSecrets.ru.resx | 0 .../Views/Configuration/ClientSecrets.sv.resx | 0 .../Views/Configuration/ClientSecrets.zh.resx | 0 .../Views/Configuration/Clients.da.resx | 0 .../Views/Configuration/Clients.de.resx | 0 .../Views/Configuration/Clients.en.resx | 0 .../Views/Configuration/Clients.es.resx | 0 .../Views/Configuration/Clients.fa.resx | 0 .../Views/Configuration/Clients.fi.resx | 0 .../Views/Configuration/Clients.fr.resx | 0 .../Views/Configuration/Clients.pt.resx | 0 .../Views/Configuration/Clients.ru.resx | 0 .../Views/Configuration/Clients.sv.resx | 0 .../Views/Configuration/Clients.zh.resx | 0 .../Configuration/IdentityResource.da.resx | 0 .../Configuration/IdentityResource.de.resx | 0 .../Configuration/IdentityResource.en.resx | 0 .../Configuration/IdentityResource.es.resx | 0 .../Configuration/IdentityResource.fa.resx | 0 .../Configuration/IdentityResource.fi.resx | 0 .../Configuration/IdentityResource.fr.resx | 0 .../Configuration/IdentityResource.pt.resx | 0 .../Configuration/IdentityResource.ru.resx | 0 .../Configuration/IdentityResource.sv.resx | 0 .../Configuration/IdentityResource.zh.resx | 0 .../IdentityResource/Section/Label.da.resx | 0 .../IdentityResource/Section/Label.de.resx | 0 .../IdentityResource/Section/Label.en.resx | 0 .../IdentityResource/Section/Label.es.resx | 0 .../IdentityResource/Section/Label.fa.resx | 0 .../IdentityResource/Section/Label.fi.resx | 0 .../IdentityResource/Section/Label.fr.resx | 0 .../IdentityResource/Section/Label.pt.resx | 0 .../IdentityResource/Section/Label.ru.resx | 0 .../IdentityResource/Section/Label.sv.resx | 0 .../IdentityResource/Section/Label.zh.resx | 0 .../IdentityResourceDelete.da.resx | 0 .../IdentityResourceDelete.de.resx | 0 .../IdentityResourceDelete.en.resx | 0 .../IdentityResourceDelete.es.resx | 0 .../IdentityResourceDelete.fa.resx | 0 .../IdentityResourceDelete.fi.resx | 0 .../IdentityResourceDelete.fr.resx | 0 .../IdentityResourceDelete.pt.resx | 0 .../IdentityResourceDelete.ru.resx | 0 .../IdentityResourceDelete.sv.resx | 0 .../IdentityResourceDelete.zh.resx | 0 .../IdentityResourceProperties.da.resx | 0 .../IdentityResourceProperties.de.resx | 0 .../IdentityResourceProperties.en.resx | 0 .../IdentityResourceProperties.es.resx | 0 .../IdentityResourceProperties.fa.resx | 0 .../IdentityResourceProperties.fi.resx | 0 .../IdentityResourceProperties.fr.resx | 0 .../IdentityResourceProperties.pt.resx | 0 .../IdentityResourceProperties.ru.resx | 0 .../IdentityResourceProperties.sv.resx | 0 .../IdentityResourceProperties.zh.resx | 0 .../IdentityResourcePropertyDelete.da.resx | 0 .../IdentityResourcePropertyDelete.de.resx | 0 .../IdentityResourcePropertyDelete.en.resx | 0 .../IdentityResourcePropertyDelete.es.resx | 0 .../IdentityResourcePropertyDelete.fa.resx | 0 .../IdentityResourcePropertyDelete.fi.resx | 0 .../IdentityResourcePropertyDelete.fr.resx | 0 .../IdentityResourcePropertyDelete.pt.resx | 0 .../IdentityResourcePropertyDelete.ru.resx | 0 .../IdentityResourcePropertyDelete.sv.resx | 0 .../IdentityResourcePropertyDelete.zh.resx | 0 .../Configuration/IdentityResources.da.resx | 0 .../Configuration/IdentityResources.de.resx | 0 .../Configuration/IdentityResources.en.resx | 0 .../Configuration/IdentityResources.es.resx | 0 .../Configuration/IdentityResources.fa.resx | 0 .../Configuration/IdentityResources.fi.resx | 0 .../Configuration/IdentityResources.fr.resx | 0 .../Configuration/IdentityResources.pt.resx | 0 .../Configuration/IdentityResources.ru.resx | 0 .../Configuration/IdentityResources.sv.resx | 0 .../Configuration/IdentityResources.zh.resx | 0 .../Views/Grant/PersistedGrant.da.resx | 0 .../Views/Grant/PersistedGrant.de.resx | 0 .../Views/Grant/PersistedGrant.en.resx | 0 .../Views/Grant/PersistedGrant.es.resx | 0 .../Views/Grant/PersistedGrant.fa.resx | 0 .../Views/Grant/PersistedGrant.fi.resx | 0 .../Views/Grant/PersistedGrant.fr.resx | 0 .../Views/Grant/PersistedGrant.pt.resx | 0 .../Views/Grant/PersistedGrant.ru.resx | 0 .../Views/Grant/PersistedGrant.sv.resx | 0 .../Views/Grant/PersistedGrant.zh.resx | 0 .../Views/Grant/PersistedGrantDelete.da.resx | 0 .../Views/Grant/PersistedGrantDelete.de.resx | 0 .../Views/Grant/PersistedGrantDelete.en.resx | 0 .../Views/Grant/PersistedGrantDelete.es.resx | 0 .../Views/Grant/PersistedGrantDelete.fa.resx | 0 .../Views/Grant/PersistedGrantDelete.fi.resx | 0 .../Views/Grant/PersistedGrantDelete.fr.resx | 0 .../Views/Grant/PersistedGrantDelete.pt.resx | 0 .../Views/Grant/PersistedGrantDelete.ru.resx | 0 .../Views/Grant/PersistedGrantDelete.sv.resx | 0 .../Views/Grant/PersistedGrantDelete.zh.resx | 0 .../Views/Grant/PersistedGrants.da.resx | 0 .../Views/Grant/PersistedGrants.de.resx | 0 .../Views/Grant/PersistedGrants.en.resx | 0 .../Views/Grant/PersistedGrants.es.resx | 0 .../Views/Grant/PersistedGrants.fa.resx | 0 .../Views/Grant/PersistedGrants.fi.resx | 0 .../Views/Grant/PersistedGrants.fr.resx | 0 .../Views/Grant/PersistedGrants.pt.resx | 0 .../Views/Grant/PersistedGrants.ru.resx | 0 .../Views/Grant/PersistedGrants.sv.resx | 0 .../Views/Grant/PersistedGrants.zh.resx | 0 .../Resources/Views/Home/Index.da.resx | 0 .../Resources/Views/Home/Index.de.resx | 0 .../Resources/Views/Home/Index.en.resx | 0 .../Resources/Views/Home/Index.es.resx | 0 .../Resources/Views/Home/Index.fa.resx | 0 .../Resources/Views/Home/Index.fi.resx | 0 .../Resources/Views/Home/Index.fr.resx | 0 .../Resources/Views/Home/Index.pt.resx | 0 .../Resources/Views/Home/Index.ru.resx | 0 .../Resources/Views/Home/Index.sv.resx | 0 .../Resources/Views/Home/Index.zh.resx | 0 .../Resources/Views/Identity/Role.da.resx | 0 .../Resources/Views/Identity/Role.de.resx | 0 .../Resources/Views/Identity/Role.en.resx | 0 .../Resources/Views/Identity/Role.es.resx | 0 .../Resources/Views/Identity/Role.fa.resx | 0 .../Resources/Views/Identity/Role.fi.resx | 0 .../Resources/Views/Identity/Role.fr.resx | 0 .../Resources/Views/Identity/Role.pt.resx | 0 .../Resources/Views/Identity/Role.ru.resx | 0 .../Resources/Views/Identity/Role.sv.resx | 0 .../Resources/Views/Identity/Role.zh.resx | 0 .../Views/Identity/Role/Section/Label.da.resx | 0 .../Views/Identity/Role/Section/Label.de.resx | 0 .../Views/Identity/Role/Section/Label.en.resx | 0 .../Views/Identity/Role/Section/Label.es.resx | 0 .../Views/Identity/Role/Section/Label.fa.resx | 0 .../Views/Identity/Role/Section/Label.fi.resx | 0 .../Views/Identity/Role/Section/Label.fr.resx | 0 .../Views/Identity/Role/Section/Label.pt.resx | 0 .../Views/Identity/Role/Section/Label.ru.resx | 0 .../Views/Identity/Role/Section/Label.sv.resx | 0 .../Views/Identity/Role/Section/Label.zh.resx | 0 .../Views/Identity/RoleClaims.da.resx | 0 .../Views/Identity/RoleClaims.de.resx | 0 .../Views/Identity/RoleClaims.en.resx | 0 .../Views/Identity/RoleClaims.es.resx | 0 .../Views/Identity/RoleClaims.fa.resx | 0 .../Views/Identity/RoleClaims.fi.resx | 0 .../Views/Identity/RoleClaims.fr.resx | 0 .../Views/Identity/RoleClaims.pt.resx | 0 .../Views/Identity/RoleClaims.ru.resx | 0 .../Views/Identity/RoleClaims.sv.resx | 0 .../Views/Identity/RoleClaims.zh.resx | 0 .../Views/Identity/RoleClaimsDelete.da.resx | 0 .../Views/Identity/RoleClaimsDelete.de.resx | 0 .../Views/Identity/RoleClaimsDelete.en.resx | 0 .../Views/Identity/RoleClaimsDelete.es.resx | 0 .../Views/Identity/RoleClaimsDelete.fa.resx | 0 .../Views/Identity/RoleClaimsDelete.fi.resx | 0 .../Views/Identity/RoleClaimsDelete.fr.resx | 0 .../Views/Identity/RoleClaimsDelete.pt.resx | 0 .../Views/Identity/RoleClaimsDelete.ru.resx | 0 .../Views/Identity/RoleClaimsDelete.sv.resx | 0 .../Views/Identity/RoleClaimsDelete.zh.resx | 0 .../Views/Identity/RoleDelete.da.resx | 0 .../Views/Identity/RoleDelete.de.resx | 0 .../Views/Identity/RoleDelete.en.resx | 0 .../Views/Identity/RoleDelete.es.resx | 0 .../Views/Identity/RoleDelete.fa.resx | 0 .../Views/Identity/RoleDelete.fi.resx | 0 .../Views/Identity/RoleDelete.fr.resx | 0 .../Views/Identity/RoleDelete.pt.resx | 0 .../Views/Identity/RoleDelete.ru.resx | 0 .../Views/Identity/RoleDelete.sv.resx | 0 .../Views/Identity/RoleDelete.zh.resx | 0 .../Views/Identity/RoleUsers.da.resx | 0 .../Views/Identity/RoleUsers.de.resx | 0 .../Views/Identity/RoleUsers.en.resx | 0 .../Views/Identity/RoleUsers.es.resx | 0 .../Views/Identity/RoleUsers.fa.resx | 0 .../Views/Identity/RoleUsers.fi.resx | 0 .../Views/Identity/RoleUsers.fr.resx | 0 .../Views/Identity/RoleUsers.pt.resx | 0 .../Views/Identity/RoleUsers.ru.resx | 0 .../Views/Identity/RoleUsers.sv.resx | 0 .../Views/Identity/RoleUsers.zh.resx | 0 .../Resources/Views/Identity/Roles.da.resx | 0 .../Resources/Views/Identity/Roles.de.resx | 0 .../Resources/Views/Identity/Roles.en.resx | 0 .../Resources/Views/Identity/Roles.es.resx | 0 .../Resources/Views/Identity/Roles.fa.resx | 0 .../Resources/Views/Identity/Roles.fi.resx | 0 .../Resources/Views/Identity/Roles.fr.resx | 0 .../Resources/Views/Identity/Roles.pt.resx | 0 .../Resources/Views/Identity/Roles.ru.resx | 0 .../Resources/Views/Identity/Roles.sv.resx | 0 .../Resources/Views/Identity/Roles.zh.resx | 0 .../Views/Identity/User/Section/Label.da.resx | 0 .../Views/Identity/User/Section/Label.de.resx | 0 .../Views/Identity/User/Section/Label.en.resx | 0 .../Views/Identity/User/Section/Label.es.resx | 0 .../Views/Identity/User/Section/Label.fa.resx | 0 .../Views/Identity/User/Section/Label.fi.resx | 0 .../Views/Identity/User/Section/Label.fr.resx | 0 .../Views/Identity/User/Section/Label.pt.resx | 0 .../Views/Identity/User/Section/Label.ru.resx | 0 .../Views/Identity/User/Section/Label.sv.resx | 0 .../Views/Identity/User/Section/Label.zh.resx | 0 .../Views/Identity/UserChangePassword.da.resx | 0 .../Views/Identity/UserChangePassword.de.resx | 0 .../Views/Identity/UserChangePassword.en.resx | 0 .../Views/Identity/UserChangePassword.es.resx | 0 .../Views/Identity/UserChangePassword.fa.resx | 0 .../Views/Identity/UserChangePassword.fi.resx | 0 .../Views/Identity/UserChangePassword.fr.resx | 0 .../Views/Identity/UserChangePassword.pt.resx | 0 .../Views/Identity/UserChangePassword.ru.resx | 0 .../Views/Identity/UserChangePassword.sv.resx | 0 .../Views/Identity/UserChangePassword.zh.resx | 0 .../Views/Identity/UserClaims.da.resx | 0 .../Views/Identity/UserClaims.de.resx | 0 .../Views/Identity/UserClaims.en.resx | 0 .../Views/Identity/UserClaims.es.resx | 0 .../Views/Identity/UserClaims.fa.resx | 0 .../Views/Identity/UserClaims.fi.resx | 0 .../Views/Identity/UserClaims.fr.resx | 0 .../Views/Identity/UserClaims.pt.resx | 0 .../Views/Identity/UserClaims.ru.resx | 0 .../Views/Identity/UserClaims.sv.resx | 0 .../Views/Identity/UserClaims.zh.resx | 0 .../Views/Identity/UserClaimsDelete.da.resx | 0 .../Views/Identity/UserClaimsDelete.de.resx | 0 .../Views/Identity/UserClaimsDelete.en.resx | 0 .../Views/Identity/UserClaimsDelete.es.resx | 0 .../Views/Identity/UserClaimsDelete.fa.resx | 0 .../Views/Identity/UserClaimsDelete.fi.resx | 0 .../Views/Identity/UserClaimsDelete.fr.resx | 0 .../Views/Identity/UserClaimsDelete.pt.resx | 0 .../Views/Identity/UserClaimsDelete.ru.resx | 0 .../Views/Identity/UserClaimsDelete.sv.resx | 0 .../Views/Identity/UserClaimsDelete.zh.resx | 0 .../Views/Identity/UserDelete.da.resx | 0 .../Views/Identity/UserDelete.de.resx | 0 .../Views/Identity/UserDelete.en.resx | 0 .../Views/Identity/UserDelete.es.resx | 0 .../Views/Identity/UserDelete.fa.resx | 0 .../Views/Identity/UserDelete.fi.resx | 0 .../Views/Identity/UserDelete.fr.resx | 0 .../Views/Identity/UserDelete.pt.resx | 0 .../Views/Identity/UserDelete.ru.resx | 0 .../Views/Identity/UserDelete.sv.resx | 0 .../Views/Identity/UserDelete.zh.resx | 0 .../Views/Identity/UserProfile.da.resx | 0 .../Views/Identity/UserProfile.de.resx | 0 .../Views/Identity/UserProfile.en.resx | 0 .../Views/Identity/UserProfile.es.resx | 0 .../Views/Identity/UserProfile.fa.resx | 0 .../Views/Identity/UserProfile.fi.resx | 0 .../Views/Identity/UserProfile.fr.resx | 0 .../Views/Identity/UserProfile.pt.resx | 0 .../Views/Identity/UserProfile.ru.resx | 0 .../Views/Identity/UserProfile.sv.resx | 0 .../Views/Identity/UserProfile.zh.resx | 0 .../Views/Identity/UserProviders.da.resx | 0 .../Views/Identity/UserProviders.de.resx | 0 .../Views/Identity/UserProviders.en.resx | 0 .../Views/Identity/UserProviders.es.resx | 0 .../Views/Identity/UserProviders.fa.resx | 0 .../Views/Identity/UserProviders.fi.resx | 0 .../Views/Identity/UserProviders.fr.resx | 0 .../Views/Identity/UserProviders.pt.resx | 0 .../Views/Identity/UserProviders.ru.resx | 0 .../Views/Identity/UserProviders.sv.resx | 0 .../Views/Identity/UserProviders.zh.resx | 0 .../Identity/UserProvidersDelete.da.resx | 0 .../Identity/UserProvidersDelete.de.resx | 0 .../Identity/UserProvidersDelete.en.resx | 0 .../Identity/UserProvidersDelete.es.resx | 0 .../Identity/UserProvidersDelete.fa.resx | 0 .../Identity/UserProvidersDelete.fi.resx | 0 .../Identity/UserProvidersDelete.fr.resx | 0 .../Identity/UserProvidersDelete.pt.resx | 0 .../Identity/UserProvidersDelete.ru.resx | 0 .../Identity/UserProvidersDelete.sv.resx | 0 .../Identity/UserProvidersDelete.zh.resx | 0 .../Views/Identity/UserRoles.da.resx | 0 .../Views/Identity/UserRoles.de.resx | 0 .../Views/Identity/UserRoles.en.resx | 0 .../Views/Identity/UserRoles.es.resx | 0 .../Views/Identity/UserRoles.fa.resx | 0 .../Views/Identity/UserRoles.fi.resx | 0 .../Views/Identity/UserRoles.fr.resx | 0 .../Views/Identity/UserRoles.pt.resx | 0 .../Views/Identity/UserRoles.ru.resx | 0 .../Views/Identity/UserRoles.sv.resx | 0 .../Views/Identity/UserRoles.zh.resx | 0 .../Views/Identity/UserRolesDelete.da.resx | 0 .../Views/Identity/UserRolesDelete.de.resx | 0 .../Views/Identity/UserRolesDelete.en.resx | 0 .../Views/Identity/UserRolesDelete.es.resx | 0 .../Views/Identity/UserRolesDelete.fa.resx | 0 .../Views/Identity/UserRolesDelete.fi.resx | 0 .../Views/Identity/UserRolesDelete.fr.resx | 0 .../Views/Identity/UserRolesDelete.pt.resx | 0 .../Views/Identity/UserRolesDelete.ru.resx | 0 .../Views/Identity/UserRolesDelete.sv.resx | 0 .../Views/Identity/UserRolesDelete.zh.resx | 0 .../Resources/Views/Identity/Users.da.resx | 0 .../Resources/Views/Identity/Users.de.resx | 0 .../Resources/Views/Identity/Users.en.resx | 0 .../Resources/Views/Identity/Users.es.resx | 0 .../Resources/Views/Identity/Users.fa.resx | 0 .../Resources/Views/Identity/Users.fi.resx | 0 .../Resources/Views/Identity/Users.fr.resx | 0 .../Resources/Views/Identity/Users.pt.resx | 0 .../Resources/Views/Identity/Users.ru.resx | 0 .../Resources/Views/Identity/Users.sv.resx | 0 .../Resources/Views/Identity/Users.zh.resx | 0 .../Resources/Views/Log/AuditLog.de.resx | 0 .../Resources/Views/Log/AuditLog.en.resx | 0 .../Resources/Views/Log/AuditLog.fi.resx | 0 .../Resources/Views/Log/AuditLog.pt.resx | 0 .../Resources/Views/Log/ErrorsLog.da.resx | 0 .../Resources/Views/Log/ErrorsLog.de.resx | 0 .../Resources/Views/Log/ErrorsLog.en.resx | 0 .../Resources/Views/Log/ErrorsLog.es.resx | 0 .../Resources/Views/Log/ErrorsLog.fa.resx | 0 .../Resources/Views/Log/ErrorsLog.fi.resx | 0 .../Resources/Views/Log/ErrorsLog.fr.resx | 0 .../Resources/Views/Log/ErrorsLog.pt.resx | 0 .../Resources/Views/Log/ErrorsLog.ru.resx | 0 .../Resources/Views/Log/ErrorsLog.sv.resx | 0 .../Resources/Views/Log/ErrorsLog.zh.resx | 0 .../Views/Shared/Common/ErrorPage.da.resx | 0 .../Views/Shared/Common/ErrorPage.de.resx | 0 .../Views/Shared/Common/ErrorPage.en.resx | 0 .../Views/Shared/Common/ErrorPage.es.resx | 0 .../Views/Shared/Common/ErrorPage.fa.resx | 0 .../Views/Shared/Common/ErrorPage.fi.resx | 0 .../Views/Shared/Common/ErrorPage.fr.resx | 0 .../Views/Shared/Common/ErrorPage.pt.resx | 0 .../Views/Shared/Common/ErrorPage.ru.resx | 0 .../Views/Shared/Common/ErrorPage.sv.resx | 0 .../Views/Shared/Common/ErrorPage.zh.resx | 0 .../Views/Shared/Common/Pager.da.resx | 0 .../Views/Shared/Common/Pager.de.resx | 0 .../Views/Shared/Common/Pager.en.resx | 0 .../Views/Shared/Common/Pager.es.resx | 0 .../Views/Shared/Common/Pager.fa.resx | 0 .../Views/Shared/Common/Pager.fi.resx | 0 .../Views/Shared/Common/Pager.fr.resx | 0 .../Views/Shared/Common/Pager.pt.resx | 0 .../Views/Shared/Common/Pager.ru.resx | 0 .../Views/Shared/Common/Pager.sv.resx | 0 .../Views/Shared/Common/Pager.zh.resx | 0 .../Views/Shared/Common/PagerDynamic.de.resx | 0 .../Views/Shared/Common/PagerDynamic.en.resx | 0 .../Views/Shared/Common/PagerDynamic.es.resx | 0 .../Views/Shared/Common/PagerDynamic.fa.resx | 0 .../Views/Shared/Common/PagerDynamic.fi.resx | 0 .../Views/Shared/Common/PagerDynamic.fr.resx | 0 .../Views/Shared/Common/PagerDynamic.pt.resx | 0 .../Views/Shared/Common/PagerDynamic.ru.resx | 0 .../Views/Shared/Common/PagerDynamic.sv.resx | 0 .../Views/Shared/Common/Search.da.resx | 0 .../Views/Shared/Common/Search.de.resx | 0 .../Views/Shared/Common/Search.en.resx | 0 .../Views/Shared/Common/Search.es.resx | 0 .../Views/Shared/Common/Search.fa.resx | 0 .../Views/Shared/Common/Search.fi.resx | 0 .../Views/Shared/Common/Search.fr.resx | 0 .../Views/Shared/Common/Search.pt.resx | 0 .../Views/Shared/Common/Search.ru.resx | 0 .../Views/Shared/Common/Search.sv.resx | 0 .../Views/Shared/Common/Search.zh.resx | 0 .../Shared/Common/SelectLanguage.da.resx | 0 .../Shared/Common/SelectLanguage.de.resx | 0 .../Shared/Common/SelectLanguage.en.resx | 0 .../Shared/Common/SelectLanguage.es.resx | 0 .../Shared/Common/SelectLanguage.fa.resx | 0 .../Shared/Common/SelectLanguage.fi.resx | 0 .../Shared/Common/SelectLanguage.fr.resx | 0 .../Shared/Common/SelectLanguage.pt.resx | 0 .../Shared/Common/SelectLanguage.ru.resx | 0 .../Shared/Common/SelectLanguage.sv.resx | 0 .../Shared/Common/SelectLanguage.zh.resx | 0 .../IdentityServerLink/Default.da.resx | 0 .../IdentityServerLink/Default.de.resx | 0 .../IdentityServerLink/Default.en.resx | 0 .../IdentityServerLink/Default.es.resx | 0 .../IdentityServerLink/Default.fa.resx | 0 .../IdentityServerLink/Default.fi.resx | 0 .../IdentityServerLink/Default.fr.resx | 0 .../IdentityServerLink/Default.pt.resx | 0 .../IdentityServerLink/Default.ru.resx | 0 .../IdentityServerLink/Default.sv.resx | 0 .../IdentityServerLink/Default.zh.resx | 0 .../Resources/Views/Shared/_Layout.da.resx | 0 .../Resources/Views/Shared/_Layout.de.resx | 0 .../Resources/Views/Shared/_Layout.en.resx | 0 .../Resources/Views/Shared/_Layout.es.resx | 0 .../Resources/Views/Shared/_Layout.fa.resx | 0 .../Resources/Views/Shared/_Layout.fi.resx | 0 .../Resources/Views/Shared/_Layout.fr.resx | 0 .../Resources/Views/Shared/_Layout.pt.resx | 0 .../Resources/Views/Shared/_Layout.ru.resx | 0 .../Resources/Views/Shared/_Layout.sv.resx | 0 .../Resources/Views/Shared/_Layout.zh.resx | 0 .../Skoruba.IdentityServer4.Admin.UI.csproj | 155 ++++++++++++++++++ .../Views/Account/AccessDenied.cshtml | 0 .../Views/Configuration/ApiResource.cshtml | 0 .../ApiResource/Section/Label.cshtml | 0 .../Configuration/ApiResourceDelete.cshtml | 0 .../ApiResourceProperties.cshtml | 0 .../ApiResourcePropertyDelete.cshtml | 0 .../Views/Configuration/ApiResources.cshtml | 0 .../Views/Configuration/ApiScopeDelete.cshtml | 0 .../Views/Configuration/ApiScopes.cshtml | 0 .../Configuration/ApiSecretDelete.cshtml | 0 .../Views/Configuration/ApiSecrets.cshtml | 0 .../Views/Configuration/Client.cshtml | 0 .../Client/Section/ActionButtons.cshtml | 0 .../Client/Section/Authentication.cshtml | 0 .../Client/Section/Basics.cshtml | 0 .../Client/Section/Consent.cshtml | 0 .../Client/Section/DeviceFlow.cshtml | 0 .../Configuration/Client/Section/Label.cshtml | 0 .../Configuration/Client/Section/Name.cshtml | 0 .../Configuration/Client/Section/Token.cshtml | 0 .../Configuration/Client/Settings.cshtml | 0 .../Configuration/ClientClaimDelete.cshtml | 0 .../Views/Configuration/ClientClaims.cshtml | 0 .../Views/Configuration/ClientClone.cshtml | 0 .../Views/Configuration/ClientDelete.cshtml | 0 .../Configuration/ClientProperties.cshtml | 0 .../Configuration/ClientPropertyDelete.cshtml | 0 .../Configuration/ClientSecretDelete.cshtml | 0 .../Views/Configuration/ClientSecrets.cshtml | 0 .../Views/Configuration/Clients.cshtml | 0 .../Configuration/IdentityResource.cshtml | 0 .../IdentityResource/Section/Label.cshtml | 0 .../IdentityResourceDelete.cshtml | 0 .../IdentityResourceProperties.cshtml | 0 .../IdentityResourcePropertyDelete.cshtml | 0 .../Configuration/IdentityResources.cshtml | 0 .../Views/Grant/PersistedGrant.cshtml | 0 .../Views/Grant/PersistedGrantDelete.cshtml | 0 .../Views/Grant/PersistedGrants.cshtml | 0 .../Views/Home/Error.cshtml | 0 .../Views/Home/Index.cshtml | 0 .../Views/Identity/Role.cshtml | 0 .../Views/Identity/Role/Section/Label.cshtml | 0 .../Views/Identity/RoleClaims.cshtml | 0 .../Views/Identity/RoleClaimsDelete.cshtml | 0 .../Views/Identity/RoleDelete.cshtml | 0 .../Views/Identity/RoleUsers.cshtml | 0 .../Views/Identity/Roles.cshtml | 0 .../Views/Identity/User/Section/Label.cshtml | 0 .../Views/Identity/UserChangePassword.cshtml | 0 .../Views/Identity/UserClaims.cshtml | 0 .../Views/Identity/UserClaimsDelete.cshtml | 0 .../Views/Identity/UserDelete.cshtml | 0 .../Views/Identity/UserProfile.cshtml | 0 .../Views/Identity/UserProviders.cshtml | 0 .../Views/Identity/UserProvidersDelete.cshtml | 0 .../Views/Identity/UserRoles.cshtml | 0 .../Views/Identity/UserRolesDelete.cshtml | 0 .../Views/Identity/Users.cshtml | 0 .../Views/Log/AuditLog.cshtml | 0 .../Views/Log/ErrorsLog.cshtml | 0 .../Shared/Common/ApplicationVersion.cshtml | 0 .../Views/Shared/Common/ErrorPage.cshtml | 0 .../Views/Shared/Common/Notification.cshtml | 0 .../Views/Shared/Common/Pager.cshtml | 0 .../Views/Shared/Common/PagerDynamic.cshtml | 0 .../Views/Shared/Common/Search.cshtml | 0 .../Views/Shared/Common/SelectLanguage.cshtml | 0 .../IdentityServerLink/Default.cshtml | 0 .../Views/Shared/Error.cshtml | 0 .../Views/Shared/_Layout.cshtml | 0 .../Views/_ViewImports.cshtml | 0 .../Views/_ViewStart.cshtml | 0 .../wwwroot/dist/css/bundle.min.css | 0 .../css/themes/cerulean/bootstrap.min.css | 0 .../dist/css/themes/cosmo/bootstrap.min.css | 0 .../dist/css/themes/cyborg/bootstrap.min.css | 0 .../dist/css/themes/darkly/bootstrap.min.css | 0 .../dist/css/themes/flatly/bootstrap.min.css | 0 .../dist/css/themes/journal/bootstrap.min.css | 0 .../dist/css/themes/litera/bootstrap.min.css | 0 .../dist/css/themes/lumen/bootstrap.min.css | 0 .../dist/css/themes/lux/bootstrap.min.css | 0 .../dist/css/themes/materia/bootstrap.min.css | 0 .../dist/css/themes/minty/bootstrap.min.css | 0 .../dist/css/themes/pulse/bootstrap.min.css | 0 .../css/themes/sandstone/bootstrap.min.css | 0 .../dist/css/themes/simplex/bootstrap.min.css | 0 .../dist/css/themes/sketchy/bootstrap.min.css | 0 .../dist/css/themes/slate/bootstrap.min.css | 0 .../dist/css/themes/solar/bootstrap.min.css | 0 .../css/themes/spacelab/bootstrap.min.css | 0 .../css/themes/superhero/bootstrap.min.css | 0 .../dist/css/themes/united/bootstrap.min.css | 0 .../dist/css/themes/yeti/bootstrap.min.css | 0 .../wwwroot/dist/css/web.css | 0 .../wwwroot/dist/css/web.min.css | 0 .../wwwroot/dist/fonts/FontAwesome.otf | Bin .../dist/fonts/fontawesome-webfont.eot | Bin .../dist/fonts/fontawesome-webfont.svg | 0 .../dist/fonts/fontawesome-webfont.ttf | Bin .../dist/fonts/fontawesome-webfont.woff | Bin .../dist/fonts/fontawesome-webfont.woff2 | Bin .../wwwroot/dist/fonts/open-iconic.eot | Bin .../wwwroot/dist/fonts/open-iconic.otf | Bin .../wwwroot/dist/fonts/open-iconic.svg | 0 .../wwwroot/dist/fonts/open-iconic.ttf | Bin .../wwwroot/dist/fonts/open-iconic.woff | Bin .../wwwroot/dist/js/bundle.min.js | 0 .../wwwroot/favicon.ico | Bin .../wwwroot/images/icons/device-client.png | Bin .../wwwroot/images/icons/empty-client.png | Bin .../wwwroot/images/icons/native-client.png | Bin .../wwwroot/images/icons/server-client.png | Bin .../wwwroot/images/icons/spa-client.png | Bin .../wwwroot/images/icons/web-client.png | Bin .../wwwroot/images/loading.gif | Bin .../Properties/launchSettings.json | 47 +++--- .../Skoruba.IdentityServer4.Admin.csproj | 69 -------- 951 files changed, 214 insertions(+), 120 deletions(-) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Configuration/Constants/AuthenticationConsts.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Configuration/Constants/AuthorizationConsts.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Controllers/AccountController.cs (96%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Controllers/BaseController.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Controllers/ConfigurationController.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Controllers/GrantController.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Controllers/HomeController.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Controllers/IdentityController.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Controllers/LogController.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/ExceptionHandling/ControllerExceptionFilterAttribute.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Helpers/Localization/GenericServiceLocalizer.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Helpers/Localization/IGenericControllerLocalizer.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Helpers/MD5HashHelper.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Helpers/NotificationHelpers.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Helpers/PagerHelpers.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Helpers/TagHelpers/GravatarTagHelper.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Helpers/TagHelpers/PickerTagHelper.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Helpers/TagHelpers/SwitchTagHelper.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Helpers/UrlHelpers.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/ConfigurationController.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/ConfigurationController.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/ConfigurationController.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/ConfigurationController.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/ConfigurationController.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/ConfigurationController.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/ConfigurationController.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/ConfigurationController.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/ConfigurationController.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/ConfigurationController.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/ConfigurationController.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/GrantController.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/GrantController.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/GrantController.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/GrantController.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/GrantController.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/GrantController.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/GrantController.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/GrantController.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/GrantController.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/GrantController.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/GrantController.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/IdentityController.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/IdentityController.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/IdentityController.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/IdentityController.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/IdentityController.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/IdentityController.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/IdentityController.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/IdentityController.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/IdentityController.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/IdentityController.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Controllers/IdentityController.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Helpers/Identity/IdentityErrorMessages.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Helpers/Identity/IdentityErrorMessages.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ApiResourceService.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ApiResourceService.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ApiResourceService.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ApiResourceService.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ApiResourceService.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ApiResourceService.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ApiResourceService.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ApiResourceService.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ApiResourceService.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ApiResourceService.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ApiResourceService.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ClientService.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ClientService.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ClientService.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ClientService.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ClientService.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ClientService.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ClientService.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ClientService.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ClientService.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ClientService.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/ClientService.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityResourceService.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityResourceService.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityResourceService.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityResourceService.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityResourceService.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityResourceService.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityResourceService.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityResourceService.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityResourceService.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityResourceService.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityResourceService.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityService.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityService.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityService.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityService.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityService.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityService.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityService.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityService.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityService.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityService.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/IdentityService.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/PersistedGrantService.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/PersistedGrantService.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/PersistedGrantService.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/PersistedGrantService.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/PersistedGrantService.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/PersistedGrantService.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/PersistedGrantService.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/PersistedGrantService.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/PersistedGrantService.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/PersistedGrantService.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Services/PersistedGrantService.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Account/AccessDenied.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Account/AccessDenied.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Account/AccessDenied.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Account/AccessDenied.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Account/AccessDenied.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Account/AccessDenied.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Account/AccessDenied.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Account/AccessDenied.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Account/AccessDenied.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Account/AccessDenied.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Account/AccessDenied.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource/Section/Label.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource/Section/Label.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource/Section/Label.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource/Section/Label.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource/Section/Label.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource/Section/Label.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource/Section/Label.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource/Section/Label.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource/Section/Label.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResource/Section/Label.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceDelete.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceDelete.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceDelete.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceDelete.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceDelete.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceDelete.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceDelete.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceDelete.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceDelete.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceDelete.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceDelete.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceProperties.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceProperties.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceProperties.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceProperties.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceProperties.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceProperties.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceProperties.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceProperties.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceProperties.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceProperties.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourceProperties.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourcePropertyDelete.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourcePropertyDelete.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourcePropertyDelete.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourcePropertyDelete.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourcePropertyDelete.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourcePropertyDelete.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourcePropertyDelete.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourcePropertyDelete.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourcePropertyDelete.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourcePropertyDelete.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResourcePropertyDelete.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResources.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResources.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResources.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResources.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResources.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResources.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResources.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResources.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResources.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResources.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiResources.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopeDelete.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopeDelete.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopeDelete.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopeDelete.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopeDelete.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopeDelete.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopeDelete.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopeDelete.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopeDelete.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopeDelete.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopeDelete.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopes.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopes.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopes.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopes.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopes.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopes.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopes.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopes.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopes.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopes.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiScopes.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecretDelete.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecretDelete.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecretDelete.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecretDelete.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecretDelete.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecretDelete.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecretDelete.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecretDelete.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecretDelete.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecretDelete.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecretDelete.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecrets.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecrets.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecrets.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecrets.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecrets.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecrets.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecrets.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecrets.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecrets.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecrets.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ApiSecrets.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/ActionButtons.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/ActionButtons.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/ActionButtons.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/ActionButtons.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/ActionButtons.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/ActionButtons.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/ActionButtons.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/ActionButtons.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/ActionButtons.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/ActionButtons.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/ActionButtons.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Authentication.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Authentication.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Authentication.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Authentication.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Authentication.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Authentication.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Authentication.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Authentication.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Authentication.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Authentication.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Authentication.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Basics.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Basics.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Basics.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Basics.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Basics.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Basics.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Basics.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Basics.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Basics.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Basics.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Basics.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Consent.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Consent.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Consent.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Consent.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Consent.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Consent.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Consent.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Consent.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Consent.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Consent.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/DeviceFlow.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/DeviceFlow.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/DeviceFlow.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/DeviceFlow.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/DeviceFlow.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/DeviceFlow.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/DeviceFlow.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/DeviceFlow.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Label.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Label.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Label.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Label.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Label.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Label.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Label.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Label.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Label.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Label.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Name.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Name.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Name.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Name.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Name.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Name.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Name.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Name.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Name.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Name.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Token.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Token.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Token.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Token.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Token.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Token.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Token.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Token.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Token.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Section/Token.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Settings.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Settings.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Settings.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Settings.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Settings.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Settings.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Settings.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Settings.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Settings.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Settings.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Client/Settings.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaimDelete.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaimDelete.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaimDelete.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaimDelete.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaimDelete.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaimDelete.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaimDelete.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaimDelete.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaimDelete.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaimDelete.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaimDelete.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaims.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaims.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaims.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaims.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaims.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaims.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaims.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaims.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaims.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaims.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClaims.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClone.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClone.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClone.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClone.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClone.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClone.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClone.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClone.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClone.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClone.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientClone.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientDelete.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientDelete.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientDelete.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientDelete.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientDelete.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientDelete.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientDelete.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientDelete.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientDelete.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientDelete.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientDelete.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientProperties.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientProperties.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientProperties.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientProperties.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientProperties.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientProperties.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientProperties.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientProperties.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientProperties.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientProperties.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientProperties.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientPropertyDelete.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientPropertyDelete.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientPropertyDelete.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientPropertyDelete.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientPropertyDelete.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientPropertyDelete.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientPropertyDelete.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientPropertyDelete.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientPropertyDelete.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientPropertyDelete.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientPropertyDelete.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecretDelete.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecretDelete.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecretDelete.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecretDelete.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecretDelete.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecretDelete.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecretDelete.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecretDelete.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecretDelete.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecretDelete.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecretDelete.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecrets.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecrets.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecrets.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecrets.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecrets.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecrets.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecrets.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecrets.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecrets.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecrets.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/ClientSecrets.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Clients.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Clients.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Clients.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Clients.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Clients.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Clients.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Clients.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Clients.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Clients.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Clients.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/Clients.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource/Section/Label.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource/Section/Label.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource/Section/Label.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource/Section/Label.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource/Section/Label.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource/Section/Label.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource/Section/Label.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource/Section/Label.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource/Section/Label.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource/Section/Label.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResource/Section/Label.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceDelete.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceDelete.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceDelete.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceDelete.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceDelete.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceDelete.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceDelete.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceDelete.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceDelete.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceDelete.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceDelete.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceProperties.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceProperties.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceProperties.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceProperties.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceProperties.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceProperties.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceProperties.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceProperties.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceProperties.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceProperties.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourceProperties.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourcePropertyDelete.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourcePropertyDelete.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourcePropertyDelete.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourcePropertyDelete.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourcePropertyDelete.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourcePropertyDelete.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourcePropertyDelete.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourcePropertyDelete.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourcePropertyDelete.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourcePropertyDelete.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResourcePropertyDelete.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResources.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResources.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResources.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResources.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResources.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResources.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResources.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResources.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResources.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResources.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Configuration/IdentityResources.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrant.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrant.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrant.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrant.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrant.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrant.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrant.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrant.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrant.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrant.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrant.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrantDelete.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrantDelete.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrantDelete.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrantDelete.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrantDelete.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrantDelete.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrantDelete.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrantDelete.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrantDelete.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrantDelete.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrantDelete.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrants.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrants.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrants.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrants.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrants.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrants.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrants.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrants.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrants.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrants.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Grant/PersistedGrants.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Home/Index.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Home/Index.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Home/Index.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Home/Index.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Home/Index.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Home/Index.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Home/Index.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Home/Index.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Home/Index.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Home/Index.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Home/Index.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role/Section/Label.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role/Section/Label.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role/Section/Label.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role/Section/Label.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role/Section/Label.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role/Section/Label.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role/Section/Label.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role/Section/Label.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role/Section/Label.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role/Section/Label.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Role/Section/Label.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaims.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaims.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaims.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaims.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaims.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaims.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaims.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaims.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaims.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaims.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaims.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaimsDelete.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaimsDelete.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaimsDelete.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaimsDelete.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaimsDelete.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaimsDelete.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaimsDelete.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaimsDelete.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaimsDelete.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaimsDelete.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleClaimsDelete.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleDelete.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleDelete.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleDelete.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleDelete.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleDelete.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleDelete.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleDelete.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleDelete.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleDelete.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleDelete.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleDelete.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleUsers.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleUsers.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleUsers.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleUsers.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleUsers.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleUsers.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleUsers.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleUsers.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleUsers.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleUsers.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/RoleUsers.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Roles.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Roles.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Roles.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Roles.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Roles.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Roles.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Roles.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Roles.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Roles.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Roles.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Roles.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/User/Section/Label.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/User/Section/Label.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/User/Section/Label.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/User/Section/Label.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/User/Section/Label.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/User/Section/Label.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/User/Section/Label.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/User/Section/Label.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/User/Section/Label.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/User/Section/Label.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/User/Section/Label.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserChangePassword.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserChangePassword.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserChangePassword.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserChangePassword.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserChangePassword.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserChangePassword.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserChangePassword.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserChangePassword.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserChangePassword.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserChangePassword.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserChangePassword.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaims.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaims.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaims.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaims.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaims.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaims.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaims.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaims.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaims.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaims.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaims.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaimsDelete.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaimsDelete.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaimsDelete.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaimsDelete.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaimsDelete.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaimsDelete.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaimsDelete.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaimsDelete.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaimsDelete.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaimsDelete.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserClaimsDelete.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserDelete.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserDelete.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserDelete.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserDelete.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserDelete.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserDelete.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserDelete.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserDelete.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserDelete.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserDelete.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserDelete.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProfile.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProfile.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProfile.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProfile.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProfile.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProfile.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProfile.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProfile.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProfile.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProfile.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProfile.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProviders.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProviders.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProviders.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProviders.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProviders.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProviders.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProviders.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProviders.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProviders.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProviders.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProviders.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProvidersDelete.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProvidersDelete.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProvidersDelete.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProvidersDelete.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProvidersDelete.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProvidersDelete.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProvidersDelete.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProvidersDelete.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProvidersDelete.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProvidersDelete.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserProvidersDelete.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRoles.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRoles.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRoles.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRoles.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRoles.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRoles.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRoles.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRoles.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRoles.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRoles.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRoles.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRolesDelete.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRolesDelete.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRolesDelete.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRolesDelete.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRolesDelete.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRolesDelete.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRolesDelete.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRolesDelete.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRolesDelete.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRolesDelete.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/UserRolesDelete.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Users.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Users.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Users.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Users.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Users.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Users.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Users.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Users.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Users.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Users.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Identity/Users.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Log/AuditLog.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Log/AuditLog.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Log/AuditLog.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Log/AuditLog.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Log/ErrorsLog.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Log/ErrorsLog.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Log/ErrorsLog.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Log/ErrorsLog.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Log/ErrorsLog.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Log/ErrorsLog.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Log/ErrorsLog.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Log/ErrorsLog.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Log/ErrorsLog.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Log/ErrorsLog.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Log/ErrorsLog.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/ErrorPage.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/ErrorPage.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/ErrorPage.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/ErrorPage.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/ErrorPage.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/ErrorPage.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/ErrorPage.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/ErrorPage.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/ErrorPage.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/ErrorPage.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/ErrorPage.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Pager.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Pager.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Pager.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Pager.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Pager.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Pager.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Pager.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Pager.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Pager.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Pager.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Pager.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/PagerDynamic.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/PagerDynamic.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/PagerDynamic.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/PagerDynamic.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/PagerDynamic.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/PagerDynamic.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/PagerDynamic.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/PagerDynamic.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/PagerDynamic.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Search.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Search.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Search.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Search.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Search.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Search.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Search.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Search.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Search.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Search.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/Search.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/SelectLanguage.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/SelectLanguage.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/SelectLanguage.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/SelectLanguage.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/SelectLanguage.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/SelectLanguage.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/SelectLanguage.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/SelectLanguage.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/SelectLanguage.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/SelectLanguage.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Common/SelectLanguage.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Components/IdentityServerLink/Default.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Components/IdentityServerLink/Default.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Components/IdentityServerLink/Default.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Components/IdentityServerLink/Default.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Components/IdentityServerLink/Default.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Components/IdentityServerLink/Default.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Components/IdentityServerLink/Default.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Components/IdentityServerLink/Default.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Components/IdentityServerLink/Default.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Components/IdentityServerLink/Default.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/Components/IdentityServerLink/Default.zh.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/_Layout.da.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/_Layout.de.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/_Layout.en.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/_Layout.es.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/_Layout.fa.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/_Layout.fi.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/_Layout.fr.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/_Layout.pt.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/_Layout.ru.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/_Layout.sv.resx (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Resources/Views/Shared/_Layout.zh.resx (100%) create mode 100644 src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Account/AccessDenied.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ApiResource.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ApiResource/Section/Label.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ApiResourceDelete.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ApiResourceProperties.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ApiResourcePropertyDelete.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ApiResources.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ApiScopeDelete.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ApiScopes.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ApiSecretDelete.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ApiSecrets.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/Client.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/Client/Section/ActionButtons.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/Client/Section/Authentication.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/Client/Section/Basics.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/Client/Section/Consent.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/Client/Section/DeviceFlow.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/Client/Section/Label.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/Client/Section/Name.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/Client/Section/Token.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/Client/Settings.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ClientClaimDelete.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ClientClaims.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ClientClone.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ClientDelete.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ClientProperties.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ClientPropertyDelete.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ClientSecretDelete.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/ClientSecrets.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/Clients.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/IdentityResource.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/IdentityResource/Section/Label.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/IdentityResourceDelete.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/IdentityResourceProperties.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/IdentityResourcePropertyDelete.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Configuration/IdentityResources.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Grant/PersistedGrant.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Grant/PersistedGrantDelete.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Grant/PersistedGrants.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Home/Error.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Home/Index.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/Role.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/Role/Section/Label.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/RoleClaims.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/RoleClaimsDelete.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/RoleDelete.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/RoleUsers.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/Roles.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/User/Section/Label.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/UserChangePassword.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/UserClaims.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/UserClaimsDelete.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/UserDelete.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/UserProfile.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/UserProviders.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/UserProvidersDelete.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/UserRoles.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/UserRolesDelete.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Identity/Users.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Log/AuditLog.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Log/ErrorsLog.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Shared/Common/ApplicationVersion.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Shared/Common/ErrorPage.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Shared/Common/Notification.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Shared/Common/Pager.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Shared/Common/PagerDynamic.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Shared/Common/Search.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Shared/Common/SelectLanguage.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Shared/Components/IdentityServerLink/Default.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Shared/Error.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/Shared/_Layout.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/_ViewImports.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Views/_ViewStart.cshtml (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/bundle.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/cerulean/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/cosmo/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/cyborg/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/darkly/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/flatly/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/journal/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/litera/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/lumen/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/lux/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/materia/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/minty/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/pulse/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/sandstone/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/simplex/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/sketchy/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/slate/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/solar/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/spacelab/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/superhero/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/united/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/themes/yeti/bootstrap.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/web.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/css/web.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/fonts/FontAwesome.otf (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/fonts/fontawesome-webfont.eot (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/fonts/fontawesome-webfont.svg (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/fonts/fontawesome-webfont.ttf (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/fonts/fontawesome-webfont.woff (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/fonts/fontawesome-webfont.woff2 (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/fonts/open-iconic.eot (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/fonts/open-iconic.otf (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/fonts/open-iconic.svg (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/fonts/open-iconic.ttf (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/fonts/open-iconic.woff (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/dist/js/bundle.min.js (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/favicon.ico (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/images/icons/device-client.png (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/images/icons/empty-client.png (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/images/icons/native-client.png (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/images/icons/server-client.png (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/images/icons/spa-client.png (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/images/icons/web-client.png (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/wwwroot/images/loading.gif (100%) diff --git a/.gitignore b/.gitignore index 356b77737..883eb3621 100644 --- a/.gitignore +++ b/.gitignore @@ -275,9 +275,9 @@ __pycache__/ /src/Skoruba.IdentityServer4.Admin/Data/Migrations/ # Don't ignore these log folders -!/src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ +!/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ !/src/Skoruba.IdentityServer4.Admin.BusinessLogic/Dtos/Log/ -!/src/Skoruba.IdentityServer4.Admin/Views/Log/ +!/src/Skoruba.IdentityServer4.Admin.UI/Views/Log/ !/src/Skoruba.IdentityServer4.Admin.BusinessLogic/Events/Log/ /src/Skoruba.IdentityServer4.Admin.Api/appsettings.Production.json diff --git a/Skoruba.IdentityServer4.Admin.sln b/Skoruba.IdentityServer4.Admin.sln index 79c9385a0..41b86ea8d 100644 --- a/Skoruba.IdentityServer4.Admin.sln +++ b/Skoruba.IdentityServer4.Admin.sln @@ -51,6 +51,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Skoruba.IdentityServer4.Adm EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Skoruba.IdentityServer4.Shared", "src\Skoruba.IdentityServer4.Shared\Skoruba.IdentityServer4.Shared.csproj", "{61B285F0-EE06-4AEE-AAF3-71492CBD11C5}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Skoruba.IdentityServer4.Admin.UI", "src\Skoruba.IdentityServer4.Admin.UI\Skoruba.IdentityServer4.Admin.UI.csproj", "{6DD24C2C-0FB5-4C37-8B42-5DACA0FDE4EC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -133,6 +135,10 @@ Global {61B285F0-EE06-4AEE-AAF3-71492CBD11C5}.Debug|Any CPU.Build.0 = Debug|Any CPU {61B285F0-EE06-4AEE-AAF3-71492CBD11C5}.Release|Any CPU.ActiveCfg = Release|Any CPU {61B285F0-EE06-4AEE-AAF3-71492CBD11C5}.Release|Any CPU.Build.0 = Release|Any CPU + {6DD24C2C-0FB5-4C37-8B42-5DACA0FDE4EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6DD24C2C-0FB5-4C37-8B42-5DACA0FDE4EC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6DD24C2C-0FB5-4C37-8B42-5DACA0FDE4EC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6DD24C2C-0FB5-4C37-8B42-5DACA0FDE4EC}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -156,6 +162,7 @@ Global {0A8A0DB7-0509-4DFB-9201-74398511B481} = {2A514C8F-6A53-41CA-AB41-B644E7BC92A7} {4D123ACB-ACBD-4E40-AE6B-1B0F79D703B0} = {0BC0CC4E-A0F1-45E8-B41A-AE0FA76BF3E5} {61B285F0-EE06-4AEE-AAF3-71492CBD11C5} = {EE588CE5-51D0-4E98-A2B3-40EC8E655931} + {6DD24C2C-0FB5-4C37-8B42-5DACA0FDE4EC} = {588205D4-3A30-4DA4-849D-C7422C396DAA} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {B3166EDE-037B-4C68-BEBA-5DE9C5E3DB82} diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/Constants/AuthenticationConsts.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/AuthenticationConsts.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Configuration/Constants/AuthenticationConsts.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/AuthenticationConsts.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/Constants/AuthorizationConsts.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/AuthorizationConsts.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Configuration/Constants/AuthorizationConsts.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/AuthorizationConsts.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Controllers/AccountController.cs b/src/Skoruba.IdentityServer4.Admin.UI/Controllers/AccountController.cs similarity index 96% rename from src/Skoruba.IdentityServer4.Admin/Controllers/AccountController.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Controllers/AccountController.cs index 659e6caca..206d68040 100644 --- a/src/Skoruba.IdentityServer4.Admin/Controllers/AccountController.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Controllers/AccountController.cs @@ -1,26 +1,26 @@ -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Logging; -using Skoruba.IdentityServer4.Admin.Configuration.Constants; -using System.Collections.Generic; - -namespace Skoruba.IdentityServer4.Admin.Controllers -{ - [Authorize] - public class AccountController : BaseController - { - public AccountController(ILogger logger) : base(logger) - { - } - - public IActionResult AccessDenied() - { - return View(); - } - - public IActionResult Logout() - { - return new SignOutResult(new List { AuthenticationConsts.SignInScheme, AuthenticationConsts.OidcAuthenticationScheme }); - } - } -} +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Skoruba.IdentityServer4.Admin.Configuration.Constants; +using System.Collections.Generic; + +namespace Skoruba.IdentityServer4.Admin.Controllers +{ + [Authorize] + public class AccountController : BaseController + { + public AccountController(ILogger logger) : base(logger) + { + } + + public IActionResult AccessDenied() + { + return View(); + } + + public IActionResult Logout() + { + return new SignOutResult(new List { AuthenticationConsts.SignInScheme, AuthenticationConsts.OidcAuthenticationScheme }); + } + } +} diff --git a/src/Skoruba.IdentityServer4.Admin/Controllers/BaseController.cs b/src/Skoruba.IdentityServer4.Admin.UI/Controllers/BaseController.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Controllers/BaseController.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Controllers/BaseController.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Controllers/ConfigurationController.cs b/src/Skoruba.IdentityServer4.Admin.UI/Controllers/ConfigurationController.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Controllers/ConfigurationController.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Controllers/ConfigurationController.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Controllers/GrantController.cs b/src/Skoruba.IdentityServer4.Admin.UI/Controllers/GrantController.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Controllers/GrantController.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Controllers/GrantController.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Controllers/HomeController.cs b/src/Skoruba.IdentityServer4.Admin.UI/Controllers/HomeController.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Controllers/HomeController.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Controllers/HomeController.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Controllers/IdentityController.cs b/src/Skoruba.IdentityServer4.Admin.UI/Controllers/IdentityController.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Controllers/IdentityController.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Controllers/IdentityController.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Controllers/LogController.cs b/src/Skoruba.IdentityServer4.Admin.UI/Controllers/LogController.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Controllers/LogController.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Controllers/LogController.cs diff --git a/src/Skoruba.IdentityServer4.Admin/ExceptionHandling/ControllerExceptionFilterAttribute.cs b/src/Skoruba.IdentityServer4.Admin.UI/ExceptionHandling/ControllerExceptionFilterAttribute.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/ExceptionHandling/ControllerExceptionFilterAttribute.cs rename to src/Skoruba.IdentityServer4.Admin.UI/ExceptionHandling/ControllerExceptionFilterAttribute.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Helpers/Localization/GenericServiceLocalizer.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/Localization/GenericServiceLocalizer.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Helpers/Localization/GenericServiceLocalizer.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Helpers/Localization/GenericServiceLocalizer.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Helpers/Localization/IGenericControllerLocalizer.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/Localization/IGenericControllerLocalizer.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Helpers/Localization/IGenericControllerLocalizer.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Helpers/Localization/IGenericControllerLocalizer.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Helpers/MD5HashHelper.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/MD5HashHelper.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Helpers/MD5HashHelper.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Helpers/MD5HashHelper.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Helpers/NotificationHelpers.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/NotificationHelpers.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Helpers/NotificationHelpers.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Helpers/NotificationHelpers.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Helpers/PagerHelpers.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/PagerHelpers.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Helpers/PagerHelpers.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Helpers/PagerHelpers.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Helpers/TagHelpers/GravatarTagHelper.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/GravatarTagHelper.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Helpers/TagHelpers/GravatarTagHelper.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/GravatarTagHelper.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Helpers/TagHelpers/PickerTagHelper.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/PickerTagHelper.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Helpers/TagHelpers/PickerTagHelper.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/PickerTagHelper.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Helpers/TagHelpers/SwitchTagHelper.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/SwitchTagHelper.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Helpers/TagHelpers/SwitchTagHelper.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/SwitchTagHelper.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Helpers/UrlHelpers.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/UrlHelpers.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Helpers/UrlHelpers.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Helpers/UrlHelpers.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/ConfigurationController.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/ConfigurationController.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/GrantController.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/GrantController.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Controllers/IdentityController.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Controllers/IdentityController.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Helpers/Identity/IdentityErrorMessages.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Helpers/Identity/IdentityErrorMessages.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Helpers/Identity/IdentityErrorMessages.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Helpers/Identity/IdentityErrorMessages.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Helpers/Identity/IdentityErrorMessages.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Helpers/Identity/IdentityErrorMessages.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Helpers/Identity/IdentityErrorMessages.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Helpers/Identity/IdentityErrorMessages.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ApiResourceService.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ApiResourceService.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/ClientService.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/ClientService.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityResourceService.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityResourceService.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/IdentityService.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/IdentityService.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Services/PersistedGrantService.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Services/PersistedGrantService.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Account/AccessDenied.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Account/AccessDenied.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResource/Section/Label.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResource/Section/Label.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceDelete.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceDelete.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourceProperties.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourceProperties.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResourcePropertyDelete.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResourcePropertyDelete.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiResources.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiResources.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopeDelete.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopeDelete.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiScopes.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiScopes.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecretDelete.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecretDelete.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ApiSecrets.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ApiSecrets.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/ActionButtons.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/ActionButtons.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Authentication.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Authentication.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Basics.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Basics.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Consent.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Consent.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/DeviceFlow.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/DeviceFlow.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/DeviceFlow.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/DeviceFlow.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/DeviceFlow.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/DeviceFlow.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/DeviceFlow.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/DeviceFlow.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/DeviceFlow.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/DeviceFlow.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/DeviceFlow.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/DeviceFlow.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/DeviceFlow.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/DeviceFlow.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/DeviceFlow.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/DeviceFlow.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/DeviceFlow.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/DeviceFlow.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/DeviceFlow.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/DeviceFlow.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/DeviceFlow.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/DeviceFlow.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/DeviceFlow.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/DeviceFlow.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/DeviceFlow.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/DeviceFlow.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/DeviceFlow.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/DeviceFlow.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/DeviceFlow.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/DeviceFlow.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/DeviceFlow.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/DeviceFlow.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Label.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Label.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Name.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Name.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Section/Token.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Section/Token.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Client/Settings.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Client/Settings.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaimDelete.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaimDelete.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClaims.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClaims.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientClone.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientClone.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientDelete.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientDelete.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientProperties.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientProperties.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientPropertyDelete.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientPropertyDelete.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecretDelete.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecretDelete.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/ClientSecrets.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/ClientSecrets.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/Clients.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/Clients.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResource/Section/Label.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResource/Section/Label.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceDelete.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceDelete.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourceProperties.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourceProperties.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResourcePropertyDelete.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResourcePropertyDelete.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Configuration/IdentityResources.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Configuration/IdentityResources.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrant.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrant.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrantDelete.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrantDelete.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Grant/PersistedGrants.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Grant/PersistedGrants.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Home/Index.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Home/Index.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Role/Section/Label.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Role/Section/Label.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaims.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaims.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleClaimsDelete.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleClaimsDelete.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleDelete.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleDelete.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/RoleUsers.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/RoleUsers.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Roles.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Roles.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/User/Section/Label.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/User/Section/Label.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserChangePassword.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserChangePassword.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaims.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaims.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserClaimsDelete.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserClaimsDelete.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserDelete.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserDelete.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProfile.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProfile.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProviders.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProviders.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserProvidersDelete.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserProvidersDelete.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRoles.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRoles.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/UserRolesDelete.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/UserRolesDelete.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Identity/Users.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Identity/Users.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/AuditLog.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/AuditLog.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/AuditLog.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/AuditLog.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/AuditLog.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/AuditLog.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/AuditLog.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/AuditLog.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/AuditLog.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/AuditLog.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/AuditLog.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/AuditLog.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/AuditLog.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/AuditLog.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/AuditLog.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/AuditLog.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Log/ErrorsLog.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Log/ErrorsLog.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/ErrorPage.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/ErrorPage.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Pager.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Pager.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/PagerDynamic.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/PagerDynamic.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/Search.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/Search.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Common/SelectLanguage.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Common/SelectLanguage.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/Components/IdentityServerLink/Default.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/Components/IdentityServerLink/Default.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.da.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.da.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.da.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.da.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.de.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.de.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.de.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.de.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.en.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.en.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.en.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.en.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.es.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.es.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.es.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.es.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.fa.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.fa.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.fa.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.fa.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.fi.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.fi.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.fi.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.fi.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.fr.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.fr.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.fr.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.fr.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.pt.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.pt.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.pt.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.pt.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.ru.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.ru.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.ru.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.ru.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.sv.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.sv.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.sv.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.sv.resx diff --git a/src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.zh.resx b/src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.zh.resx similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Resources/Views/Shared/_Layout.zh.resx rename to src/Skoruba.IdentityServer4.Admin.UI/Resources/Views/Shared/_Layout.zh.resx diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj b/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj new file mode 100644 index 000000000..8759eb22f --- /dev/null +++ b/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj @@ -0,0 +1,155 @@ + + + + netcoreapp3.1 + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Account/AccessDenied.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Account/AccessDenied.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Account/AccessDenied.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Account/AccessDenied.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiResource.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiResource.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiResource.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiResource.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiResource/Section/Label.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiResource/Section/Label.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiResource/Section/Label.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiResource/Section/Label.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiResourceDelete.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiResourceDelete.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiResourceDelete.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiResourceDelete.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiResourceProperties.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiResourceProperties.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiResourceProperties.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiResourceProperties.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiResourcePropertyDelete.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiResourcePropertyDelete.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiResourcePropertyDelete.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiResourcePropertyDelete.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiResources.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiResources.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiResources.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiResources.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiScopeDelete.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiScopeDelete.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiScopeDelete.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiScopeDelete.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiScopes.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiScopes.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiScopes.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiScopes.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiSecretDelete.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiSecretDelete.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiSecretDelete.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiSecretDelete.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiSecrets.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiSecrets.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ApiSecrets.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ApiSecrets.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Section/ActionButtons.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Section/ActionButtons.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Section/ActionButtons.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Section/ActionButtons.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Section/Authentication.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Section/Authentication.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Section/Authentication.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Section/Authentication.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Section/Basics.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Section/Basics.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Section/Basics.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Section/Basics.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Section/Consent.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Section/Consent.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Section/Consent.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Section/Consent.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Section/DeviceFlow.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Section/DeviceFlow.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Section/DeviceFlow.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Section/DeviceFlow.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Section/Label.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Section/Label.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Section/Label.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Section/Label.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Section/Name.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Section/Name.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Section/Name.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Section/Name.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Section/Token.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Section/Token.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Section/Token.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Section/Token.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Settings.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Settings.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/Client/Settings.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Client/Settings.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ClientClaimDelete.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ClientClaimDelete.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ClientClaimDelete.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ClientClaimDelete.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ClientClaims.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ClientClaims.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ClientClaims.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ClientClaims.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ClientClone.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ClientClone.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ClientClone.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ClientClone.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ClientDelete.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ClientDelete.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ClientDelete.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ClientDelete.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ClientProperties.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ClientProperties.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ClientProperties.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ClientProperties.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ClientPropertyDelete.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ClientPropertyDelete.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ClientPropertyDelete.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ClientPropertyDelete.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ClientSecretDelete.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ClientSecretDelete.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ClientSecretDelete.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ClientSecretDelete.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/ClientSecrets.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ClientSecrets.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/ClientSecrets.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/ClientSecrets.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/Clients.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Clients.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/Clients.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/Clients.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/IdentityResource.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/IdentityResource.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/IdentityResource.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/IdentityResource.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/IdentityResource/Section/Label.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/IdentityResource/Section/Label.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/IdentityResource/Section/Label.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/IdentityResource/Section/Label.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/IdentityResourceDelete.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/IdentityResourceDelete.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/IdentityResourceDelete.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/IdentityResourceDelete.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/IdentityResourceProperties.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/IdentityResourceProperties.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/IdentityResourceProperties.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/IdentityResourceProperties.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/IdentityResourcePropertyDelete.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/IdentityResourcePropertyDelete.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/IdentityResourcePropertyDelete.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/IdentityResourcePropertyDelete.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Configuration/IdentityResources.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/IdentityResources.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Configuration/IdentityResources.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Configuration/IdentityResources.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Grant/PersistedGrant.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Grant/PersistedGrant.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Grant/PersistedGrant.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Grant/PersistedGrant.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Grant/PersistedGrantDelete.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Grant/PersistedGrantDelete.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Grant/PersistedGrantDelete.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Grant/PersistedGrantDelete.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Grant/PersistedGrants.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Grant/PersistedGrants.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Grant/PersistedGrants.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Grant/PersistedGrants.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Home/Error.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Home/Error.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Home/Error.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Home/Error.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Home/Index.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Home/Index.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Home/Index.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Home/Index.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/Role.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/Role.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/Role.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/Role.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/Role/Section/Label.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/Role/Section/Label.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/Role/Section/Label.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/Role/Section/Label.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/RoleClaims.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/RoleClaims.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/RoleClaims.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/RoleClaims.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/RoleClaimsDelete.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/RoleClaimsDelete.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/RoleClaimsDelete.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/RoleClaimsDelete.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/RoleDelete.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/RoleDelete.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/RoleDelete.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/RoleDelete.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/RoleUsers.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/RoleUsers.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/RoleUsers.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/RoleUsers.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/Roles.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/Roles.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/Roles.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/Roles.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/User/Section/Label.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/User/Section/Label.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/User/Section/Label.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/User/Section/Label.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/UserChangePassword.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserChangePassword.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/UserChangePassword.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserChangePassword.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/UserClaims.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserClaims.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/UserClaims.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserClaims.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/UserClaimsDelete.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserClaimsDelete.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/UserClaimsDelete.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserClaimsDelete.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/UserDelete.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserDelete.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/UserDelete.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserDelete.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/UserProfile.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserProfile.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/UserProfile.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserProfile.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/UserProviders.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserProviders.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/UserProviders.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserProviders.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/UserProvidersDelete.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserProvidersDelete.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/UserProvidersDelete.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserProvidersDelete.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/UserRoles.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserRoles.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/UserRoles.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserRoles.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/UserRolesDelete.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserRolesDelete.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/UserRolesDelete.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/UserRolesDelete.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Identity/Users.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/Users.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Identity/Users.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Identity/Users.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Log/AuditLog.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Log/AuditLog.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Log/AuditLog.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Log/AuditLog.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Log/ErrorsLog.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Log/ErrorsLog.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Log/ErrorsLog.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Log/ErrorsLog.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Shared/Common/ApplicationVersion.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/ApplicationVersion.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Shared/Common/ApplicationVersion.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/ApplicationVersion.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Shared/Common/ErrorPage.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/ErrorPage.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Shared/Common/ErrorPage.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/ErrorPage.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Shared/Common/Notification.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/Notification.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Shared/Common/Notification.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/Notification.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Shared/Common/Pager.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/Pager.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Shared/Common/Pager.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/Pager.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Shared/Common/PagerDynamic.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/PagerDynamic.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Shared/Common/PagerDynamic.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/PagerDynamic.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Shared/Common/Search.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/Search.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Shared/Common/Search.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/Search.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Shared/Common/SelectLanguage.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/SelectLanguage.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Shared/Common/SelectLanguage.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/SelectLanguage.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Shared/Components/IdentityServerLink/Default.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Components/IdentityServerLink/Default.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Shared/Components/IdentityServerLink/Default.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Components/IdentityServerLink/Default.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Shared/Error.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Error.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Shared/Error.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Error.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/Shared/_Layout.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/_Layout.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/Shared/_Layout.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/_Layout.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/_ViewImports.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/_ViewImports.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/_ViewImports.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/_ViewImports.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/Views/_ViewStart.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/_ViewStart.cshtml similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Views/_ViewStart.cshtml rename to src/Skoruba.IdentityServer4.Admin.UI/Views/_ViewStart.cshtml diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/bundle.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/bundle.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/bundle.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/bundle.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/cerulean/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/cerulean/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/cerulean/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/cerulean/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/cosmo/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/cosmo/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/cosmo/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/cosmo/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/cyborg/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/cyborg/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/cyborg/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/cyborg/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/darkly/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/darkly/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/darkly/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/darkly/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/flatly/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/flatly/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/flatly/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/flatly/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/journal/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/journal/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/journal/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/journal/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/litera/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/litera/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/litera/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/litera/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/lumen/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/lumen/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/lumen/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/lumen/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/lux/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/lux/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/lux/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/lux/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/materia/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/materia/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/materia/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/materia/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/minty/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/minty/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/minty/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/minty/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/pulse/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/pulse/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/pulse/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/pulse/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/sandstone/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/sandstone/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/sandstone/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/sandstone/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/simplex/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/simplex/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/simplex/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/simplex/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/sketchy/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/sketchy/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/sketchy/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/sketchy/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/slate/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/slate/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/slate/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/slate/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/solar/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/solar/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/solar/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/solar/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/spacelab/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/spacelab/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/spacelab/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/spacelab/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/superhero/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/superhero/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/superhero/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/superhero/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/united/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/united/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/united/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/united/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/yeti/bootstrap.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/yeti/bootstrap.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/themes/yeti/bootstrap.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/themes/yeti/bootstrap.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/web.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/web.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/web.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/web.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/web.min.css b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/web.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/css/web.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/css/web.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/FontAwesome.otf b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/FontAwesome.otf similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/FontAwesome.otf rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/FontAwesome.otf diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/fontawesome-webfont.eot b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/fontawesome-webfont.eot similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/fontawesome-webfont.eot rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/fontawesome-webfont.eot diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/fontawesome-webfont.svg b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/fontawesome-webfont.svg similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/fontawesome-webfont.svg rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/fontawesome-webfont.svg diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/fontawesome-webfont.ttf b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/fontawesome-webfont.ttf similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/fontawesome-webfont.ttf rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/fontawesome-webfont.ttf diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/fontawesome-webfont.woff b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/fontawesome-webfont.woff similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/fontawesome-webfont.woff rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/fontawesome-webfont.woff diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/fontawesome-webfont.woff2 b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/fontawesome-webfont.woff2 similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/fontawesome-webfont.woff2 rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/fontawesome-webfont.woff2 diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/open-iconic.eot b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/open-iconic.eot similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/open-iconic.eot rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/open-iconic.eot diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/open-iconic.otf b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/open-iconic.otf similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/open-iconic.otf rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/open-iconic.otf diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/open-iconic.svg b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/open-iconic.svg similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/open-iconic.svg rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/open-iconic.svg diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/open-iconic.ttf b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/open-iconic.ttf similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/open-iconic.ttf rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/open-iconic.ttf diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/open-iconic.woff b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/open-iconic.woff similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/fonts/open-iconic.woff rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/fonts/open-iconic.woff diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/dist/js/bundle.min.js b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/js/bundle.min.js similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/dist/js/bundle.min.js rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/dist/js/bundle.min.js diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/favicon.ico b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/favicon.ico similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/favicon.ico rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/favicon.ico diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/images/icons/device-client.png b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/images/icons/device-client.png similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/images/icons/device-client.png rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/images/icons/device-client.png diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/images/icons/empty-client.png b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/images/icons/empty-client.png similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/images/icons/empty-client.png rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/images/icons/empty-client.png diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/images/icons/native-client.png b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/images/icons/native-client.png similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/images/icons/native-client.png rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/images/icons/native-client.png diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/images/icons/server-client.png b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/images/icons/server-client.png similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/images/icons/server-client.png rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/images/icons/server-client.png diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/images/icons/spa-client.png b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/images/icons/spa-client.png similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/images/icons/spa-client.png rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/images/icons/spa-client.png diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/images/icons/web-client.png b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/images/icons/web-client.png similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/images/icons/web-client.png rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/images/icons/web-client.png diff --git a/src/Skoruba.IdentityServer4.Admin/wwwroot/images/loading.gif b/src/Skoruba.IdentityServer4.Admin.UI/wwwroot/images/loading.gif similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/wwwroot/images/loading.gif rename to src/Skoruba.IdentityServer4.Admin.UI/wwwroot/images/loading.gif diff --git a/src/Skoruba.IdentityServer4.Admin/Properties/launchSettings.json b/src/Skoruba.IdentityServer4.Admin/Properties/launchSettings.json index eee187ee9..f387a0eac 100644 --- a/src/Skoruba.IdentityServer4.Admin/Properties/launchSettings.json +++ b/src/Skoruba.IdentityServer4.Admin/Properties/launchSettings.json @@ -1,27 +1,28 @@ { - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "https://localhost:44303", - "sslPort": 44303 - } + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "https://localhost:44303", + "sslPort": 44303 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "commandLineArgs": "/seed", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "Skoruba.IdentityServer4.Admin": { - "commandName": "Project", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "applicationUrl": "https://localhost:44303" - } + "Skoruba.IdentityServer4.Admin": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:44303" } + } } \ No newline at end of file diff --git a/src/Skoruba.IdentityServer4.Admin/Skoruba.IdentityServer4.Admin.csproj b/src/Skoruba.IdentityServer4.Admin/Skoruba.IdentityServer4.Admin.csproj index e125da3d8..6ba111d13 100644 --- a/src/Skoruba.IdentityServer4.Admin/Skoruba.IdentityServer4.Admin.csproj +++ b/src/Skoruba.IdentityServer4.Admin/Skoruba.IdentityServer4.Admin.csproj @@ -51,75 +51,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 5085691a3367e7bc0f8dc40d8e5d183e66f4e260 Mon Sep 17 00:00:00 2001 From: Brice Date: Wed, 6 Jan 2021 15:46:06 +0100 Subject: [PATCH 02/38] Fixed application version page can no longer refer to Startup type for detecting assembly version --- .../Skoruba.IdentityServer4.Admin.UI.csproj | 3 +++ .../Views/Shared/Common/ApplicationVersion.cshtml | 4 +--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj b/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj index 8759eb22f..1b2fab6b7 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj +++ b/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj @@ -2,6 +2,9 @@ netcoreapp3.1 + 1.0.0 + Jan Škoruba + latest true diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/ApplicationVersion.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/ApplicationVersion.cshtml index 958644c3f..80b90117d 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/ApplicationVersion.cshtml +++ b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/ApplicationVersion.cshtml @@ -2,9 +2,7 @@ @using Skoruba.IdentityServer4.Admin @{ - var runtimeVersion = typeof(Startup) - .GetTypeInfo() - .Assembly + var runtimeVersion = Assembly.GetExecutingAssembly() .GetCustomAttribute()?.InformationalVersion; } From 9c37ed09d8dbb79732d75bd4969cd08645f9ff8d Mon Sep 17 00:00:00 2001 From: Brice Date: Wed, 6 Jan 2021 16:11:34 +0100 Subject: [PATCH 03/38] Fixed build of Admin project that now depends on UI project --- .../Skoruba.IdentityServer4.Admin.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Skoruba.IdentityServer4.Admin/Skoruba.IdentityServer4.Admin.csproj b/src/Skoruba.IdentityServer4.Admin/Skoruba.IdentityServer4.Admin.csproj index 6ba111d13..a8675a37c 100644 --- a/src/Skoruba.IdentityServer4.Admin/Skoruba.IdentityServer4.Admin.csproj +++ b/src/Skoruba.IdentityServer4.Admin/Skoruba.IdentityServer4.Admin.csproj @@ -59,6 +59,7 @@ + From 0714eab5397d4b72c21854c75f8443eaef4dc403 Mon Sep 17 00:00:00 2001 From: Brice Date: Wed, 6 Jan 2021 16:45:07 +0100 Subject: [PATCH 04/38] Extracted UI-specific startup helpers and classes into UI project --- Skoruba.IdentityServer4.Admin.sln | 2 +- .../Configuration/AdminConfiguration.cs | 0 .../GenericControllerRouteConvention.cs | 0 .../GenericTypeControllerFeatureProvider.cs | 0 .../AuditLoggingConfiguration.cs | 0 .../Constants/ConfigurationConsts.cs | 0 .../Configuration/CultureConfiguration.cs | 0 .../Configuration/Identity/Claim.cs | 0 .../Configuration/Identity/Role.cs | 0 .../Configuration/Identity/User.cs | 0 .../IdentityDataConfiguration.cs | 0 .../Configuration/IdentityServer/Client.cs | 0 .../IdentityServerDataConfiguration.cs | 0 .../Interfaces/IRootConfiguration.cs | 0 .../Helpers/ServiceHelpers.cs | 474 ++++++++++++++++++ .../Skoruba.IdentityServer4.Admin.UI.csproj | 16 + .../Helpers/StartupHelpers.cs | 422 ---------------- 17 files changed, 491 insertions(+), 423 deletions(-) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Configuration/AdminConfiguration.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Configuration/ApplicationParts/GenericControllerRouteConvention.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Configuration/ApplicationParts/GenericTypeControllerFeatureProvider.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Configuration/AuditLoggingConfiguration.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Configuration/Constants/ConfigurationConsts.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Configuration/CultureConfiguration.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Configuration/Identity/Claim.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Configuration/Identity/Role.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Configuration/Identity/User.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Configuration/IdentityDataConfiguration.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Configuration/IdentityServer/Client.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Configuration/IdentityServerDataConfiguration.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Configuration/Interfaces/IRootConfiguration.cs (100%) create mode 100644 src/Skoruba.IdentityServer4.Admin.UI/Helpers/ServiceHelpers.cs diff --git a/Skoruba.IdentityServer4.Admin.sln b/Skoruba.IdentityServer4.Admin.sln index 41b86ea8d..ab6296e82 100644 --- a/Skoruba.IdentityServer4.Admin.sln +++ b/Skoruba.IdentityServer4.Admin.sln @@ -51,7 +51,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Skoruba.IdentityServer4.Adm EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Skoruba.IdentityServer4.Shared", "src\Skoruba.IdentityServer4.Shared\Skoruba.IdentityServer4.Shared.csproj", "{61B285F0-EE06-4AEE-AAF3-71492CBD11C5}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Skoruba.IdentityServer4.Admin.UI", "src\Skoruba.IdentityServer4.Admin.UI\Skoruba.IdentityServer4.Admin.UI.csproj", "{6DD24C2C-0FB5-4C37-8B42-5DACA0FDE4EC}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Skoruba.IdentityServer4.Admin.UI", "src\Skoruba.IdentityServer4.Admin.UI\Skoruba.IdentityServer4.Admin.UI.csproj", "{6DD24C2C-0FB5-4C37-8B42-5DACA0FDE4EC}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/AdminConfiguration.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/AdminConfiguration.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Configuration/AdminConfiguration.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Configuration/AdminConfiguration.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/ApplicationParts/GenericControllerRouteConvention.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/ApplicationParts/GenericControllerRouteConvention.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Configuration/ApplicationParts/GenericControllerRouteConvention.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Configuration/ApplicationParts/GenericControllerRouteConvention.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/ApplicationParts/GenericTypeControllerFeatureProvider.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/ApplicationParts/GenericTypeControllerFeatureProvider.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Configuration/ApplicationParts/GenericTypeControllerFeatureProvider.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Configuration/ApplicationParts/GenericTypeControllerFeatureProvider.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/AuditLoggingConfiguration.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/AuditLoggingConfiguration.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Configuration/AuditLoggingConfiguration.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Configuration/AuditLoggingConfiguration.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/Constants/ConfigurationConsts.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/ConfigurationConsts.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Configuration/Constants/ConfigurationConsts.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/ConfigurationConsts.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/CultureConfiguration.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/CultureConfiguration.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Configuration/CultureConfiguration.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Configuration/CultureConfiguration.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/Identity/Claim.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Identity/Claim.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Configuration/Identity/Claim.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Configuration/Identity/Claim.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/Identity/Role.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Identity/Role.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Configuration/Identity/Role.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Configuration/Identity/Role.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/Identity/User.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Identity/User.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Configuration/Identity/User.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Configuration/Identity/User.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/IdentityDataConfiguration.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/IdentityDataConfiguration.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Configuration/IdentityDataConfiguration.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Configuration/IdentityDataConfiguration.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/IdentityServer/Client.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/IdentityServer/Client.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Configuration/IdentityServer/Client.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Configuration/IdentityServer/Client.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/IdentityServerDataConfiguration.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/IdentityServerDataConfiguration.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Configuration/IdentityServerDataConfiguration.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Configuration/IdentityServerDataConfiguration.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/Interfaces/IRootConfiguration.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Interfaces/IRootConfiguration.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Configuration/Interfaces/IRootConfiguration.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Configuration/Interfaces/IRootConfiguration.cs diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ServiceHelpers.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ServiceHelpers.cs new file mode 100644 index 000000000..249b180ca --- /dev/null +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ServiceHelpers.cs @@ -0,0 +1,474 @@ +using IdentityServer4.EntityFramework.Options; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Authentication.Cookies; +using Microsoft.AspNetCore.Authentication.OpenIdConnect; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.DataProtection.EntityFrameworkCore; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Localization; +using Microsoft.AspNetCore.Mvc.Razor; +using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; +using Microsoft.Extensions.Options; +using Microsoft.IdentityModel.Tokens; +using Skoruba.AuditLogging.EntityFramework.DbContexts; +using Skoruba.AuditLogging.EntityFramework.Entities; +using Skoruba.AuditLogging.EntityFramework.Extensions; +using Skoruba.AuditLogging.EntityFramework.Repositories; +using Skoruba.AuditLogging.EntityFramework.Services; +using Skoruba.IdentityServer4.Admin.BusinessLogic.Identity.Dtos.Identity; +using Skoruba.IdentityServer4.Admin.BusinessLogic.Services; +using Skoruba.IdentityServer4.Admin.BusinessLogic.Services.Interfaces; +using Skoruba.IdentityServer4.Admin.Configuration; +using Skoruba.IdentityServer4.Admin.Configuration.ApplicationParts; +using Skoruba.IdentityServer4.Admin.Configuration.Constants; +using Skoruba.IdentityServer4.Admin.Configuration.Interfaces; +using Skoruba.IdentityServer4.Admin.EntityFramework.Helpers; +using Skoruba.IdentityServer4.Admin.EntityFramework.Interfaces; +using Skoruba.IdentityServer4.Admin.EntityFramework.MySql.Extensions; +using Skoruba.IdentityServer4.Admin.EntityFramework.PostgreSQL.Extensions; +using Skoruba.IdentityServer4.Admin.EntityFramework.Repositories; +using Skoruba.IdentityServer4.Admin.EntityFramework.Repositories.Interfaces; +using Skoruba.IdentityServer4.Admin.EntityFramework.Shared.Configuration; +using Skoruba.IdentityServer4.Admin.EntityFramework.SqlServer.Extensions; +using Skoruba.IdentityServer4.Admin.ExceptionHandling; +using Skoruba.IdentityServer4.Admin.Helpers.Localization; +using Skoruba.IdentityServer4.Shared.Authentication; +using System; +using System.Globalization; +using System.Linq; +using System.Threading.Tasks; + +namespace Skoruba.IdentityServer4.Admin.Helpers +{ + public static class ServiceHelpers + { + public static IServiceCollection AddAuditEventLogging(this IServiceCollection services, IConfiguration configuration) + where TAuditLog : AuditLog, new() + where TAuditLoggingDbContext : IAuditLoggingDbContext + { + var auditLoggingConfiguration = configuration.GetSection(nameof(AuditLoggingConfiguration)).Get(); + + services.AddAuditLogging(options => { options.Source = auditLoggingConfiguration.Source; }) + .AddDefaultHttpEventData(subjectOptions => + { + subjectOptions.SubjectIdentifierClaim = auditLoggingConfiguration.SubjectIdentifierClaim; + subjectOptions.SubjectNameClaim = auditLoggingConfiguration.SubjectNameClaim; + }, + actionOptions => + { + actionOptions.IncludeFormVariables = auditLoggingConfiguration.IncludeFormVariables; + }) + .AddAuditSinks>(); + + // repository for library + services.AddTransient, AuditLoggingRepository>(); + + // repository and service for admin + services.AddTransient, AuditLogRepository>(); + services.AddTransient>(); + + return services; + } + + /// + /// Register DbContexts for IdentityServer ConfigurationStore and PersistedGrants, Identity and Logging + /// Configure the connection strings in AppSettings.json + /// + /// + /// + /// + /// + /// + /// + /// + public static void RegisterDbContexts(this IServiceCollection services, IConfiguration configuration) + where TIdentityDbContext : DbContext + where TPersistedGrantDbContext : DbContext, IAdminPersistedGrantDbContext + where TConfigurationDbContext : DbContext, IAdminConfigurationDbContext + where TLogDbContext : DbContext, IAdminLogDbContext + where TAuditLoggingDbContext : DbContext, IAuditLoggingDbContext + where TDataProtectionDbContext : DbContext, IDataProtectionKeyContext + { + var databaseProvider = configuration.GetSection(nameof(DatabaseProviderConfiguration)).Get(); + + var identityConnectionString = configuration.GetConnectionString(ConfigurationConsts.IdentityDbConnectionStringKey); + var configurationConnectionString = configuration.GetConnectionString(ConfigurationConsts.ConfigurationDbConnectionStringKey); + var persistedGrantsConnectionString = configuration.GetConnectionString(ConfigurationConsts.PersistedGrantDbConnectionStringKey); + var errorLoggingConnectionString = configuration.GetConnectionString(ConfigurationConsts.AdminLogDbConnectionStringKey); + var auditLoggingConnectionString = configuration.GetConnectionString(ConfigurationConsts.AdminAuditLogDbConnectionStringKey); + var dataProtectionConnectionString = configuration.GetConnectionString(ConfigurationConsts.DataProtectionDbConnectionStringKey); + + switch (databaseProvider.ProviderType) + { + case DatabaseProviderType.SqlServer: + services.RegisterSqlServerDbContexts(identityConnectionString, configurationConnectionString, persistedGrantsConnectionString, errorLoggingConnectionString, auditLoggingConnectionString, dataProtectionConnectionString); + break; + case DatabaseProviderType.PostgreSQL: + services.RegisterNpgSqlDbContexts(identityConnectionString, configurationConnectionString, persistedGrantsConnectionString, errorLoggingConnectionString, auditLoggingConnectionString, dataProtectionConnectionString); + break; + case DatabaseProviderType.MySql: + services.RegisterMySqlDbContexts(identityConnectionString, configurationConnectionString, persistedGrantsConnectionString, errorLoggingConnectionString, auditLoggingConnectionString, dataProtectionConnectionString); + break; + default: + throw new ArgumentOutOfRangeException(nameof(databaseProvider.ProviderType), $@"The value needs to be one of {string.Join(", ", Enum.GetNames(typeof(DatabaseProviderType)))}."); + } + } + + /// + /// Register in memory DbContexts for IdentityServer ConfigurationStore and PersistedGrants, Identity and Logging + /// For testing purpose only + /// + /// + /// + /// + /// + /// + /// + public static void RegisterDbContextsStaging(this IServiceCollection services) + where TIdentityDbContext : DbContext + where TPersistedGrantDbContext : DbContext, IAdminPersistedGrantDbContext + where TConfigurationDbContext : DbContext, IAdminConfigurationDbContext + where TLogDbContext : DbContext, IAdminLogDbContext + where TAuditLoggingDbContext : DbContext, IAuditLoggingDbContext + where TDataProtectionDbContext : DbContext, IDataProtectionKeyContext + { + var persistedGrantsDatabaseName = Guid.NewGuid().ToString(); + var configurationDatabaseName = Guid.NewGuid().ToString(); + var logDatabaseName = Guid.NewGuid().ToString(); + var identityDatabaseName = Guid.NewGuid().ToString(); + var auditLoggingDatabaseName = Guid.NewGuid().ToString(); + var dataProtectionDatabaseName = Guid.NewGuid().ToString(); + + var operationalStoreOptions = new OperationalStoreOptions(); + services.AddSingleton(operationalStoreOptions); + + var storeOptions = new ConfigurationStoreOptions(); + services.AddSingleton(storeOptions); + + services.AddDbContext(optionsBuilder => optionsBuilder.UseInMemoryDatabase(identityDatabaseName)); + services.AddDbContext(optionsBuilder => optionsBuilder.UseInMemoryDatabase(persistedGrantsDatabaseName)); + services.AddDbContext(optionsBuilder => optionsBuilder.UseInMemoryDatabase(configurationDatabaseName)); + services.AddDbContext(optionsBuilder => optionsBuilder.UseInMemoryDatabase(logDatabaseName)); + services.AddDbContext(optionsBuilder => optionsBuilder.UseInMemoryDatabase(auditLoggingDatabaseName)); + services.AddDbContext(optionsBuilder => optionsBuilder.UseInMemoryDatabase(dataProtectionDatabaseName)); + } + + + /// + /// Add middleware for localization + /// + /// + public static void ConfigureLocalization(this IApplicationBuilder app) + { + var options = app.ApplicationServices.GetService>(); + app.UseRequestLocalization(options.Value); + } + + /// + /// Add authorization policies + /// + /// + public static void AddAuthorizationPolicies(this IServiceCollection services, IRootConfiguration rootConfiguration) + { + services.AddAuthorization(options => + { + options.AddPolicy(AuthorizationConsts.AdministrationPolicy, + policy => policy.RequireRole(rootConfiguration.AdminConfiguration.AdministrationRole)); + }); + } + + /// + /// Add exception filter for controller + /// + /// + public static void AddMvcExceptionFilters(this IServiceCollection services) + { + //Exception handling + services.AddScoped(); + } + + /// + /// Register services for MVC and localization including available languages + /// + /// + public static void AddMvcWithLocalization(this IServiceCollection services, IConfiguration configuration) + where TUserDto : UserDto, new() + where TRoleDto : RoleDto, new() + where TUser : IdentityUser + where TRole : IdentityRole + where TKey : IEquatable + where TUserClaim : IdentityUserClaim + where TUserRole : IdentityUserRole + where TUserLogin : IdentityUserLogin + where TRoleClaim : IdentityRoleClaim + where TUserToken : IdentityUserToken + where TUsersDto : UsersDto + where TRolesDto : RolesDto + where TUserRolesDto : UserRolesDto + where TUserClaimsDto : UserClaimsDto + where TUserProviderDto : UserProviderDto + where TUserProvidersDto : UserProvidersDto + where TUserChangePasswordDto : UserChangePasswordDto + where TRoleClaimsDto : RoleClaimsDto + where TUserClaimDto : UserClaimDto + where TRoleClaimDto : RoleClaimDto + { + services.AddSingleton(); + + services.AddLocalization(opts => { opts.ResourcesPath = ConfigurationConsts.ResourcesPath; }); + + services.TryAddTransient(typeof(IGenericControllerLocalizer<>), typeof(GenericControllerLocalizer<>)); + + services.AddControllersWithViews(o => + { + o.Conventions.Add(new GenericControllerRouteConvention()); + }) + .AddViewLocalization( + LanguageViewLocationExpanderFormat.Suffix, + opts => { opts.ResourcesPath = ConfigurationConsts.ResourcesPath; }) + .AddDataAnnotationsLocalization() + .ConfigureApplicationPartManager(m => + { + m.FeatureProviders.Add(new GenericTypeControllerFeatureProvider()); + }); + + var cultureConfiguration = configuration.GetSection(nameof(CultureConfiguration)).Get(); + services.Configure( + opts => + { + // If cultures are specified in the configuration, use them (making sure they are among the available cultures), + // otherwise use all the available cultures + var supportedCultureCodes = (cultureConfiguration?.Cultures?.Count > 0 ? + cultureConfiguration.Cultures.Intersect(CultureConfiguration.AvailableCultures) : + CultureConfiguration.AvailableCultures).ToArray(); + + if (!supportedCultureCodes.Any()) supportedCultureCodes = CultureConfiguration.AvailableCultures; + var supportedCultures = supportedCultureCodes.Select(c => new CultureInfo(c)).ToList(); + + // If the default culture is specified use it, otherwise use CultureConfiguration.DefaultRequestCulture ("en") + var defaultCultureCode = string.IsNullOrEmpty(cultureConfiguration?.DefaultCulture) ? + CultureConfiguration.DefaultRequestCulture : cultureConfiguration?.DefaultCulture; + + // If the default culture is not among the supported cultures, use the first supported culture as default + if (!supportedCultureCodes.Contains(defaultCultureCode)) defaultCultureCode = supportedCultureCodes.FirstOrDefault(); + + opts.DefaultRequestCulture = new RequestCulture(defaultCultureCode); + opts.SupportedCultures = supportedCultures; + opts.SupportedUICultures = supportedCultures; + }); + } + + public static void AddAuthenticationServicesStaging( + this IServiceCollection services) + where TContext : DbContext where TUserIdentity : class where TUserIdentityRole : class + { + services.AddIdentity(options => + { + options.User.RequireUniqueEmail = true; + }) + .AddEntityFrameworkStores() + .AddDefaultTokenProviders(); + + services.AddAuthentication(options => + { + options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; + options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme; + + options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme; + options.DefaultForbidScheme = CookieAuthenticationDefaults.AuthenticationScheme; + options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme; + options.DefaultSignOutScheme = CookieAuthenticationDefaults.AuthenticationScheme; + }) + .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme); + } + + /// + /// Register services for authentication, including Identity. + /// For production mode is used OpenId Connect middleware which is connected to IdentityServer4 instance. + /// For testing purpose is used cookie middleware with fake login url. + /// + /// + /// + /// + /// + /// + public static void AddAuthenticationServices(this IServiceCollection services, IConfiguration configuration) + where TContext : DbContext where TUserIdentity : class where TUserIdentityRole : class + { + var adminConfiguration = configuration.GetSection(nameof(AdminConfiguration)).Get(); + + services.Configure(options => + { + options.MinimumSameSitePolicy = SameSiteMode.Unspecified; + options.Secure = CookieSecurePolicy.SameAsRequest; + options.OnAppendCookie = cookieContext => + AuthenticationHelpers.CheckSameSite(cookieContext.Context, cookieContext.CookieOptions); + options.OnDeleteCookie = cookieContext => + AuthenticationHelpers.CheckSameSite(cookieContext.Context, cookieContext.CookieOptions); + }); + + services + .AddIdentity(options => configuration.GetSection(nameof(IdentityOptions)).Bind(options)) + .AddEntityFrameworkStores() + .AddDefaultTokenProviders(); + + services.AddAuthentication(options => + { + options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; + options.DefaultChallengeScheme = AuthenticationConsts.OidcAuthenticationScheme; + + options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme; + options.DefaultForbidScheme = CookieAuthenticationDefaults.AuthenticationScheme; + options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme; + options.DefaultSignOutScheme = CookieAuthenticationDefaults.AuthenticationScheme; + }) + .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, + options => + { + options.Cookie.Name = adminConfiguration.IdentityAdminCookieName; + }) + .AddOpenIdConnect(AuthenticationConsts.OidcAuthenticationScheme, options => + { + options.Authority = adminConfiguration.IdentityServerBaseUrl; + options.RequireHttpsMetadata = adminConfiguration.RequireHttpsMetadata; + options.ClientId = adminConfiguration.ClientId; + options.ClientSecret = adminConfiguration.ClientSecret; + options.ResponseType = adminConfiguration.OidcResponseType; + + options.Scope.Clear(); + foreach (var scope in adminConfiguration.Scopes) + { + options.Scope.Add(scope); + } + + options.ClaimActions.MapJsonKey(adminConfiguration.TokenValidationClaimRole, adminConfiguration.TokenValidationClaimRole, adminConfiguration.TokenValidationClaimRole); + + options.SaveTokens = true; + + options.GetClaimsFromUserInfoEndpoint = true; + + options.TokenValidationParameters = new TokenValidationParameters + { + NameClaimType = adminConfiguration.TokenValidationClaimName, + RoleClaimType = adminConfiguration.TokenValidationClaimRole + }; + + options.Events = new OpenIdConnectEvents + { + OnMessageReceived = context => OnMessageReceived(context, adminConfiguration), + OnRedirectToIdentityProvider = context => OnRedirectToIdentityProvider(context, adminConfiguration) + }; + }); + } + + + private static Task OnMessageReceived(MessageReceivedContext context, AdminConfiguration adminConfiguration) + { + context.Properties.IsPersistent = true; + context.Properties.ExpiresUtc = new DateTimeOffset(DateTime.Now.AddHours(adminConfiguration.IdentityAdminCookieExpiresUtcHours)); + + return Task.FromResult(0); + } + + private static Task OnRedirectToIdentityProvider(RedirectContext n, AdminConfiguration adminConfiguration) + { + n.ProtocolMessage.RedirectUri = adminConfiguration.IdentityAdminRedirectUri; + + return Task.FromResult(0); + } + + public static void AddIdSHealthChecks(this IServiceCollection services, IConfiguration configuration, AdminConfiguration adminConfiguration) + where TConfigurationDbContext : DbContext, IAdminConfigurationDbContext + where TPersistedGrantDbContext : DbContext, IAdminPersistedGrantDbContext + where TIdentityDbContext : DbContext + where TLogDbContext : DbContext, IAdminLogDbContext + where TAuditLoggingDbContext : DbContext, IAuditLoggingDbContext + where TDataProtectionDbContext : DbContext, IDataProtectionKeyContext + { + var configurationDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.ConfigurationDbConnectionStringKey); + var persistedGrantsDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.PersistedGrantDbConnectionStringKey); + var identityDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.IdentityDbConnectionStringKey); + var logDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.AdminLogDbConnectionStringKey); + var auditLogDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.AdminAuditLogDbConnectionStringKey); + var dataProtectionDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.DataProtectionDbConnectionStringKey); + + var identityServerUri = adminConfiguration.IdentityServerBaseUrl; + var healthChecksBuilder = services.AddHealthChecks() + .AddDbContextCheck("ConfigurationDbContext") + .AddDbContextCheck("PersistedGrantsDbContext") + .AddDbContextCheck("IdentityDbContext") + .AddDbContextCheck("LogDbContext") + .AddDbContextCheck("AuditLogDbContext") + .AddDbContextCheck("DataProtectionDbContext") + + .AddIdentityServer(new Uri(identityServerUri), "Identity Server"); + + var serviceProvider = services.BuildServiceProvider(); + var scopeFactory = serviceProvider.GetRequiredService(); + using (var scope = scopeFactory.CreateScope()) + { + var configurationTableName = DbContextHelpers.GetEntityTable(scope.ServiceProvider); + var persistedGrantTableName = DbContextHelpers.GetEntityTable(scope.ServiceProvider); + var identityTableName = DbContextHelpers.GetEntityTable(scope.ServiceProvider); + var logTableName = DbContextHelpers.GetEntityTable(scope.ServiceProvider); + var auditLogTableName = DbContextHelpers.GetEntityTable(scope.ServiceProvider); + var dataProtectionTableName = DbContextHelpers.GetEntityTable(scope.ServiceProvider); + + var databaseProvider = configuration.GetSection(nameof(DatabaseProviderConfiguration)).Get(); + switch (databaseProvider.ProviderType) + { + case DatabaseProviderType.SqlServer: + healthChecksBuilder + .AddSqlServer(configurationDbConnectionString, name: "ConfigurationDb", + healthQuery: $"SELECT TOP 1 * FROM dbo.[{configurationTableName}]") + .AddSqlServer(persistedGrantsDbConnectionString, name: "PersistentGrantsDb", + healthQuery: $"SELECT TOP 1 * FROM dbo.[{persistedGrantTableName}]") + .AddSqlServer(identityDbConnectionString, name: "IdentityDb", + healthQuery: $"SELECT TOP 1 * FROM dbo.[{identityTableName}]") + .AddSqlServer(logDbConnectionString, name: "LogDb", + healthQuery: $"SELECT TOP 1 * FROM dbo.[{logTableName}]") + .AddSqlServer(auditLogDbConnectionString, name: "AuditLogDb", + healthQuery: $"SELECT TOP 1 * FROM dbo.[{auditLogTableName}]") + .AddSqlServer(dataProtectionDbConnectionString, name: "DataProtectionDb", + healthQuery: $"SELECT TOP 1 * FROM dbo.[{dataProtectionTableName}]"); + break; + case DatabaseProviderType.PostgreSQL: + healthChecksBuilder + .AddNpgSql(configurationDbConnectionString, name: "ConfigurationDb", + healthQuery: $"SELECT * FROM \"{configurationTableName}\" LIMIT 1") + .AddNpgSql(persistedGrantsDbConnectionString, name: "PersistentGrantsDb", + healthQuery: $"SELECT * FROM \"{persistedGrantTableName}\" LIMIT 1") + .AddNpgSql(identityDbConnectionString, name: "IdentityDb", + healthQuery: $"SELECT * FROM \"{identityTableName}\" LIMIT 1") + .AddNpgSql(logDbConnectionString, name: "LogDb", + healthQuery: $"SELECT * FROM \"{logTableName}\" LIMIT 1") + .AddNpgSql(auditLogDbConnectionString, name: "AuditLogDb", + healthQuery: $"SELECT * FROM \"{auditLogTableName}\" LIMIT 1") + .AddNpgSql(dataProtectionDbConnectionString, name: "DataProtectionDb", + healthQuery: $"SELECT * FROM \"{dataProtectionTableName}\" LIMIT 1"); + break; + case DatabaseProviderType.MySql: + healthChecksBuilder + .AddMySql(configurationDbConnectionString, name: "ConfigurationDb") + .AddMySql(persistedGrantsDbConnectionString, name: "PersistentGrantsDb") + .AddMySql(identityDbConnectionString, name: "IdentityDb") + .AddMySql(logDbConnectionString, name: "LogDb") + .AddMySql(auditLogDbConnectionString, name: "AuditLogDb") + .AddMySql(dataProtectionDbConnectionString, name: "DataProtectionDb"); + break; + default: + throw new NotImplementedException($"Health checks not defined for database provider {databaseProvider.ProviderType}"); + } + } + } + } +} diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj b/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj index 1b2fab6b7..2914e900b 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj +++ b/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj @@ -150,9 +150,25 @@ + + + + + + + + + + + + + + + + diff --git a/src/Skoruba.IdentityServer4.Admin/Helpers/StartupHelpers.cs b/src/Skoruba.IdentityServer4.Admin/Helpers/StartupHelpers.cs index caf0c7c0c..45903236a 100644 --- a/src/Skoruba.IdentityServer4.Admin/Helpers/StartupHelpers.cs +++ b/src/Skoruba.IdentityServer4.Admin/Helpers/StartupHelpers.cs @@ -50,117 +50,6 @@ namespace Skoruba.IdentityServer4.Admin.Helpers { public static class StartupHelpers { - public static IServiceCollection AddAuditEventLogging(this IServiceCollection services, IConfiguration configuration) - where TAuditLog : AuditLog, new() - where TAuditLoggingDbContext : IAuditLoggingDbContext - { - var auditLoggingConfiguration = configuration.GetSection(nameof(AuditLoggingConfiguration)).Get(); - - services.AddAuditLogging(options => { options.Source = auditLoggingConfiguration.Source; }) - .AddDefaultHttpEventData(subjectOptions => - { - subjectOptions.SubjectIdentifierClaim = auditLoggingConfiguration.SubjectIdentifierClaim; - subjectOptions.SubjectNameClaim = auditLoggingConfiguration.SubjectNameClaim; - }, - actionOptions => - { - actionOptions.IncludeFormVariables = auditLoggingConfiguration.IncludeFormVariables; - }) - .AddAuditSinks>(); - - // repository for library - services.AddTransient, AuditLoggingRepository>(); - - // repository and service for admin - services.AddTransient, AuditLogRepository>(); - services.AddTransient>(); - - return services; - } - - /// - /// Register DbContexts for IdentityServer ConfigurationStore and PersistedGrants, Identity and Logging - /// Configure the connection strings in AppSettings.json - /// - /// - /// - /// - /// - /// - /// - /// - public static void RegisterDbContexts(this IServiceCollection services, IConfiguration configuration) - where TIdentityDbContext : DbContext - where TPersistedGrantDbContext : DbContext, IAdminPersistedGrantDbContext - where TConfigurationDbContext : DbContext, IAdminConfigurationDbContext - where TLogDbContext : DbContext, IAdminLogDbContext - where TAuditLoggingDbContext : DbContext, IAuditLoggingDbContext - where TDataProtectionDbContext : DbContext, IDataProtectionKeyContext - { - var databaseProvider = configuration.GetSection(nameof(DatabaseProviderConfiguration)).Get(); - - var identityConnectionString = configuration.GetConnectionString(ConfigurationConsts.IdentityDbConnectionStringKey); - var configurationConnectionString = configuration.GetConnectionString(ConfigurationConsts.ConfigurationDbConnectionStringKey); - var persistedGrantsConnectionString = configuration.GetConnectionString(ConfigurationConsts.PersistedGrantDbConnectionStringKey); - var errorLoggingConnectionString = configuration.GetConnectionString(ConfigurationConsts.AdminLogDbConnectionStringKey); - var auditLoggingConnectionString = configuration.GetConnectionString(ConfigurationConsts.AdminAuditLogDbConnectionStringKey); - var dataProtectionConnectionString = configuration.GetConnectionString(ConfigurationConsts.DataProtectionDbConnectionStringKey); - - switch (databaseProvider.ProviderType) - { - case DatabaseProviderType.SqlServer: - services.RegisterSqlServerDbContexts(identityConnectionString, configurationConnectionString, persistedGrantsConnectionString, errorLoggingConnectionString, auditLoggingConnectionString, dataProtectionConnectionString); - break; - case DatabaseProviderType.PostgreSQL: - services.RegisterNpgSqlDbContexts(identityConnectionString, configurationConnectionString, persistedGrantsConnectionString, errorLoggingConnectionString, auditLoggingConnectionString, dataProtectionConnectionString); - break; - case DatabaseProviderType.MySql: - services.RegisterMySqlDbContexts(identityConnectionString, configurationConnectionString, persistedGrantsConnectionString, errorLoggingConnectionString, auditLoggingConnectionString, dataProtectionConnectionString); - break; - default: - throw new ArgumentOutOfRangeException(nameof(databaseProvider.ProviderType), $@"The value needs to be one of {string.Join(", ", Enum.GetNames(typeof(DatabaseProviderType)))}."); - } - } - - /// - /// Register in memory DbContexts for IdentityServer ConfigurationStore and PersistedGrants, Identity and Logging - /// For testing purpose only - /// - /// - /// - /// - /// - /// - /// - public static void RegisterDbContextsStaging(this IServiceCollection services) - where TIdentityDbContext : DbContext - where TPersistedGrantDbContext : DbContext, IAdminPersistedGrantDbContext - where TConfigurationDbContext : DbContext, IAdminConfigurationDbContext - where TLogDbContext : DbContext, IAdminLogDbContext - where TAuditLoggingDbContext : DbContext, IAuditLoggingDbContext - where TDataProtectionDbContext : DbContext, IDataProtectionKeyContext - { - var persistedGrantsDatabaseName = Guid.NewGuid().ToString(); - var configurationDatabaseName = Guid.NewGuid().ToString(); - var logDatabaseName = Guid.NewGuid().ToString(); - var identityDatabaseName = Guid.NewGuid().ToString(); - var auditLoggingDatabaseName = Guid.NewGuid().ToString(); - var dataProtectionDatabaseName = Guid.NewGuid().ToString(); - - var operationalStoreOptions = new OperationalStoreOptions(); - services.AddSingleton(operationalStoreOptions); - - var storeOptions = new ConfigurationStoreOptions(); - services.AddSingleton(storeOptions); - - services.AddDbContext(optionsBuilder => optionsBuilder.UseInMemoryDatabase(identityDatabaseName)); - services.AddDbContext(optionsBuilder => optionsBuilder.UseInMemoryDatabase(persistedGrantsDatabaseName)); - services.AddDbContext(optionsBuilder => optionsBuilder.UseInMemoryDatabase(configurationDatabaseName)); - services.AddDbContext(optionsBuilder => optionsBuilder.UseInMemoryDatabase(logDatabaseName)); - services.AddDbContext(optionsBuilder => optionsBuilder.UseInMemoryDatabase(auditLoggingDatabaseName)); - services.AddDbContext(optionsBuilder => optionsBuilder.UseInMemoryDatabase(dataProtectionDatabaseName)); - } - /// /// Using of Forwarded Headers, Hsts, XXssProtection and Csp /// @@ -226,316 +115,5 @@ public static void UseSecurityHeaders(this IApplicationBuilder app, IConfigurati }); } } - - /// - /// Add middleware for localization - /// - /// - public static void ConfigureLocalization(this IApplicationBuilder app) - { - var options = app.ApplicationServices.GetService>(); - app.UseRequestLocalization(options.Value); - } - - /// - /// Add authorization policies - /// - /// - public static void AddAuthorizationPolicies(this IServiceCollection services, IRootConfiguration rootConfiguration) - { - services.AddAuthorization(options => - { - options.AddPolicy(AuthorizationConsts.AdministrationPolicy, - policy => policy.RequireRole(rootConfiguration.AdminConfiguration.AdministrationRole)); - }); - } - - /// - /// Add exception filter for controller - /// - /// - public static void AddMvcExceptionFilters(this IServiceCollection services) - { - //Exception handling - services.AddScoped(); - } - - /// - /// Register services for MVC and localization including available languages - /// - /// - public static void AddMvcWithLocalization(this IServiceCollection services, IConfiguration configuration) - where TUserDto : UserDto, new() - where TRoleDto : RoleDto, new() - where TUser : IdentityUser - where TRole : IdentityRole - where TKey : IEquatable - where TUserClaim : IdentityUserClaim - where TUserRole : IdentityUserRole - where TUserLogin : IdentityUserLogin - where TRoleClaim : IdentityRoleClaim - where TUserToken : IdentityUserToken - where TUsersDto : UsersDto - where TRolesDto : RolesDto - where TUserRolesDto : UserRolesDto - where TUserClaimsDto : UserClaimsDto - where TUserProviderDto : UserProviderDto - where TUserProvidersDto : UserProvidersDto - where TUserChangePasswordDto : UserChangePasswordDto - where TRoleClaimsDto : RoleClaimsDto - where TUserClaimDto : UserClaimDto - where TRoleClaimDto: RoleClaimDto - { - services.AddSingleton(); - - services.AddLocalization(opts => { opts.ResourcesPath = ConfigurationConsts.ResourcesPath; }); - - services.TryAddTransient(typeof(IGenericControllerLocalizer<>), typeof(GenericControllerLocalizer<>)); - - services.AddControllersWithViews(o => - { - o.Conventions.Add(new GenericControllerRouteConvention()); - }) - .AddViewLocalization( - LanguageViewLocationExpanderFormat.Suffix, - opts => { opts.ResourcesPath = ConfigurationConsts.ResourcesPath; }) - .AddDataAnnotationsLocalization() - .ConfigureApplicationPartManager(m => - { - m.FeatureProviders.Add(new GenericTypeControllerFeatureProvider()); - }); - - var cultureConfiguration = configuration.GetSection(nameof(CultureConfiguration)).Get(); - services.Configure( - opts => - { - // If cultures are specified in the configuration, use them (making sure they are among the available cultures), - // otherwise use all the available cultures - var supportedCultureCodes = (cultureConfiguration?.Cultures?.Count > 0 ? - cultureConfiguration.Cultures.Intersect(CultureConfiguration.AvailableCultures) : - CultureConfiguration.AvailableCultures).ToArray(); - - if (!supportedCultureCodes.Any()) supportedCultureCodes = CultureConfiguration.AvailableCultures; - var supportedCultures = supportedCultureCodes.Select(c => new CultureInfo(c)).ToList(); - - // If the default culture is specified use it, otherwise use CultureConfiguration.DefaultRequestCulture ("en") - var defaultCultureCode = string.IsNullOrEmpty(cultureConfiguration?.DefaultCulture) ? - CultureConfiguration.DefaultRequestCulture : cultureConfiguration?.DefaultCulture; - - // If the default culture is not among the supported cultures, use the first supported culture as default - if (!supportedCultureCodes.Contains(defaultCultureCode)) defaultCultureCode = supportedCultureCodes.FirstOrDefault(); - - opts.DefaultRequestCulture = new RequestCulture(defaultCultureCode); - opts.SupportedCultures = supportedCultures; - opts.SupportedUICultures = supportedCultures; - }); - } - - public static void AddAuthenticationServicesStaging( - this IServiceCollection services) - where TContext : DbContext where TUserIdentity : class where TUserIdentityRole : class - { - services.AddIdentity(options => - { - options.User.RequireUniqueEmail = true; - }) - .AddEntityFrameworkStores() - .AddDefaultTokenProviders(); - - services.AddAuthentication(options => - { - options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; - options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme; - - options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme; - options.DefaultForbidScheme = CookieAuthenticationDefaults.AuthenticationScheme; - options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme; - options.DefaultSignOutScheme = CookieAuthenticationDefaults.AuthenticationScheme; - }) - .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme); - } - - /// - /// Register services for authentication, including Identity. - /// For production mode is used OpenId Connect middleware which is connected to IdentityServer4 instance. - /// For testing purpose is used cookie middleware with fake login url. - /// - /// - /// - /// - /// - /// - public static void AddAuthenticationServices(this IServiceCollection services, IConfiguration configuration) - where TContext : DbContext where TUserIdentity : class where TUserIdentityRole : class - { - var adminConfiguration = configuration.GetSection(nameof(AdminConfiguration)).Get(); - - services.Configure(options => - { - options.MinimumSameSitePolicy = SameSiteMode.Unspecified; - options.Secure = CookieSecurePolicy.SameAsRequest; - options.OnAppendCookie = cookieContext => - AuthenticationHelpers.CheckSameSite(cookieContext.Context, cookieContext.CookieOptions); - options.OnDeleteCookie = cookieContext => - AuthenticationHelpers.CheckSameSite(cookieContext.Context, cookieContext.CookieOptions); - }); - - services - .AddIdentity(options => configuration.GetSection(nameof(IdentityOptions)).Bind(options)) - .AddEntityFrameworkStores() - .AddDefaultTokenProviders(); - - services.AddAuthentication(options => - { - options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; - options.DefaultChallengeScheme = AuthenticationConsts.OidcAuthenticationScheme; - - options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme; - options.DefaultForbidScheme = CookieAuthenticationDefaults.AuthenticationScheme; - options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme; - options.DefaultSignOutScheme = CookieAuthenticationDefaults.AuthenticationScheme; - }) - .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, - options => - { - options.Cookie.Name = adminConfiguration.IdentityAdminCookieName; - }) - .AddOpenIdConnect(AuthenticationConsts.OidcAuthenticationScheme, options => - { - options.Authority = adminConfiguration.IdentityServerBaseUrl; - options.RequireHttpsMetadata = adminConfiguration.RequireHttpsMetadata; - options.ClientId = adminConfiguration.ClientId; - options.ClientSecret = adminConfiguration.ClientSecret; - options.ResponseType = adminConfiguration.OidcResponseType; - - options.Scope.Clear(); - foreach (var scope in adminConfiguration.Scopes) - { - options.Scope.Add(scope); - } - - options.ClaimActions.MapJsonKey(adminConfiguration.TokenValidationClaimRole, adminConfiguration.TokenValidationClaimRole, adminConfiguration.TokenValidationClaimRole); - - options.SaveTokens = true; - - options.GetClaimsFromUserInfoEndpoint = true; - - options.TokenValidationParameters = new TokenValidationParameters - { - NameClaimType = adminConfiguration.TokenValidationClaimName, - RoleClaimType = adminConfiguration.TokenValidationClaimRole - }; - - options.Events = new OpenIdConnectEvents - { - OnMessageReceived = context => OnMessageReceived(context, adminConfiguration), - OnRedirectToIdentityProvider = context => OnRedirectToIdentityProvider(context, adminConfiguration) - }; - }); - } - - private static Task OnMessageReceived(MessageReceivedContext context, AdminConfiguration adminConfiguration) - { - context.Properties.IsPersistent = true; - context.Properties.ExpiresUtc = new DateTimeOffset(DateTime.Now.AddHours(adminConfiguration.IdentityAdminCookieExpiresUtcHours)); - - return Task.FromResult(0); - } - - private static Task OnRedirectToIdentityProvider(RedirectContext n, AdminConfiguration adminConfiguration) - { - n.ProtocolMessage.RedirectUri = adminConfiguration.IdentityAdminRedirectUri; - - return Task.FromResult(0); - } - - public static void AddIdSHealthChecks(this IServiceCollection services, IConfiguration configuration, AdminConfiguration adminConfiguration) - where TConfigurationDbContext : DbContext, IAdminConfigurationDbContext - where TPersistedGrantDbContext : DbContext, IAdminPersistedGrantDbContext - where TIdentityDbContext : DbContext - where TLogDbContext : DbContext, IAdminLogDbContext - where TAuditLoggingDbContext : DbContext, IAuditLoggingDbContext - where TDataProtectionDbContext : DbContext, IDataProtectionKeyContext - { - var configurationDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.ConfigurationDbConnectionStringKey); - var persistedGrantsDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.PersistedGrantDbConnectionStringKey); - var identityDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.IdentityDbConnectionStringKey); - var logDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.AdminLogDbConnectionStringKey); - var auditLogDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.AdminAuditLogDbConnectionStringKey); - var dataProtectionDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.DataProtectionDbConnectionStringKey); - - var identityServerUri = adminConfiguration.IdentityServerBaseUrl; - var healthChecksBuilder = services.AddHealthChecks() - .AddDbContextCheck("ConfigurationDbContext") - .AddDbContextCheck("PersistedGrantsDbContext") - .AddDbContextCheck("IdentityDbContext") - .AddDbContextCheck("LogDbContext") - .AddDbContextCheck("AuditLogDbContext") - .AddDbContextCheck("DataProtectionDbContext") - - .AddIdentityServer(new Uri(identityServerUri), "Identity Server"); - - var serviceProvider = services.BuildServiceProvider(); - var scopeFactory = serviceProvider.GetRequiredService(); - using (var scope = scopeFactory.CreateScope()) - { - var configurationTableName = DbContextHelpers.GetEntityTable(scope.ServiceProvider); - var persistedGrantTableName = DbContextHelpers.GetEntityTable(scope.ServiceProvider); - var identityTableName = DbContextHelpers.GetEntityTable(scope.ServiceProvider); - var logTableName = DbContextHelpers.GetEntityTable(scope.ServiceProvider); - var auditLogTableName = DbContextHelpers.GetEntityTable(scope.ServiceProvider); - var dataProtectionTableName = DbContextHelpers.GetEntityTable(scope.ServiceProvider); - - var databaseProvider = configuration.GetSection(nameof(DatabaseProviderConfiguration)).Get(); - switch (databaseProvider.ProviderType) - { - case DatabaseProviderType.SqlServer: - healthChecksBuilder - .AddSqlServer(configurationDbConnectionString, name: "ConfigurationDb", - healthQuery: $"SELECT TOP 1 * FROM dbo.[{configurationTableName}]") - .AddSqlServer(persistedGrantsDbConnectionString, name: "PersistentGrantsDb", - healthQuery: $"SELECT TOP 1 * FROM dbo.[{persistedGrantTableName}]") - .AddSqlServer(identityDbConnectionString, name: "IdentityDb", - healthQuery: $"SELECT TOP 1 * FROM dbo.[{identityTableName}]") - .AddSqlServer(logDbConnectionString, name: "LogDb", - healthQuery: $"SELECT TOP 1 * FROM dbo.[{logTableName}]") - .AddSqlServer(auditLogDbConnectionString, name: "AuditLogDb", - healthQuery: $"SELECT TOP 1 * FROM dbo.[{auditLogTableName}]") - .AddSqlServer(dataProtectionDbConnectionString, name: "DataProtectionDb", - healthQuery: $"SELECT TOP 1 * FROM dbo.[{dataProtectionTableName}]"); - break; - case DatabaseProviderType.PostgreSQL: - healthChecksBuilder - .AddNpgSql(configurationDbConnectionString, name: "ConfigurationDb", - healthQuery: $"SELECT * FROM \"{configurationTableName}\" LIMIT 1") - .AddNpgSql(persistedGrantsDbConnectionString, name: "PersistentGrantsDb", - healthQuery: $"SELECT * FROM \"{persistedGrantTableName}\" LIMIT 1") - .AddNpgSql(identityDbConnectionString, name: "IdentityDb", - healthQuery: $"SELECT * FROM \"{identityTableName}\" LIMIT 1") - .AddNpgSql(logDbConnectionString, name: "LogDb", - healthQuery: $"SELECT * FROM \"{logTableName}\" LIMIT 1") - .AddNpgSql(auditLogDbConnectionString, name: "AuditLogDb", - healthQuery: $"SELECT * FROM \"{auditLogTableName}\" LIMIT 1") - .AddNpgSql(dataProtectionDbConnectionString, name: "DataProtectionDb", - healthQuery: $"SELECT * FROM \"{dataProtectionTableName}\" LIMIT 1"); - break; - case DatabaseProviderType.MySql: - healthChecksBuilder - .AddMySql(configurationDbConnectionString, name: "ConfigurationDb") - .AddMySql(persistedGrantsDbConnectionString, name: "PersistentGrantsDb") - .AddMySql(identityDbConnectionString, name: "IdentityDb") - .AddMySql(logDbConnectionString, name: "LogDb") - .AddMySql(auditLogDbConnectionString, name: "AuditLogDb") - .AddMySql(dataProtectionDbConnectionString, name: "DataProtectionDb"); - break; - default: - throw new NotImplementedException($"Health checks not defined for database provider {databaseProvider.ProviderType}"); - } - } - } } } From 0826297c11a9eeed7d5c564eac16ceff16dfce9d Mon Sep 17 00:00:00 2001 From: Brice Date: Wed, 6 Jan 2021 16:46:17 +0100 Subject: [PATCH 05/38] Removed bogus project dependency --- .../Skoruba.IdentityServer4.Admin.UI.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj b/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj index 2914e900b..c5d9bd678 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj +++ b/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj @@ -167,7 +167,6 @@ - From 2c47365042ccc3eac0126862148d539ec3bab1fd Mon Sep 17 00:00:00 2001 From: Brice Date: Thu, 7 Jan 2021 10:07:02 +0100 Subject: [PATCH 06/38] Removed now unused namespace imports in map app startup helpers --- .../Helpers/StartupHelpers.cs | 44 +------------------ 1 file changed, 2 insertions(+), 42 deletions(-) diff --git a/src/Skoruba.IdentityServer4.Admin/Helpers/StartupHelpers.cs b/src/Skoruba.IdentityServer4.Admin/Helpers/StartupHelpers.cs index 45903236a..1d90dca6e 100644 --- a/src/Skoruba.IdentityServer4.Admin/Helpers/StartupHelpers.cs +++ b/src/Skoruba.IdentityServer4.Admin/Helpers/StartupHelpers.cs @@ -1,54 +1,14 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Threading.Tasks; -using IdentityServer4.EntityFramework.Options; -using Microsoft.AspNetCore.Authentication; -using Microsoft.AspNetCore.Authentication.Cookies; -using Microsoft.AspNetCore.Authentication.OpenIdConnect; +using System.Collections.Generic; using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.HttpOverrides; -using Microsoft.AspNetCore.Identity; -using Microsoft.AspNetCore.Localization; -using Microsoft.AspNetCore.Mvc.Razor; -using Microsoft.AspNetCore.Mvc.ViewFeatures; -using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.DependencyInjection.Extensions; -using Microsoft.Extensions.Options; -using Microsoft.IdentityModel.Tokens; -using Skoruba.AuditLogging.EntityFramework.DbContexts; -using Skoruba.AuditLogging.EntityFramework.Entities; -using Skoruba.AuditLogging.EntityFramework.Extensions; -using Skoruba.AuditLogging.EntityFramework.Repositories; -using Skoruba.AuditLogging.EntityFramework.Services; -using Skoruba.IdentityServer4.Admin.BusinessLogic.Identity.Dtos.Identity; -using Skoruba.IdentityServer4.Admin.BusinessLogic.Services; -using Skoruba.IdentityServer4.Admin.BusinessLogic.Services.Interfaces; -using Skoruba.IdentityServer4.Admin.ExceptionHandling; -using Skoruba.IdentityServer4.Admin.Configuration; -using Skoruba.IdentityServer4.Admin.Configuration.ApplicationParts; using Skoruba.IdentityServer4.Admin.Configuration.Constants; -using Skoruba.IdentityServer4.Admin.Configuration.Interfaces; -using Skoruba.IdentityServer4.Admin.EntityFramework.Interfaces; -using Skoruba.IdentityServer4.Admin.EntityFramework.Repositories; -using Skoruba.IdentityServer4.Admin.EntityFramework.Repositories.Interfaces; -using Skoruba.IdentityServer4.Admin.Helpers.Localization; using System.Linq; -using Skoruba.IdentityServer4.Admin.EntityFramework.MySql.Extensions; -using Skoruba.IdentityServer4.Admin.EntityFramework.Shared.Configuration; -using Skoruba.IdentityServer4.Admin.EntityFramework.SqlServer.Extensions; -using Skoruba.IdentityServer4.Admin.EntityFramework.PostgreSQL.Extensions; -using Skoruba.IdentityServer4.Admin.EntityFramework.Helpers; -using Microsoft.AspNetCore.DataProtection.EntityFrameworkCore; -using Skoruba.IdentityServer4.Shared.Authentication; -using Skoruba.IdentityServer4.Shared.Configuration.Identity; namespace Skoruba.IdentityServer4.Admin.Helpers { - public static class StartupHelpers + public static class StartupHelpers { /// /// Using of Forwarded Headers, Hsts, XXssProtection and Csp From c2024331eafddd7d47087fe13736f53bd01e0257 Mon Sep 17 00:00:00 2001 From: Brice Date: Thu, 7 Jan 2021 10:09:28 +0100 Subject: [PATCH 07/38] Moved styles and scripts and more helpers to UI project --- .../Configuration/RootConfiguration.cs | 0 .../Helpers/Identity/IdentityErrorMessages.cs | 0 .../Scripts/App/components/DatePicker.js | 0 .../Scripts/App/components/Menu.js | 0 .../Scripts/App/components/Picker.es5.js | 0 .../Scripts/App/components/Picker.es5.min.js | 0 .../Scripts/App/components/Picker.js | 0 .../Scripts/App/components/Picker.min.js | 0 .../Scripts/App/components/Theme.js | 0 .../Scripts/App/helpers/DateTimeHelpers.js | 0 .../Scripts/App/helpers/FormMvcHelpers.js | 0 .../Scripts/App/helpers/jsontree.min.js | 0 .../Scripts/App/pages/AuditLog.js | 0 .../Scripts/App/pages/ErrorsLog.js | 0 .../Scripts/App/pages/Secrets.js | 0 .../Styles/common/_all.scss | 0 .../Styles/common/common.scss | 0 .../Styles/common/fonts.scss | 0 .../Styles/common/form.scss | 0 .../Styles/common/margin.css | 0 .../Styles/common/margin.min.css | 0 .../Styles/common/margin.scss | 0 .../Styles/common/padding.css | 0 .../Styles/common/padding.min.css | 0 .../Styles/common/padding.scss | 0 .../Styles/controls/_all.scss | 0 .../Styles/controls/checkbox.scss | 0 .../Styles/controls/jsontree.css | 0 .../Styles/controls/navbar.scss | 0 .../Styles/controls/picker.scss | 0 .../Styles/controls/radio.scss | 0 .../Styles/controls/toastr.scss | 0 .../Styles/controls/validation.summary.css | 0 .../Styles/controls/validation.summary.min.css | 0 .../Styles/controls/validation.summary.scss | 0 .../Styles/pages/_all.scss | 0 .../Styles/pages/auditlog.scss | 0 .../Styles/pages/client.scss | 0 .../Styles/web.css | 0 .../Styles/web.min.css | 0 .../Styles/web.scss | 0 .../ViewComponents/IdentityServerLinkViewComponent.cs | 0 42 files changed, 0 insertions(+), 0 deletions(-) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Configuration/RootConfiguration.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Helpers/Identity/IdentityErrorMessages.cs (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Scripts/App/components/DatePicker.js (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Scripts/App/components/Menu.js (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Scripts/App/components/Picker.es5.js (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Scripts/App/components/Picker.es5.min.js (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Scripts/App/components/Picker.js (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Scripts/App/components/Picker.min.js (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Scripts/App/components/Theme.js (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Scripts/App/helpers/DateTimeHelpers.js (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Scripts/App/helpers/FormMvcHelpers.js (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Scripts/App/helpers/jsontree.min.js (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Scripts/App/pages/AuditLog.js (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Scripts/App/pages/ErrorsLog.js (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Scripts/App/pages/Secrets.js (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/common/_all.scss (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/common/common.scss (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/common/fonts.scss (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/common/form.scss (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/common/margin.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/common/margin.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/common/margin.scss (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/common/padding.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/common/padding.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/common/padding.scss (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/controls/_all.scss (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/controls/checkbox.scss (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/controls/jsontree.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/controls/navbar.scss (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/controls/picker.scss (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/controls/radio.scss (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/controls/toastr.scss (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/controls/validation.summary.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/controls/validation.summary.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/controls/validation.summary.scss (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/pages/_all.scss (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/pages/auditlog.scss (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/pages/client.scss (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/web.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/web.min.css (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Styles/web.scss (100%) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/ViewComponents/IdentityServerLinkViewComponent.cs (100%) diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/RootConfiguration.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/RootConfiguration.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Configuration/RootConfiguration.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Configuration/RootConfiguration.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Helpers/Identity/IdentityErrorMessages.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/Identity/IdentityErrorMessages.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Helpers/Identity/IdentityErrorMessages.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Helpers/Identity/IdentityErrorMessages.cs diff --git a/src/Skoruba.IdentityServer4.Admin/Scripts/App/components/DatePicker.js b/src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/components/DatePicker.js similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Scripts/App/components/DatePicker.js rename to src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/components/DatePicker.js diff --git a/src/Skoruba.IdentityServer4.Admin/Scripts/App/components/Menu.js b/src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/components/Menu.js similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Scripts/App/components/Menu.js rename to src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/components/Menu.js diff --git a/src/Skoruba.IdentityServer4.Admin/Scripts/App/components/Picker.es5.js b/src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/components/Picker.es5.js similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Scripts/App/components/Picker.es5.js rename to src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/components/Picker.es5.js diff --git a/src/Skoruba.IdentityServer4.Admin/Scripts/App/components/Picker.es5.min.js b/src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/components/Picker.es5.min.js similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Scripts/App/components/Picker.es5.min.js rename to src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/components/Picker.es5.min.js diff --git a/src/Skoruba.IdentityServer4.Admin/Scripts/App/components/Picker.js b/src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/components/Picker.js similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Scripts/App/components/Picker.js rename to src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/components/Picker.js diff --git a/src/Skoruba.IdentityServer4.Admin/Scripts/App/components/Picker.min.js b/src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/components/Picker.min.js similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Scripts/App/components/Picker.min.js rename to src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/components/Picker.min.js diff --git a/src/Skoruba.IdentityServer4.Admin/Scripts/App/components/Theme.js b/src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/components/Theme.js similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Scripts/App/components/Theme.js rename to src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/components/Theme.js diff --git a/src/Skoruba.IdentityServer4.Admin/Scripts/App/helpers/DateTimeHelpers.js b/src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/helpers/DateTimeHelpers.js similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Scripts/App/helpers/DateTimeHelpers.js rename to src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/helpers/DateTimeHelpers.js diff --git a/src/Skoruba.IdentityServer4.Admin/Scripts/App/helpers/FormMvcHelpers.js b/src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/helpers/FormMvcHelpers.js similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Scripts/App/helpers/FormMvcHelpers.js rename to src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/helpers/FormMvcHelpers.js diff --git a/src/Skoruba.IdentityServer4.Admin/Scripts/App/helpers/jsontree.min.js b/src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/helpers/jsontree.min.js similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Scripts/App/helpers/jsontree.min.js rename to src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/helpers/jsontree.min.js diff --git a/src/Skoruba.IdentityServer4.Admin/Scripts/App/pages/AuditLog.js b/src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/pages/AuditLog.js similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Scripts/App/pages/AuditLog.js rename to src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/pages/AuditLog.js diff --git a/src/Skoruba.IdentityServer4.Admin/Scripts/App/pages/ErrorsLog.js b/src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/pages/ErrorsLog.js similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Scripts/App/pages/ErrorsLog.js rename to src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/pages/ErrorsLog.js diff --git a/src/Skoruba.IdentityServer4.Admin/Scripts/App/pages/Secrets.js b/src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/pages/Secrets.js similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Scripts/App/pages/Secrets.js rename to src/Skoruba.IdentityServer4.Admin.UI/Scripts/App/pages/Secrets.js diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/common/_all.scss b/src/Skoruba.IdentityServer4.Admin.UI/Styles/common/_all.scss similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/common/_all.scss rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/common/_all.scss diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/common/common.scss b/src/Skoruba.IdentityServer4.Admin.UI/Styles/common/common.scss similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/common/common.scss rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/common/common.scss diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/common/fonts.scss b/src/Skoruba.IdentityServer4.Admin.UI/Styles/common/fonts.scss similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/common/fonts.scss rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/common/fonts.scss diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/common/form.scss b/src/Skoruba.IdentityServer4.Admin.UI/Styles/common/form.scss similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/common/form.scss rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/common/form.scss diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/common/margin.css b/src/Skoruba.IdentityServer4.Admin.UI/Styles/common/margin.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/common/margin.css rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/common/margin.css diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/common/margin.min.css b/src/Skoruba.IdentityServer4.Admin.UI/Styles/common/margin.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/common/margin.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/common/margin.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/common/margin.scss b/src/Skoruba.IdentityServer4.Admin.UI/Styles/common/margin.scss similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/common/margin.scss rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/common/margin.scss diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/common/padding.css b/src/Skoruba.IdentityServer4.Admin.UI/Styles/common/padding.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/common/padding.css rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/common/padding.css diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/common/padding.min.css b/src/Skoruba.IdentityServer4.Admin.UI/Styles/common/padding.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/common/padding.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/common/padding.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/common/padding.scss b/src/Skoruba.IdentityServer4.Admin.UI/Styles/common/padding.scss similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/common/padding.scss rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/common/padding.scss diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/controls/_all.scss b/src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/_all.scss similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/controls/_all.scss rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/_all.scss diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/controls/checkbox.scss b/src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/checkbox.scss similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/controls/checkbox.scss rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/checkbox.scss diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/controls/jsontree.css b/src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/jsontree.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/controls/jsontree.css rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/jsontree.css diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/controls/navbar.scss b/src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/navbar.scss similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/controls/navbar.scss rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/navbar.scss diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/controls/picker.scss b/src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/picker.scss similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/controls/picker.scss rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/picker.scss diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/controls/radio.scss b/src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/radio.scss similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/controls/radio.scss rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/radio.scss diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/controls/toastr.scss b/src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/toastr.scss similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/controls/toastr.scss rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/toastr.scss diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/controls/validation.summary.css b/src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/validation.summary.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/controls/validation.summary.css rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/validation.summary.css diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/controls/validation.summary.min.css b/src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/validation.summary.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/controls/validation.summary.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/validation.summary.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/controls/validation.summary.scss b/src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/validation.summary.scss similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/controls/validation.summary.scss rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/controls/validation.summary.scss diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/pages/_all.scss b/src/Skoruba.IdentityServer4.Admin.UI/Styles/pages/_all.scss similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/pages/_all.scss rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/pages/_all.scss diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/pages/auditlog.scss b/src/Skoruba.IdentityServer4.Admin.UI/Styles/pages/auditlog.scss similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/pages/auditlog.scss rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/pages/auditlog.scss diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/pages/client.scss b/src/Skoruba.IdentityServer4.Admin.UI/Styles/pages/client.scss similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/pages/client.scss rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/pages/client.scss diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/web.css b/src/Skoruba.IdentityServer4.Admin.UI/Styles/web.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/web.css rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/web.css diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/web.min.css b/src/Skoruba.IdentityServer4.Admin.UI/Styles/web.min.css similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/web.min.css rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/web.min.css diff --git a/src/Skoruba.IdentityServer4.Admin/Styles/web.scss b/src/Skoruba.IdentityServer4.Admin.UI/Styles/web.scss similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/Styles/web.scss rename to src/Skoruba.IdentityServer4.Admin.UI/Styles/web.scss diff --git a/src/Skoruba.IdentityServer4.Admin/ViewComponents/IdentityServerLinkViewComponent.cs b/src/Skoruba.IdentityServer4.Admin.UI/ViewComponents/IdentityServerLinkViewComponent.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin/ViewComponents/IdentityServerLinkViewComponent.cs rename to src/Skoruba.IdentityServer4.Admin.UI/ViewComponents/IdentityServerLinkViewComponent.cs From 6f51e54c026b6058f37dfc9cdca5d1ba540ad6b4 Mon Sep 17 00:00:00 2001 From: Brice Date: Thu, 7 Jan 2021 11:25:56 +0100 Subject: [PATCH 08/38] Moved back root configuration to Admin app because database migration and seeding is probably out of scope of UI --- .../Configuration/Identity/Claim.cs | 0 .../Configuration/Identity/Role.cs | 0 .../Configuration/Identity/User.cs | 0 .../Configuration/IdentityDataConfiguration.cs | 0 .../Configuration/IdentityServer/Client.cs | 0 .../Configuration/IdentityServerDataConfiguration.cs | 0 .../Configuration/Interfaces/IRootConfiguration.cs | 0 .../Configuration/RootConfiguration.cs | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename src/{Skoruba.IdentityServer4.Admin.UI => Skoruba.IdentityServer4.Admin}/Configuration/Identity/Claim.cs (100%) rename src/{Skoruba.IdentityServer4.Admin.UI => Skoruba.IdentityServer4.Admin}/Configuration/Identity/Role.cs (100%) rename src/{Skoruba.IdentityServer4.Admin.UI => Skoruba.IdentityServer4.Admin}/Configuration/Identity/User.cs (100%) rename src/{Skoruba.IdentityServer4.Admin.UI => Skoruba.IdentityServer4.Admin}/Configuration/IdentityDataConfiguration.cs (100%) rename src/{Skoruba.IdentityServer4.Admin.UI => Skoruba.IdentityServer4.Admin}/Configuration/IdentityServer/Client.cs (100%) rename src/{Skoruba.IdentityServer4.Admin.UI => Skoruba.IdentityServer4.Admin}/Configuration/IdentityServerDataConfiguration.cs (100%) rename src/{Skoruba.IdentityServer4.Admin.UI => Skoruba.IdentityServer4.Admin}/Configuration/Interfaces/IRootConfiguration.cs (100%) rename src/{Skoruba.IdentityServer4.Admin.UI => Skoruba.IdentityServer4.Admin}/Configuration/RootConfiguration.cs (100%) diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Identity/Claim.cs b/src/Skoruba.IdentityServer4.Admin/Configuration/Identity/Claim.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin.UI/Configuration/Identity/Claim.cs rename to src/Skoruba.IdentityServer4.Admin/Configuration/Identity/Claim.cs diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Identity/Role.cs b/src/Skoruba.IdentityServer4.Admin/Configuration/Identity/Role.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin.UI/Configuration/Identity/Role.cs rename to src/Skoruba.IdentityServer4.Admin/Configuration/Identity/Role.cs diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Identity/User.cs b/src/Skoruba.IdentityServer4.Admin/Configuration/Identity/User.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin.UI/Configuration/Identity/User.cs rename to src/Skoruba.IdentityServer4.Admin/Configuration/Identity/User.cs diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/IdentityDataConfiguration.cs b/src/Skoruba.IdentityServer4.Admin/Configuration/IdentityDataConfiguration.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin.UI/Configuration/IdentityDataConfiguration.cs rename to src/Skoruba.IdentityServer4.Admin/Configuration/IdentityDataConfiguration.cs diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/IdentityServer/Client.cs b/src/Skoruba.IdentityServer4.Admin/Configuration/IdentityServer/Client.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin.UI/Configuration/IdentityServer/Client.cs rename to src/Skoruba.IdentityServer4.Admin/Configuration/IdentityServer/Client.cs diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/IdentityServerDataConfiguration.cs b/src/Skoruba.IdentityServer4.Admin/Configuration/IdentityServerDataConfiguration.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin.UI/Configuration/IdentityServerDataConfiguration.cs rename to src/Skoruba.IdentityServer4.Admin/Configuration/IdentityServerDataConfiguration.cs diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Interfaces/IRootConfiguration.cs b/src/Skoruba.IdentityServer4.Admin/Configuration/Interfaces/IRootConfiguration.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin.UI/Configuration/Interfaces/IRootConfiguration.cs rename to src/Skoruba.IdentityServer4.Admin/Configuration/Interfaces/IRootConfiguration.cs diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/RootConfiguration.cs b/src/Skoruba.IdentityServer4.Admin/Configuration/RootConfiguration.cs similarity index 100% rename from src/Skoruba.IdentityServer4.Admin.UI/Configuration/RootConfiguration.cs rename to src/Skoruba.IdentityServer4.Admin/Configuration/RootConfiguration.cs From 77a362a7e6eba911b1f29daf8df4e4e4e21c4b13 Mon Sep 17 00:00:00 2001 From: Brice Date: Thu, 7 Jan 2021 14:18:01 +0100 Subject: [PATCH 09/38] Moved startup service configuration to UI project through dependency injection helpers --- .../ConnectionStringsConfiguration.cs | 49 +++++++ .../Constants/ConfigurationConsts.cs | 2 + .../AdminUIServiceCollectionExtensions.cs | 134 ++++++++++++++++++ .../IdentityServer4AdminUIOptions.cs | 77 ++++++++++ .../Helpers/ServiceHelpers.cs | 57 ++++---- .../IdentityServerLinkViewComponent.cs | 10 +- .../Configuration/Test/StartupTest.cs | 31 ++-- src/Skoruba.IdentityServer4.Admin/Startup.cs | 120 +++++++++------- .../Helpers/StartupHelpers.cs | 5 +- 9 files changed, 380 insertions(+), 105 deletions(-) create mode 100644 src/Skoruba.IdentityServer4.Admin.UI/Configuration/ConnectionStringsConfiguration.cs create mode 100644 src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/AdminUIServiceCollectionExtensions.cs create mode 100644 src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/IdentityServer4AdminUIOptions.cs diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/ConnectionStringsConfiguration.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/ConnectionStringsConfiguration.cs new file mode 100644 index 000000000..aa905afa6 --- /dev/null +++ b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/ConnectionStringsConfiguration.cs @@ -0,0 +1,49 @@ +namespace Skoruba.IdentityServer4.Admin.Configuration +{ + public class ConnectionStringsConfiguration + { + public string ConfigurationDbConnection { get; set; } + + public string ConfigurationDbMigrationsAssembly { get; set; } + + public string PersistedGrantDbConnection { get; set; } + + public string PersistedGrantDbMigrationsAssembly { get; set; } + + public string AdminLogDbConnection { get; set; } + + public string AdminLogDbMigrationsAssembly { get; set; } + + public string IdentityDbConnection { get; set; } + + public string IdentityDbMigrationsAssembly { get; set; } + + public string AdminAuditLogDbConnection { get; set; } + + public string AdminAuditLogDbMigrationsAssembly { get; set; } + + public string DataProtectionDbConnection { get; set; } + + public string DataProtectionDbMigrationsAssembly { get; set; } + + public void SetConnections(string commonConnectionString) + { + AdminAuditLogDbConnection = commonConnectionString; + AdminLogDbConnection = commonConnectionString; + ConfigurationDbConnection = commonConnectionString; + DataProtectionDbConnection = commonConnectionString; + IdentityDbConnection = commonConnectionString; + PersistedGrantDbConnection = commonConnectionString; + } + + public void SetMigrationsAssemblies(string commonMigrationsAssembly) + { + AdminAuditLogDbMigrationsAssembly = commonMigrationsAssembly; + AdminLogDbMigrationsAssembly = commonMigrationsAssembly; + ConfigurationDbMigrationsAssembly = commonMigrationsAssembly; + DataProtectionDbMigrationsAssembly = commonMigrationsAssembly; + IdentityDbMigrationsAssembly = commonMigrationsAssembly; + PersistedGrantDbMigrationsAssembly = commonMigrationsAssembly; + } + } +} diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/ConfigurationConsts.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/ConfigurationConsts.cs index 7e905d009..af1aa9466 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/ConfigurationConsts.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/ConfigurationConsts.cs @@ -16,6 +16,8 @@ public class ConfigurationConsts public const string ResourcesPath = "Resources"; + public const string ConnectionStringsKey = "ConnectionStrings"; + public const string AdminConfigurationKey = "AdminConfiguration"; public const string IdentityServerDataConfigurationKey = "IdentityServerData"; diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/AdminUIServiceCollectionExtensions.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/AdminUIServiceCollectionExtensions.cs new file mode 100644 index 000000000..0210a2f29 --- /dev/null +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/AdminUIServiceCollectionExtensions.cs @@ -0,0 +1,134 @@ +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Identity.EntityFrameworkCore; +using Skoruba.AuditLogging.EntityFramework.Entities; +using Skoruba.IdentityServer4.Admin.BusinessLogic.Identity.Dtos.Identity; +using Skoruba.IdentityServer4.Admin.EntityFramework.Shared.DbContexts; +using Skoruba.IdentityServer4.Admin.EntityFramework.Shared.Entities.Identity; +using Skoruba.IdentityServer4.Admin.Helpers; +using Skoruba.IdentityServer4.Shared.Dtos; +using Skoruba.IdentityServer4.Shared.Dtos.Identity; +using Skoruba.IdentityServer4.Shared.Helpers; +using System; + +namespace Microsoft.Extensions.DependencyInjection +{ + public static class AdminUIServiceCollectionExtensions + { + /// + /// Adds the Skoruba IdentityServer4 Admin UI with default entities. + /// + /// + /// + /// + public static IServiceCollection AddIdentityServer4AdminUI(this IServiceCollection services, Action optionsAction) + => AddIdentityServer4AdminUI(services, optionsAction); + + + /// + /// Adds the Skoruba IdentityServer4 Admin UI with custom entity and database contexts. + /// + /// + /// + /// + public static IServiceCollection AddIdentityServer4AdminUI + (this IServiceCollection services, Action optionsAction) + where TIdentityDbContext : IdentityDbContext + where TUser : IdentityUser + where TRole : IdentityRole + where TUserClaim : IdentityUserClaim + where TUserRole : IdentityUserRole + where TUserLogin : IdentityUserLogin + where TRoleClaim : IdentityRoleClaim + where TUserToken : IdentityUserToken + where TKey : IEquatable + where TUserDto : UserDto, new() + where TRoleDto : RoleDto, new() + where TUsersDto : UsersDto + where TRolesDto : RolesDto + where TUserRolesDto : UserRolesDto + where TUserClaimsDto : UserClaimsDto + where TUserProviderDto : UserProviderDto + where TUserProvidersDto : UserProvidersDto + where TUserChangePasswordDto : UserChangePasswordDto + where TRoleClaimsDto : RoleClaimsDto + where TUserClaimDto : UserClaimDto + where TRoleClaimDto : RoleClaimDto + { + // Builds the options from user preferences or configuration. + IdentityServer4AdminUIOptions options = new IdentityServer4AdminUIOptions(); + optionsAction(options); + + // Add DbContexts for Asp.Net Core Identity, Logging and IdentityServer - Configuration store and Operational store + if (!options.IsStaging) + { + services.RegisterDbContexts(options.ConnectionStrings, options.DatabaseProvider); + } + else + { + services.RegisterDbContextsStaging(); + } + + + // Save data protection keys to db, using a common application name shared between Admin and STS + services.AddDataProtection(options.DataProtection, options.AzureKeyVault); + + // Add Asp.Net Core Identity Configuration and OpenIdConnect auth as well + if (!options.IsStaging) + { + services.AddAuthenticationServices + (options.Admin, options.IdentityAction); + } + else + { + services.AddAuthenticationServicesStaging(); + } + + // Add exception filters in MVC + services.AddMvcExceptionFilters(); + + // Add all dependencies for IdentityServer Admin + services.AddAdminServices(); + + // Add all dependencies for Asp.Net Core Identity + // If you want to change primary keys or use another db model for Asp.Net Core Identity: + services.AddAdminAspNetIdentityServices(); + + // Add all dependencies for Asp.Net Core Identity in MVC - these dependencies are injected into generic Controllers + // Including settings for MVC and Localization + services.AddMvcWithLocalization(options.Culture); + + // Add authorization policies for MVC + services.AddAuthorizationPolicies(options.Admin); + + // Add audit logging + services.AddAuditEventLogging(options.AuditLogging); + + // Add health checks. + services.AddIdSHealthChecks(options.Admin, options.ConnectionStrings, options.DatabaseProvider); + + return services; + } + } +} diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/IdentityServer4AdminUIOptions.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/IdentityServer4AdminUIOptions.cs new file mode 100644 index 000000000..53fa9c69b --- /dev/null +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/IdentityServer4AdminUIOptions.cs @@ -0,0 +1,77 @@ +using Microsoft.AspNetCore.Identity; +using Microsoft.Extensions.Configuration; +using Skoruba.IdentityServer4.Admin.Configuration; +using Skoruba.IdentityServer4.Admin.Configuration.Constants; +using Skoruba.IdentityServer4.Admin.EntityFramework.Shared.Configuration; +using Skoruba.IdentityServer4.Shared.Configuration.Common; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.Extensions.DependencyInjection +{ + public class IdentityServer4AdminUIOptions + { + /// + /// Use test instead of production services and pipelines. + /// + public bool IsStaging { get; set; } + + /// + /// The database connection strings and settings. + /// + public ConnectionStringsConfiguration ConnectionStrings { get; set; } = new ConnectionStringsConfiguration(); + + /// + /// The settings for the admin services. + /// + public AdminConfiguration Admin { get; set; } = new AdminConfiguration(); + + /// + /// The settings for the database provider. + /// + public DatabaseProviderConfiguration DatabaseProvider { get; set; } = new DatabaseProviderConfiguration(); + + /// + /// The settings for audit logging. + /// + public AuditLoggingConfiguration AuditLogging { get; set; } = new AuditLoggingConfiguration(); + + /// + /// The settings for globalization. + /// + public CultureConfiguration Culture { get; set; } = new CultureConfiguration(); + + /// + /// An action to configure ASP.NET Core Identity. + /// + public Action IdentityAction { get; set; } = options => { }; + + /// + /// The settings for data protection. + /// + public DataProtectionConfiguration DataProtection { get; set; } = new DataProtectionConfiguration(); + + /// + /// The settings for Azure key vault. + /// + public AzureKeyVaultConfiguration AzureKeyVault { get; set; } = new AzureKeyVaultConfiguration(); + + + /// + /// Applies configuration parsed from an appsettings file into these options. + /// + /// The configuration to bind into this instance. + public void ApplyConfiguration(IConfiguration configuration) + { + configuration.GetSection(ConfigurationConsts.ConnectionStringsKey).Bind(ConnectionStrings); + configuration.GetSection(ConfigurationConsts.AdminConfigurationKey).Bind(Admin); + configuration.GetSection(nameof(DatabaseProviderConfiguration)).Bind(DatabaseProvider); + configuration.GetSection(nameof(AuditLoggingConfiguration)).Bind(AuditLogging); + configuration.GetSection(nameof(CultureConfiguration)).Bind(Culture); + configuration.GetSection(nameof(DataProtectionConfiguration)).Bind(DataProtection); + configuration.GetSection(nameof(AzureKeyVaultConfiguration)).Bind(AzureKeyVault); + IdentityAction = options => configuration.GetSection(nameof(IdentityOptions)).Bind(options); + } + } +} diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ServiceHelpers.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ServiceHelpers.cs index 249b180ca..a5530275b 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ServiceHelpers.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ServiceHelpers.cs @@ -26,7 +26,6 @@ using Skoruba.IdentityServer4.Admin.Configuration; using Skoruba.IdentityServer4.Admin.Configuration.ApplicationParts; using Skoruba.IdentityServer4.Admin.Configuration.Constants; -using Skoruba.IdentityServer4.Admin.Configuration.Interfaces; using Skoruba.IdentityServer4.Admin.EntityFramework.Helpers; using Skoruba.IdentityServer4.Admin.EntityFramework.Interfaces; using Skoruba.IdentityServer4.Admin.EntityFramework.MySql.Extensions; @@ -47,12 +46,10 @@ namespace Skoruba.IdentityServer4.Admin.Helpers { public static class ServiceHelpers { - public static IServiceCollection AddAuditEventLogging(this IServiceCollection services, IConfiguration configuration) + public static IServiceCollection AddAuditEventLogging(this IServiceCollection services, AuditLoggingConfiguration auditLoggingConfiguration) where TAuditLog : AuditLog, new() where TAuditLoggingDbContext : IAuditLoggingDbContext { - var auditLoggingConfiguration = configuration.GetSection(nameof(AuditLoggingConfiguration)).Get(); - services.AddAuditLogging(options => { options.Source = auditLoggingConfiguration.Source; }) .AddDefaultHttpEventData(subjectOptions => { @@ -86,7 +83,7 @@ public static IServiceCollection AddAuditEventLogging /// /// - public static void RegisterDbContexts(this IServiceCollection services, IConfiguration configuration) + public static void RegisterDbContexts(this IServiceCollection services, ConnectionStringsConfiguration connectionStrings, DatabaseProviderConfiguration databaseProvider) where TIdentityDbContext : DbContext where TPersistedGrantDbContext : DbContext, IAdminPersistedGrantDbContext where TConfigurationDbContext : DbContext, IAdminConfigurationDbContext @@ -94,14 +91,12 @@ public static void RegisterDbContexts where TDataProtectionDbContext : DbContext, IDataProtectionKeyContext { - var databaseProvider = configuration.GetSection(nameof(DatabaseProviderConfiguration)).Get(); - - var identityConnectionString = configuration.GetConnectionString(ConfigurationConsts.IdentityDbConnectionStringKey); - var configurationConnectionString = configuration.GetConnectionString(ConfigurationConsts.ConfigurationDbConnectionStringKey); - var persistedGrantsConnectionString = configuration.GetConnectionString(ConfigurationConsts.PersistedGrantDbConnectionStringKey); - var errorLoggingConnectionString = configuration.GetConnectionString(ConfigurationConsts.AdminLogDbConnectionStringKey); - var auditLoggingConnectionString = configuration.GetConnectionString(ConfigurationConsts.AdminAuditLogDbConnectionStringKey); - var dataProtectionConnectionString = configuration.GetConnectionString(ConfigurationConsts.DataProtectionDbConnectionStringKey); + var identityConnectionString = connectionStrings.IdentityDbConnection; + var configurationConnectionString = connectionStrings.ConfigurationDbConnection; + var persistedGrantsConnectionString = connectionStrings.PersistedGrantDbConnection; + var errorLoggingConnectionString = connectionStrings.AdminLogDbConnection; + var auditLoggingConnectionString = connectionStrings.AdminAuditLogDbConnection; + var dataProtectionConnectionString = connectionStrings.DataProtectionDbConnection; switch (databaseProvider.ProviderType) { @@ -173,12 +168,12 @@ public static void ConfigureLocalization(this IApplicationBuilder app) /// Add authorization policies /// /// - public static void AddAuthorizationPolicies(this IServiceCollection services, IRootConfiguration rootConfiguration) + public static void AddAuthorizationPolicies(this IServiceCollection services, AdminConfiguration adminConfiguration) { services.AddAuthorization(options => { options.AddPolicy(AuthorizationConsts.AdministrationPolicy, - policy => policy.RequireRole(rootConfiguration.AdminConfiguration.AdministrationRole)); + policy => policy.RequireRole(adminConfiguration.AdministrationRole)); }); } @@ -198,7 +193,8 @@ public static void AddMvcExceptionFilters(this IServiceCollection services) /// public static void AddMvcWithLocalization(this IServiceCollection services, IConfiguration configuration) + TUserProviderDto, TUserProvidersDto, TUserChangePasswordDto, TRoleClaimsDto, TUserClaimDto, TRoleClaimDto> + (this IServiceCollection services, CultureConfiguration cultureConfiguration) where TUserDto : UserDto, new() where TRoleDto : RoleDto, new() where TUser : IdentityUser @@ -241,7 +237,6 @@ public static void AddMvcExceptionFilters(this IServiceCollection services) TUserProviderDto, TUserProvidersDto, TUserChangePasswordDto, TRoleClaimsDto, TUserClaimDto, TRoleClaimDto>()); }); - var cultureConfiguration = configuration.GetSection(nameof(CultureConfiguration)).Get(); services.Configure( opts => { @@ -301,11 +296,9 @@ public static void AddAuthenticationServicesStaging /// /// - public static void AddAuthenticationServices(this IServiceCollection services, IConfiguration configuration) + public static void AddAuthenticationServices(this IServiceCollection services, AdminConfiguration adminConfiguration, Action identityOptionsAction) where TContext : DbContext where TUserIdentity : class where TUserIdentityRole : class { - var adminConfiguration = configuration.GetSection(nameof(AdminConfiguration)).Get(); - services.Configure(options => { options.MinimumSameSitePolicy = SameSiteMode.Unspecified; @@ -317,7 +310,7 @@ public static void AddAuthenticationServices(options => configuration.GetSection(nameof(IdentityOptions)).Bind(options)) + .AddIdentity(identityOptionsAction) .AddEntityFrameworkStores() .AddDefaultTokenProviders(); @@ -386,7 +379,10 @@ private static Task OnRedirectToIdentityProvider(RedirectContext n, AdminConfigu return Task.FromResult(0); } - public static void AddIdSHealthChecks(this IServiceCollection services, IConfiguration configuration, AdminConfiguration adminConfiguration) + public static void AddIdSHealthChecks + (this IServiceCollection services, AdminConfiguration adminConfiguration, + ConnectionStringsConfiguration connectionStringsConfiguration, DatabaseProviderConfiguration databaseProviderConfiguration) where TConfigurationDbContext : DbContext, IAdminConfigurationDbContext where TPersistedGrantDbContext : DbContext, IAdminPersistedGrantDbContext where TIdentityDbContext : DbContext @@ -394,12 +390,12 @@ public static void AddIdSHealthChecks where TDataProtectionDbContext : DbContext, IDataProtectionKeyContext { - var configurationDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.ConfigurationDbConnectionStringKey); - var persistedGrantsDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.PersistedGrantDbConnectionStringKey); - var identityDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.IdentityDbConnectionStringKey); - var logDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.AdminLogDbConnectionStringKey); - var auditLogDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.AdminAuditLogDbConnectionStringKey); - var dataProtectionDbConnectionString = configuration.GetConnectionString(ConfigurationConsts.DataProtectionDbConnectionStringKey); + var configurationDbConnectionString = connectionStringsConfiguration.ConfigurationDbConnection; + var persistedGrantsDbConnectionString = connectionStringsConfiguration.PersistedGrantDbConnection; + var identityDbConnectionString = connectionStringsConfiguration.IdentityDbConnection; + var logDbConnectionString = connectionStringsConfiguration.AdminLogDbConnection; + var auditLogDbConnectionString = connectionStringsConfiguration.AdminAuditLogDbConnection; + var dataProtectionDbConnectionString = connectionStringsConfiguration.DataProtectionDbConnection; var identityServerUri = adminConfiguration.IdentityServerBaseUrl; var healthChecksBuilder = services.AddHealthChecks() @@ -423,8 +419,7 @@ public static void AddIdSHealthChecks(scope.ServiceProvider); var dataProtectionTableName = DbContextHelpers.GetEntityTable(scope.ServiceProvider); - var databaseProvider = configuration.GetSection(nameof(DatabaseProviderConfiguration)).Get(); - switch (databaseProvider.ProviderType) + switch (databaseProviderConfiguration.ProviderType) { case DatabaseProviderType.SqlServer: healthChecksBuilder @@ -466,7 +461,7 @@ public static void AddIdSHealthChecks(); - } + // Applies configuration from appsettings. + options.ApplyConfiguration(Configuration); - public override void RegisterAuthentication(IServiceCollection services) - { - services.AddAuthenticationServicesStaging(); + // Use staging DbContexts and auth services. + options.IsStaging = true; } - public override void RegisterAuthorization(IServiceCollection services) - { - var rootConfiguration = CreateRootConfiguration(); - services.AddAuthorizationPolicies(rootConfiguration); - } + //public override void RegisterDbContexts(IServiceCollection services) + //{ + // services.RegisterDbContextsStaging(); + //} + + //public override void RegisterAuthentication(IServiceCollection services) + //{ + // services.AddAuthenticationServicesStaging(); + //} + + //public override void RegisterAuthorization(IServiceCollection services) + //{ + // var rootConfiguration = CreateRootConfiguration(); + // services.AddAuthorizationPolicies(rootConfiguration); + //} public override void UseAuthentication(IApplicationBuilder app) { diff --git a/src/Skoruba.IdentityServer4.Admin/Startup.cs b/src/Skoruba.IdentityServer4.Admin/Startup.cs index a9c734833..1d2d95d84 100644 --- a/src/Skoruba.IdentityServer4.Admin/Startup.cs +++ b/src/Skoruba.IdentityServer4.Admin/Startup.cs @@ -41,53 +41,56 @@ public void ConfigureServices(IServiceCollection services) var rootConfiguration = CreateRootConfiguration(); services.AddSingleton(rootConfiguration); - // Add DbContexts for Asp.Net Core Identity, Logging and IdentityServer - Configuration store and Operational store - RegisterDbContexts(services); + // Adds the IdentityServer4 Admin UI with custom options. + services.AddIdentityServer4AdminUI(ConfigureUIOptions); - // Save data protection keys to db, using a common application name shared between Admin and STS - services.AddDataProtection(Configuration); + //// Add DbContexts for Asp.Net Core Identity, Logging and IdentityServer - Configuration store and Operational store + //RegisterDbContexts(services); + + //// Save data protection keys to db, using a common application name shared between Admin and STS + //services.AddDataProtection(Configuration); // Add email senders which is currently setup for SendGrid and SMTP services.AddEmailSenders(Configuration); - // Add Asp.Net Core Identity Configuration and OpenIdConnect auth as well - RegisterAuthentication(services); + //// Add Asp.Net Core Identity Configuration and OpenIdConnect auth as well + //RegisterAuthentication(services); // Add HSTS options RegisterHstsOptions(services); - // Add exception filters in MVC - services.AddMvcExceptionFilters(); - - // Add all dependencies for IdentityServer Admin - services.AddAdminServices(); - - // Add all dependencies for Asp.Net Core Identity - // If you want to change primary keys or use another db model for Asp.Net Core Identity: - services.AddAdminAspNetIdentityServices(); - - // Add all dependencies for Asp.Net Core Identity in MVC - these dependencies are injected into generic Controllers - // Including settings for MVC and Localization - // If you want to change primary keys or use another db model for Asp.Net Core Identity: - services.AddMvcWithLocalization(Configuration); - - // Add authorization policies for MVC - RegisterAuthorization(services); - - // Add audit logging - services.AddAuditEventLogging(Configuration); - - services.AddIdSHealthChecks(Configuration, rootConfiguration.AdminConfiguration); + //// Add exception filters in MVC + //services.AddMvcExceptionFilters(); + + //// Add all dependencies for IdentityServer Admin + //services.AddAdminServices(); + + //// Add all dependencies for Asp.Net Core Identity + //// If you want to change primary keys or use another db model for Asp.Net Core Identity: + //services.AddAdminAspNetIdentityServices(); + + //// Add all dependencies for Asp.Net Core Identity in MVC - these dependencies are injected into generic Controllers + //// Including settings for MVC and Localization + //// If you want to change primary keys or use another db model for Asp.Net Core Identity: + //services.AddMvcWithLocalization(Configuration); + + //// Add authorization policies for MVC + //RegisterAuthorization(services); + + //// Add audit logging + //services.AddAuditEventLogging(Configuration); + + //services.AddIdSHealthChecks(Configuration, rootConfiguration.AdminConfiguration); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) @@ -128,22 +131,31 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerF }); } - public virtual void RegisterDbContexts(IServiceCollection services) - { - services.RegisterDbContexts(Configuration); - } - - public virtual void RegisterAuthentication(IServiceCollection services) - { - var rootConfiguration = CreateRootConfiguration(); - services.AddAuthenticationServices(Configuration); - } - - public virtual void RegisterAuthorization(IServiceCollection services) - { - var rootConfiguration = CreateRootConfiguration(); - services.AddAuthorizationPolicies(rootConfiguration); - } + public virtual void ConfigureUIOptions(IdentityServer4AdminUIOptions options) + { + // Applies configuration from appsettings. + options.ApplyConfiguration(Configuration); + + // Use production DbContexts and auth services. + options.IsStaging = false; + } + + //public virtual void RegisterDbContexts(IServiceCollection services) + //{ + // services.RegisterDbContexts(Configuration); + //} + + //public virtual void RegisterAuthentication(IServiceCollection services) + //{ + // var rootConfiguration = CreateRootConfiguration(); + // services.AddAuthenticationServices(Configuration); + //} + + //public virtual void RegisterAuthorization(IServiceCollection services) + //{ + // var rootConfiguration = CreateRootConfiguration(); + // services.AddAuthorizationPolicies(rootConfiguration); + //} public virtual void UseAuthentication(IApplicationBuilder app) { diff --git a/src/Skoruba.IdentityServer4.Shared/Helpers/StartupHelpers.cs b/src/Skoruba.IdentityServer4.Shared/Helpers/StartupHelpers.cs index df1a492e5..49e4545e2 100644 --- a/src/Skoruba.IdentityServer4.Shared/Helpers/StartupHelpers.cs +++ b/src/Skoruba.IdentityServer4.Shared/Helpers/StartupHelpers.cs @@ -43,12 +43,9 @@ public static void AddEmailSenders(this IServiceCollection services, IConfigurat } } - public static void AddDataProtection(this IServiceCollection services, IConfiguration configuration) + public static void AddDataProtection(this IServiceCollection services, DataProtectionConfiguration dataProtectionConfiguration, AzureKeyVaultConfiguration azureKeyVaultConfiguration) where TDbContext : DbContext, IDataProtectionKeyContext { - var dataProtectionConfiguration = configuration.GetSection(nameof(DataProtectionConfiguration)).Get(); - var azureKeyVaultConfiguration = configuration.GetSection(nameof(AzureKeyVaultConfiguration)).Get(); - var dataProtectionBuilder = services.AddDataProtection() .SetApplicationName("Skoruba.IdentityServer4") .PersistKeysToDbContext(); From 48e66d56c92939d319a735953a25335f76e3b450 Mon Sep 17 00:00:00 2001 From: Brice Date: Thu, 7 Jan 2021 14:21:31 +0100 Subject: [PATCH 10/38] Moved back one constant unrelated to UI into main project --- .../Configuration/Constants/ConfigurationConsts.cs | 2 -- .../Configuration/Constants/ConfigurationConsts.cs | 9 +++++++++ 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 src/Skoruba.IdentityServer4.Admin/Configuration/Constants/ConfigurationConsts.cs diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/ConfigurationConsts.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/ConfigurationConsts.cs index af1aa9466..8ec57963e 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/ConfigurationConsts.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/ConfigurationConsts.cs @@ -28,7 +28,5 @@ public class ConfigurationConsts public const string DataProtectionDbConnectionStringKey = "DataProtectionDbConnection"; - public const string CspTrustedDomainsKey = "CspTrustedDomains"; - } } \ No newline at end of file diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/Constants/ConfigurationConsts.cs b/src/Skoruba.IdentityServer4.Admin/Configuration/Constants/ConfigurationConsts.cs new file mode 100644 index 000000000..8248f3306 --- /dev/null +++ b/src/Skoruba.IdentityServer4.Admin/Configuration/Constants/ConfigurationConsts.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace Skoruba.IdentityServer4.Admin.Configuration.Constants +{ + public class ConfigurationConsts + { + public const string CspTrustedDomainsKey = "CspTrustedDomains"; + } +} \ No newline at end of file From 820758f01403aceb45ec2d02ad33783fb8cf3937 Mon Sep 17 00:00:00 2001 From: Brice Date: Thu, 7 Jan 2021 14:32:06 +0100 Subject: [PATCH 11/38] Refactored UI project namespaces for consistency --- .../Configuration/AdminConfiguration.cs | 2 +- .../GenericControllerRouteConvention.cs | 2 +- .../GenericTypeControllerFeatureProvider.cs | 2 +- .../Configuration/AuditLoggingConfiguration.cs | 2 +- .../ConnectionStringsConfiguration.cs | 2 +- .../Constants/AuthenticationConsts.cs | 2 +- .../Configuration/Constants/AuthorizationConsts.cs | 2 +- .../Configuration/Constants/ConfigurationConsts.cs | 8 +------- .../Configuration/CultureConfiguration.cs | 2 +- .../Controllers/AccountController.cs | 4 ++-- .../Controllers/BaseController.cs | 4 ++-- .../Controllers/ConfigurationController.cs | 6 +++--- .../Controllers/GrantController.cs | 8 ++++---- .../Controllers/HomeController.cs | 6 +++--- .../Controllers/IdentityController.cs | 8 ++++---- .../Controllers/LogController.cs | 4 ++-- .../ControllerExceptionFilterAttribute.cs | 4 ++-- .../AdminUIServiceCollectionExtensions.cs | 2 +- .../IdentityServer4AdminUIOptions.cs | 8 +++----- .../Helpers/Identity/IdentityErrorMessages.cs | 2 +- .../Localization/GenericServiceLocalizer.cs | 2 +- .../Localization/IGenericControllerLocalizer.cs | 2 +- .../Helpers/MD5HashHelper.cs | 2 +- .../Helpers/NotificationHelpers.cs | 2 +- .../Helpers/PagerHelpers.cs | 2 +- .../{ServiceHelpers.cs => StartupHelpers.cs} | 14 +++++++------- .../Helpers/TagHelpers/GravatarTagHelper.cs | 2 +- .../Helpers/TagHelpers/PickerTagHelper.cs | 2 +- .../Helpers/TagHelpers/SwitchTagHelper.cs | 2 +- .../Helpers/UrlHelpers.cs | 2 +- .../IdentityServerLinkViewComponent.cs | 4 ++-- .../Views/Shared/Common/PagerDynamic.cshtml | 2 +- .../Views/_ViewImports.cshtml | 2 +- .../Configuration/Constants/ConfigurationConsts.cs | 6 ++++++ 34 files changed, 62 insertions(+), 64 deletions(-) rename src/Skoruba.IdentityServer4.Admin.UI/Helpers/{ServiceHelpers.cs => StartupHelpers.cs} (98%) diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/AdminConfiguration.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/AdminConfiguration.cs index 4477df05b..8b6e16417 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/AdminConfiguration.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/AdminConfiguration.cs @@ -1,4 +1,4 @@ -namespace Skoruba.IdentityServer4.Admin.Configuration +namespace Skoruba.IdentityServer4.Admin.UI.Configuration { public class AdminConfiguration { diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/ApplicationParts/GenericControllerRouteConvention.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/ApplicationParts/GenericControllerRouteConvention.cs index 2f0d0adb8..8e9dba2aa 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/ApplicationParts/GenericControllerRouteConvention.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/ApplicationParts/GenericControllerRouteConvention.cs @@ -1,6 +1,6 @@ using Microsoft.AspNetCore.Mvc.ApplicationModels; -namespace Skoruba.IdentityServer4.Admin.Configuration.ApplicationParts +namespace Skoruba.IdentityServer4.Admin.UI.Configuration.ApplicationParts { public class GenericControllerRouteConvention : IControllerModelConvention { diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/ApplicationParts/GenericTypeControllerFeatureProvider.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/ApplicationParts/GenericTypeControllerFeatureProvider.cs index 335d0f9f1..f49430f8d 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/ApplicationParts/GenericTypeControllerFeatureProvider.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/ApplicationParts/GenericTypeControllerFeatureProvider.cs @@ -8,7 +8,7 @@ using Microsoft.AspNetCore.Mvc.Controllers; using Skoruba.IdentityServer4.Admin.BusinessLogic.Identity.Dtos.Identity; -namespace Skoruba.IdentityServer4.Admin.Configuration.ApplicationParts +namespace Skoruba.IdentityServer4.Admin.UI.Configuration.ApplicationParts { public class GenericTypeControllerFeatureProvider /// diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/Localization/GenericServiceLocalizer.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/Localization/GenericServiceLocalizer.cs index 05976bf30..25acd4366 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/Localization/GenericServiceLocalizer.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/Localization/GenericServiceLocalizer.cs @@ -9,7 +9,7 @@ using System.Reflection; using Microsoft.Extensions.Localization; -namespace Skoruba.IdentityServer4.Admin.Helpers.Localization +namespace Skoruba.IdentityServer4.Admin.UI.Helpers.Localization { public class GenericControllerLocalizer : IGenericControllerLocalizer { diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/Localization/IGenericControllerLocalizer.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/Localization/IGenericControllerLocalizer.cs index 5419cb4e4..a56b414b3 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/Localization/IGenericControllerLocalizer.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/Localization/IGenericControllerLocalizer.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using Microsoft.Extensions.Localization; -namespace Skoruba.IdentityServer4.Admin.Helpers.Localization +namespace Skoruba.IdentityServer4.Admin.UI.Helpers.Localization { public interface IGenericControllerLocalizer { diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/MD5HashHelper.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/MD5HashHelper.cs index f68ed7ebe..df244fcc4 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/MD5HashHelper.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/MD5HashHelper.cs @@ -2,7 +2,7 @@ using System.Security.Cryptography; using System.Text; -namespace Skoruba.IdentityServer4.Admin.Helpers +namespace Skoruba.IdentityServer4.Admin.UI.Helpers { /// /// Helper-class to create Md5hashes from strings diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/NotificationHelpers.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/NotificationHelpers.cs index 53515bd4d..98011310f 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/NotificationHelpers.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/NotificationHelpers.cs @@ -1,4 +1,4 @@ -namespace Skoruba.IdentityServer4.Admin.Helpers +namespace Skoruba.IdentityServer4.Admin.UI.Helpers { public class NotificationHelpers { diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/PagerHelpers.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/PagerHelpers.cs index d51851727..291b7ebaf 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/PagerHelpers.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/PagerHelpers.cs @@ -4,7 +4,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http.Extensions; -namespace Skoruba.IdentityServer4.Admin.Helpers +namespace Skoruba.IdentityServer4.Admin.UI.Helpers { public static class PagerHelpers { diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ServiceHelpers.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/StartupHelpers.cs similarity index 98% rename from src/Skoruba.IdentityServer4.Admin.UI/Helpers/ServiceHelpers.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Helpers/StartupHelpers.cs index a5530275b..c9de185f3 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ServiceHelpers.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/StartupHelpers.cs @@ -23,9 +23,9 @@ using Skoruba.IdentityServer4.Admin.BusinessLogic.Identity.Dtos.Identity; using Skoruba.IdentityServer4.Admin.BusinessLogic.Services; using Skoruba.IdentityServer4.Admin.BusinessLogic.Services.Interfaces; -using Skoruba.IdentityServer4.Admin.Configuration; -using Skoruba.IdentityServer4.Admin.Configuration.ApplicationParts; -using Skoruba.IdentityServer4.Admin.Configuration.Constants; +using Skoruba.IdentityServer4.Admin.UI.Configuration; +using Skoruba.IdentityServer4.Admin.UI.Configuration.ApplicationParts; +using Skoruba.IdentityServer4.Admin.UI.Configuration.Constants; using Skoruba.IdentityServer4.Admin.EntityFramework.Helpers; using Skoruba.IdentityServer4.Admin.EntityFramework.Interfaces; using Skoruba.IdentityServer4.Admin.EntityFramework.MySql.Extensions; @@ -34,17 +34,17 @@ using Skoruba.IdentityServer4.Admin.EntityFramework.Repositories.Interfaces; using Skoruba.IdentityServer4.Admin.EntityFramework.Shared.Configuration; using Skoruba.IdentityServer4.Admin.EntityFramework.SqlServer.Extensions; -using Skoruba.IdentityServer4.Admin.ExceptionHandling; -using Skoruba.IdentityServer4.Admin.Helpers.Localization; +using Skoruba.IdentityServer4.Admin.UI.ExceptionHandling; +using Skoruba.IdentityServer4.Admin.UI.Helpers.Localization; using Skoruba.IdentityServer4.Shared.Authentication; using System; using System.Globalization; using System.Linq; using System.Threading.Tasks; -namespace Skoruba.IdentityServer4.Admin.Helpers +namespace Skoruba.IdentityServer4.Admin.UI.Helpers { - public static class ServiceHelpers + public static class StartupHelpers { public static IServiceCollection AddAuditEventLogging(this IServiceCollection services, AuditLoggingConfiguration auditLoggingConfiguration) where TAuditLog : AuditLog, new() diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/GravatarTagHelper.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/GravatarTagHelper.cs index 9d07b36f1..cf5b35e23 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/GravatarTagHelper.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/GravatarTagHelper.cs @@ -1,6 +1,6 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Skoruba.IdentityServer4.Admin.Helpers.TagHelpers +namespace Skoruba.IdentityServer4.Admin.UI.Helpers.TagHelpers { [HtmlTargetElement("img-gravatar")] public class GravatarTagHelper : TagHelper diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/PickerTagHelper.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/PickerTagHelper.cs index b17ae42a3..87f2a5c6c 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/PickerTagHelper.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/PickerTagHelper.cs @@ -5,7 +5,7 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Newtonsoft.Json; -namespace Skoruba.IdentityServer4.Admin.Helpers.TagHelpers +namespace Skoruba.IdentityServer4.Admin.UI.Helpers.TagHelpers { [HtmlTargetElement("picker")] public class PickerTagHelper : TagHelper diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/SwitchTagHelper.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/SwitchTagHelper.cs index 7ddf9a66b..1c4c13953 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/SwitchTagHelper.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/TagHelpers/SwitchTagHelper.cs @@ -2,7 +2,7 @@ using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Skoruba.IdentityServer4.Admin.Helpers.TagHelpers +namespace Skoruba.IdentityServer4.Admin.UI.Helpers.TagHelpers { [HtmlTargetElement("toggle-button")] public class SwitchTagHelper : TagHelper diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/UrlHelpers.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/UrlHelpers.cs index 71d22425b..d7dc7cc60 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/UrlHelpers.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/UrlHelpers.cs @@ -1,4 +1,4 @@ -namespace Skoruba.IdentityServer4.Admin.Helpers +namespace Skoruba.IdentityServer4.Admin.UI.Helpers { public static class UrlHelpers { diff --git a/src/Skoruba.IdentityServer4.Admin.UI/ViewComponents/IdentityServerLinkViewComponent.cs b/src/Skoruba.IdentityServer4.Admin.UI/ViewComponents/IdentityServerLinkViewComponent.cs index b63eb1edb..cc290329d 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/ViewComponents/IdentityServerLinkViewComponent.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/ViewComponents/IdentityServerLinkViewComponent.cs @@ -1,7 +1,7 @@ using Microsoft.AspNetCore.Mvc; -using Skoruba.IdentityServer4.Admin.Configuration; +using Skoruba.IdentityServer4.Admin.UI.Configuration; -namespace Skoruba.IdentityServer4.Admin.ViewComponents +namespace Skoruba.IdentityServer4.Admin.UI.ViewComponents { public class IdentityServerLinkViewComponent : ViewComponent { diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/PagerDynamic.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/PagerDynamic.cshtml index 154cc2dbf..943a71104 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/PagerDynamic.cshtml +++ b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/PagerDynamic.cshtml @@ -1,5 +1,5 @@ @using Microsoft.AspNetCore.Mvc.Localization -@using Skoruba.IdentityServer4.Admin.Helpers +@using Skoruba.IdentityServer4.Admin.UI.Helpers @model Skoruba.IdentityServer4.Admin.BusinessLogic.Shared.Dtos.Common.Pager @inject IViewLocalizer Localizer @{ diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Views/_ViewImports.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/_ViewImports.cshtml index be8765009..88776f1a8 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Views/_ViewImports.cshtml +++ b/src/Skoruba.IdentityServer4.Admin.UI/Views/_ViewImports.cshtml @@ -1,3 +1,3 @@ @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers -@addTagHelper *, Skoruba.IdentityServer4.Admin +@addTagHelper *, Skoruba.IdentityServer4.Admin.UI @inject IUrlHelper UrlHelper \ No newline at end of file diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/Constants/ConfigurationConsts.cs b/src/Skoruba.IdentityServer4.Admin/Configuration/Constants/ConfigurationConsts.cs index 8248f3306..2431ff373 100644 --- a/src/Skoruba.IdentityServer4.Admin/Configuration/Constants/ConfigurationConsts.cs +++ b/src/Skoruba.IdentityServer4.Admin/Configuration/Constants/ConfigurationConsts.cs @@ -4,6 +4,12 @@ namespace Skoruba.IdentityServer4.Admin.Configuration.Constants { public class ConfigurationConsts { + public const string AdminConfigurationKey = "AdminConfiguration"; + + public const string IdentityServerDataConfigurationKey = "IdentityServerData"; + + public const string IdentityDataConfigurationKey = "IdentityData"; + public const string CspTrustedDomainsKey = "CspTrustedDomains"; } } \ No newline at end of file From 6bbfb0b1b9b2e913ac4907a6e93208f37eaa82ce Mon Sep 17 00:00:00 2001 From: Brice Date: Thu, 7 Jan 2021 14:35:17 +0100 Subject: [PATCH 12/38] Fixed some build issues --- .../Configuration/Interfaces/IRootConfiguration.cs | 4 +++- .../Configuration/RootConfiguration.cs | 1 + .../Helpers/StartupHelpers.cs | 9 +++++++++ .../Common/HttpClientExtensions.cs | 1 + .../Controllers/ConfigurationControllerTests.cs | 4 ++-- .../Controllers/HomeControllerTests.cs | 2 +- .../Controllers/IdentityControllerTests.cs | 6 +++--- .../Helpers/IdentityErrorDescriberFallbackTestData.cs | 2 +- .../Helpers/IdentityErrorDescriberTestData.cs | 2 +- .../Helpers/IdentityErrorDescriberTests.cs | 2 +- 10 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/Interfaces/IRootConfiguration.cs b/src/Skoruba.IdentityServer4.Admin/Configuration/Interfaces/IRootConfiguration.cs index 708348978..2ec07fb6c 100644 --- a/src/Skoruba.IdentityServer4.Admin/Configuration/Interfaces/IRootConfiguration.cs +++ b/src/Skoruba.IdentityServer4.Admin/Configuration/Interfaces/IRootConfiguration.cs @@ -1,4 +1,6 @@ -namespace Skoruba.IdentityServer4.Admin.Configuration.Interfaces +using Skoruba.IdentityServer4.Admin.UI.Configuration; + +namespace Skoruba.IdentityServer4.Admin.Configuration.Interfaces { public interface IRootConfiguration { diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/RootConfiguration.cs b/src/Skoruba.IdentityServer4.Admin/Configuration/RootConfiguration.cs index 069472cb7..adf257bc0 100644 --- a/src/Skoruba.IdentityServer4.Admin/Configuration/RootConfiguration.cs +++ b/src/Skoruba.IdentityServer4.Admin/Configuration/RootConfiguration.cs @@ -1,4 +1,5 @@ using Skoruba.IdentityServer4.Admin.Configuration.Interfaces; +using Skoruba.IdentityServer4.Admin.UI.Configuration; namespace Skoruba.IdentityServer4.Admin.Configuration { diff --git a/src/Skoruba.IdentityServer4.Shared/Helpers/StartupHelpers.cs b/src/Skoruba.IdentityServer4.Shared/Helpers/StartupHelpers.cs index 49e4545e2..f3ef6e4fd 100644 --- a/src/Skoruba.IdentityServer4.Shared/Helpers/StartupHelpers.cs +++ b/src/Skoruba.IdentityServer4.Shared/Helpers/StartupHelpers.cs @@ -43,6 +43,15 @@ public static void AddEmailSenders(this IServiceCollection services, IConfigurat } } + public static void AddDataProtection(this IServiceCollection services, IConfiguration configuration) + where TDbContext : DbContext, IDataProtectionKeyContext + { + AddDataProtection( + services, + configuration.GetSection(nameof(DataProtectionConfiguration)).Get(), + configuration.GetSection(nameof(AzureKeyVaultConfiguration)).Get()); + } + public static void AddDataProtection(this IServiceCollection services, DataProtectionConfiguration dataProtectionConfiguration, AzureKeyVaultConfiguration azureKeyVaultConfiguration) where TDbContext : DbContext, IDataProtectionKeyContext { diff --git a/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Common/HttpClientExtensions.cs b/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Common/HttpClientExtensions.cs index fe89c0ebe..0e4ab77f4 100644 --- a/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Common/HttpClientExtensions.cs +++ b/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Common/HttpClientExtensions.cs @@ -4,6 +4,7 @@ using System.Security.Claims; using Skoruba.IdentityServer4.Admin.Configuration; using Skoruba.IdentityServer4.Admin.Middlewares; +using Skoruba.IdentityServer4.Admin.UI.Configuration; namespace Skoruba.IdentityServer4.Admin.IntegrationTests.Common { diff --git a/tests/Skoruba.IdentityServer4.Admin.UnitTests/Controllers/ConfigurationControllerTests.cs b/tests/Skoruba.IdentityServer4.Admin.UnitTests/Controllers/ConfigurationControllerTests.cs index 939cac75c..fda62c8cc 100644 --- a/tests/Skoruba.IdentityServer4.Admin.UnitTests/Controllers/ConfigurationControllerTests.cs +++ b/tests/Skoruba.IdentityServer4.Admin.UnitTests/Controllers/ConfigurationControllerTests.cs @@ -24,11 +24,11 @@ using Skoruba.IdentityServer4.Admin.BusinessLogic.Dtos.Configuration; using Skoruba.IdentityServer4.Admin.BusinessLogic.Identity.Dtos.Identity; using Skoruba.IdentityServer4.Admin.BusinessLogic.Services.Interfaces; -using Skoruba.IdentityServer4.Admin.Controllers; +using Skoruba.IdentityServer4.Admin.UI.Controllers; using Skoruba.IdentityServer4.Admin.EntityFramework.Shared.DbContexts; using Skoruba.IdentityServer4.Admin.EntityFramework.Shared.Entities.Identity; using Skoruba.IdentityServer4.Admin.UnitTests.Mocks; -using Skoruba.IdentityServer4.Admin.Helpers; +using Skoruba.IdentityServer4.Admin.UI.Helpers; using Xunit; namespace Skoruba.IdentityServer4.Admin.UnitTests.Controllers diff --git a/tests/Skoruba.IdentityServer4.Admin.UnitTests/Controllers/HomeControllerTests.cs b/tests/Skoruba.IdentityServer4.Admin.UnitTests/Controllers/HomeControllerTests.cs index d0f9459b1..35fa92818 100644 --- a/tests/Skoruba.IdentityServer4.Admin.UnitTests/Controllers/HomeControllerTests.cs +++ b/tests/Skoruba.IdentityServer4.Admin.UnitTests/Controllers/HomeControllerTests.cs @@ -2,7 +2,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Skoruba.IdentityServer4.Admin.Controllers; +using Skoruba.IdentityServer4.Admin.UI.Controllers; using Xunit; namespace Skoruba.IdentityServer4.Admin.UnitTests.Controllers diff --git a/tests/Skoruba.IdentityServer4.Admin.UnitTests/Controllers/IdentityControllerTests.cs b/tests/Skoruba.IdentityServer4.Admin.UnitTests/Controllers/IdentityControllerTests.cs index baf6de9d6..d9093ee37 100644 --- a/tests/Skoruba.IdentityServer4.Admin.UnitTests/Controllers/IdentityControllerTests.cs +++ b/tests/Skoruba.IdentityServer4.Admin.UnitTests/Controllers/IdentityControllerTests.cs @@ -22,12 +22,12 @@ using Skoruba.AuditLogging.EntityFramework.Services; using Skoruba.IdentityServer4.Admin.BusinessLogic.Identity.Dtos.Identity; using Skoruba.IdentityServer4.Admin.BusinessLogic.Identity.Services.Interfaces; -using Skoruba.IdentityServer4.Admin.Controllers; +using Skoruba.IdentityServer4.Admin.UI.Controllers; using Skoruba.IdentityServer4.Admin.EntityFramework.Shared.DbContexts; using Skoruba.IdentityServer4.Admin.EntityFramework.Shared.Entities.Identity; using Skoruba.IdentityServer4.Admin.UnitTests.Mocks; -using Skoruba.IdentityServer4.Admin.Helpers; -using Skoruba.IdentityServer4.Admin.Helpers.Localization; +using Skoruba.IdentityServer4.Admin.UI.Helpers; +using Skoruba.IdentityServer4.Admin.UI.Helpers.Localization; using Xunit; using System.Security.Claims; diff --git a/tests/Skoruba.IdentityServer4.Admin.UnitTests/Helpers/IdentityErrorDescriberFallbackTestData.cs b/tests/Skoruba.IdentityServer4.Admin.UnitTests/Helpers/IdentityErrorDescriberFallbackTestData.cs index 502d5b19e..bf907b6a0 100644 --- a/tests/Skoruba.IdentityServer4.Admin.UnitTests/Helpers/IdentityErrorDescriberFallbackTestData.cs +++ b/tests/Skoruba.IdentityServer4.Admin.UnitTests/Helpers/IdentityErrorDescriberFallbackTestData.cs @@ -1,4 +1,4 @@ -using Skoruba.IdentityServer4.Admin.Helpers.Identity; +using Skoruba.IdentityServer4.Admin.UI.Helpers.Identity; using System.Collections; using System.Collections.Generic; diff --git a/tests/Skoruba.IdentityServer4.Admin.UnitTests/Helpers/IdentityErrorDescriberTestData.cs b/tests/Skoruba.IdentityServer4.Admin.UnitTests/Helpers/IdentityErrorDescriberTestData.cs index 75074ef47..ab0d01029 100644 --- a/tests/Skoruba.IdentityServer4.Admin.UnitTests/Helpers/IdentityErrorDescriberTestData.cs +++ b/tests/Skoruba.IdentityServer4.Admin.UnitTests/Helpers/IdentityErrorDescriberTestData.cs @@ -1,4 +1,4 @@ -using Skoruba.IdentityServer4.Admin.Helpers.Identity; +using Skoruba.IdentityServer4.Admin.UI.Helpers.Identity; using System.Collections; using System.Collections.Generic; diff --git a/tests/Skoruba.IdentityServer4.Admin.UnitTests/Helpers/IdentityErrorDescriberTests.cs b/tests/Skoruba.IdentityServer4.Admin.UnitTests/Helpers/IdentityErrorDescriberTests.cs index 422d575f4..45db76352 100644 --- a/tests/Skoruba.IdentityServer4.Admin.UnitTests/Helpers/IdentityErrorDescriberTests.cs +++ b/tests/Skoruba.IdentityServer4.Admin.UnitTests/Helpers/IdentityErrorDescriberTests.cs @@ -1,7 +1,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Localization; using Moq; -using Skoruba.IdentityServer4.Admin.Helpers.Identity; +using Skoruba.IdentityServer4.Admin.UI.Helpers.Identity; using System.ComponentModel.Design; using System.Linq; using Xunit; From c2c5a43faadebb7dbda88570e995037affc79780 Mon Sep 17 00:00:00 2001 From: Brice Date: Thu, 7 Jan 2021 15:23:42 +0100 Subject: [PATCH 13/38] Stub for app builder extensions for UI project --- .../AdminUIApplicationBuilderExtensions.cs | 38 ++++++++++ src/Skoruba.IdentityServer4.Admin/Startup.cs | 73 +++++++++---------- 2 files changed, 73 insertions(+), 38 deletions(-) create mode 100644 src/Skoruba.IdentityServer4.Admin.UI/Helpers/ApplicationBuilder/AdminUIApplicationBuilderExtensions.cs diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ApplicationBuilder/AdminUIApplicationBuilderExtensions.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ApplicationBuilder/AdminUIApplicationBuilderExtensions.cs new file mode 100644 index 000000000..4a8a5bebb --- /dev/null +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ApplicationBuilder/AdminUIApplicationBuilderExtensions.cs @@ -0,0 +1,38 @@ +using Microsoft.AspNetCore.Routing; +using Skoruba.IdentityServer4.Admin.UI.Helpers; + +namespace Microsoft.AspNetCore.Builder +{ + public static class AdminUIApplicationBuilderExtensions + { + /// + /// Adds the Skoruba IdentityServer4 Admin UI to the pipeline of this application. + /// + /// + /// + public static IApplicationBuilder UseIdentityServer4AdminUI(this IApplicationBuilder app) + { + // ... + + // Use Localization + app.ConfigureLocalization(); + + // ... + + return app; + } + + ///// + ///// Maps the Skoruba IdentityServer4 Admin UI to the routes of this application. + ///// + ///// + //public static void MapIdentityServer4AdminUI(this IEndpointRouteBuilder endpoint) + //{ + // endpoint.MapDefaultControllerRoute(); + // //endpoint.MapHealthChecks("/health", new HealthCheckOptions + // //{ + // // ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse + // //}); + //} + } +} diff --git a/src/Skoruba.IdentityServer4.Admin/Startup.cs b/src/Skoruba.IdentityServer4.Admin/Startup.cs index 1d2d95d84..f4de8167f 100644 --- a/src/Skoruba.IdentityServer4.Admin/Startup.cs +++ b/src/Skoruba.IdentityServer4.Admin/Startup.cs @@ -7,23 +7,16 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; -using Skoruba.AuditLogging.EntityFramework.Entities; -using Skoruba.IdentityServer4.Admin.BusinessLogic.Identity.Dtos.Identity; using Skoruba.IdentityServer4.Admin.Configuration.Interfaces; -using Skoruba.IdentityServer4.Admin.EntityFramework.Shared.DbContexts; -using Skoruba.IdentityServer4.Admin.EntityFramework.Shared.Entities.Identity; using Skoruba.IdentityServer4.Admin.Helpers; using Skoruba.IdentityServer4.Admin.Configuration; using Skoruba.IdentityServer4.Admin.Configuration.Constants; using System; -using Microsoft.AspNetCore.DataProtection; -using Skoruba.IdentityServer4.Shared.Dtos; -using Skoruba.IdentityServer4.Shared.Dtos.Identity; using Skoruba.IdentityServer4.Shared.Helpers; namespace Skoruba.IdentityServer4.Admin { - public class Startup + public class Startup { public Startup(IWebHostEnvironment env, IConfiguration configuration) { @@ -116,19 +109,23 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerF UseAuthentication(app); - // Use Localization - app.ConfigureLocalization(); + //// Use Localization + //app.ConfigureLocalization(); - app.UseRouting(); - app.UseAuthorization(); - app.UseEndpoints(endpoint => + app.UseIdentityServer4AdminUI(); + + app.UseRouting(); + app.UseAuthorization(); + app.UseEndpoints(endpoint => { - endpoint.MapDefaultControllerRoute(); - endpoint.MapHealthChecks("/health", new HealthCheckOptions - { - ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse - }); - }); + //endpoint.MapIdentityServer4AdminUI(); + + endpoint.MapDefaultControllerRoute(); + endpoint.MapHealthChecks("/health", new HealthCheckOptions + { + ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse + }); + }); } public virtual void ConfigureUIOptions(IdentityServer4AdminUIOptions options) @@ -140,29 +137,29 @@ public virtual void ConfigureUIOptions(IdentityServer4AdminUIOptions options) options.IsStaging = false; } - //public virtual void RegisterDbContexts(IServiceCollection services) - //{ - // services.RegisterDbContexts(Configuration); - //} + //public virtual void RegisterDbContexts(IServiceCollection services) + //{ + // services.RegisterDbContexts(Configuration); + //} - //public virtual void RegisterAuthentication(IServiceCollection services) - //{ - // var rootConfiguration = CreateRootConfiguration(); - // services.AddAuthenticationServices(Configuration); - //} + //public virtual void RegisterAuthentication(IServiceCollection services) + //{ + // var rootConfiguration = CreateRootConfiguration(); + // services.AddAuthenticationServices(Configuration); + //} - //public virtual void RegisterAuthorization(IServiceCollection services) - //{ - // var rootConfiguration = CreateRootConfiguration(); - // services.AddAuthorizationPolicies(rootConfiguration); - //} + //public virtual void RegisterAuthorization(IServiceCollection services) + //{ + // var rootConfiguration = CreateRootConfiguration(); + // services.AddAuthorizationPolicies(rootConfiguration); + //} - public virtual void UseAuthentication(IApplicationBuilder app) - { - app.UseAuthentication(); - } + public virtual void UseAuthentication(IApplicationBuilder app) + { + app.UseAuthentication(); + } - public virtual void RegisterHstsOptions(IServiceCollection services) + public virtual void RegisterHstsOptions(IServiceCollection services) { services.AddHsts(options => { From 2941185c7257d228ca9d01980339224126afabf4 Mon Sep 17 00:00:00 2001 From: Brice Date: Thu, 7 Jan 2021 15:23:52 +0100 Subject: [PATCH 14/38] Fixed test project build --- .../Tests/ConfigurationControllerTests.cs | 1 + .../Tests/GrantControllerTests.cs | 1 + .../Tests/HomeControllerTests.cs | 1 + .../Tests/IdentityControllerTests.cs | 1 + .../Tests/LogControllerTests.cs | 1 + 5 files changed, 5 insertions(+) diff --git a/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/ConfigurationControllerTests.cs b/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/ConfigurationControllerTests.cs index f87d971aa..6ce1b729e 100644 --- a/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/ConfigurationControllerTests.cs +++ b/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/ConfigurationControllerTests.cs @@ -9,6 +9,7 @@ using Skoruba.IdentityServer4.Admin.Configuration.Test; using Skoruba.IdentityServer4.Admin.IntegrationTests.Common; using Skoruba.IdentityServer4.Admin.IntegrationTests.Tests.Base; +using Skoruba.IdentityServer4.Admin.UI.Configuration.Constants; using Xunit; namespace Skoruba.IdentityServer4.Admin.IntegrationTests.Tests diff --git a/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/GrantControllerTests.cs b/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/GrantControllerTests.cs index 6a0bdcde7..2359d2699 100644 --- a/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/GrantControllerTests.cs +++ b/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/GrantControllerTests.cs @@ -6,6 +6,7 @@ using Skoruba.IdentityServer4.Admin.Configuration.Test; using Skoruba.IdentityServer4.Admin.IntegrationTests.Common; using Skoruba.IdentityServer4.Admin.IntegrationTests.Tests.Base; +using Skoruba.IdentityServer4.Admin.UI.Configuration.Constants; using Xunit; namespace Skoruba.IdentityServer4.Admin.IntegrationTests.Tests diff --git a/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/HomeControllerTests.cs b/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/HomeControllerTests.cs index e5c190db1..a4febeaeb 100644 --- a/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/HomeControllerTests.cs +++ b/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/HomeControllerTests.cs @@ -5,6 +5,7 @@ using Skoruba.IdentityServer4.Admin.Configuration.Constants; using Skoruba.IdentityServer4.Admin.Configuration.Test; using Skoruba.IdentityServer4.Admin.IntegrationTests.Tests.Base; +using Skoruba.IdentityServer4.Admin.UI.Configuration.Constants; using Xunit; namespace Skoruba.IdentityServer4.Admin.IntegrationTests.Tests diff --git a/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/IdentityControllerTests.cs b/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/IdentityControllerTests.cs index 7a450d0c9..6eef174d5 100644 --- a/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/IdentityControllerTests.cs +++ b/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/IdentityControllerTests.cs @@ -7,6 +7,7 @@ using Skoruba.IdentityServer4.Admin.Configuration.Test; using Skoruba.IdentityServer4.Admin.IntegrationTests.Common; using Skoruba.IdentityServer4.Admin.IntegrationTests.Tests.Base; +using Skoruba.IdentityServer4.Admin.UI.Configuration.Constants; using Xunit; namespace Skoruba.IdentityServer4.Admin.IntegrationTests.Tests diff --git a/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/LogControllerTests.cs b/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/LogControllerTests.cs index 2f55c1dd1..9a519b1ea 100644 --- a/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/LogControllerTests.cs +++ b/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Tests/LogControllerTests.cs @@ -5,6 +5,7 @@ using Skoruba.IdentityServer4.Admin.Configuration.Constants; using Skoruba.IdentityServer4.Admin.Configuration.Test; using Skoruba.IdentityServer4.Admin.IntegrationTests.Tests.Base; +using Skoruba.IdentityServer4.Admin.UI.Configuration.Constants; using Xunit; namespace Skoruba.IdentityServer4.Admin.IntegrationTests.Tests From 4640927f55630160f918b72a7055d966aefaa8c2 Mon Sep 17 00:00:00 2001 From: Brice Date: Thu, 7 Jan 2021 15:44:57 +0100 Subject: [PATCH 15/38] Moved security headers feature to UI project --- .../Constants/ConfigurationConsts.cs | 2 + .../AdminUIServiceCollectionExtensions.cs | 12 ++- .../IdentityServer4AdminUIOptions.cs | 6 ++ .../Helpers/StartupHelpers.cs | 67 ++++++++++++++++ .../Skoruba.IdentityServer4.Admin.UI.csproj | 1 + .../Constants/ConfigurationConsts.cs | 2 - .../Helpers/StartupHelpers.cs | 79 ------------------- .../Skoruba.IdentityServer4.Admin.csproj | 1 - src/Skoruba.IdentityServer4.Admin/Startup.cs | 22 +++--- 9 files changed, 98 insertions(+), 94 deletions(-) delete mode 100644 src/Skoruba.IdentityServer4.Admin/Helpers/StartupHelpers.cs diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/ConfigurationConsts.cs b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/ConfigurationConsts.cs index 2d97281f4..5eb03696d 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/ConfigurationConsts.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Configuration/Constants/ConfigurationConsts.cs @@ -22,5 +22,7 @@ public class ConfigurationConsts public const string DataProtectionDbConnectionStringKey = "DataProtectionDbConnection"; + public const string CspTrustedDomainsKey = "CspTrustedDomains"; + } } \ No newline at end of file diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/AdminUIServiceCollectionExtensions.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/AdminUIServiceCollectionExtensions.cs index a22bbb5e6..83916bf5e 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/AdminUIServiceCollectionExtensions.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/AdminUIServiceCollectionExtensions.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Skoruba.AuditLogging.EntityFramework.Entities; using Skoruba.IdentityServer4.Admin.BusinessLogic.Identity.Dtos.Identity; @@ -64,6 +65,7 @@ public static IServiceCollection AddIdentityServer4AdminUI(this IServiceCollecti // Builds the options from user preferences or configuration. IdentityServer4AdminUIOptions options = new IdentityServer4AdminUIOptions(); optionsAction(options); + services.AddSingleton(options); // Add DbContexts for Asp.Net Core Identity, Logging and IdentityServer - Configuration store and Operational store if (!options.IsStaging) @@ -94,6 +96,14 @@ public static IServiceCollection AddIdentityServer4AdminUI(this IServiceCollecti services.AddAuthenticationServicesStaging(); } + // Add HSTS options + services.AddHsts(options => + { + options.Preload = true; + options.IncludeSubDomains = true; + options.MaxAge = TimeSpan.FromDays(365); + }); + // Add exception filters in MVC services.AddMvcExceptionFilters(); diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/IdentityServer4AdminUIOptions.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/IdentityServer4AdminUIOptions.cs index da760278d..70ec98e6c 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/IdentityServer4AdminUIOptions.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/IdentityServer4AdminUIOptions.cs @@ -5,6 +5,7 @@ using Skoruba.IdentityServer4.Admin.EntityFramework.Shared.Configuration; using Skoruba.IdentityServer4.Shared.Configuration.Common; using System; +using System.Collections.Generic; namespace Microsoft.Extensions.DependencyInjection { @@ -55,6 +56,10 @@ public class IdentityServer4AdminUIOptions /// public AzureKeyVaultConfiguration AzureKeyVault { get; set; } = new AzureKeyVaultConfiguration(); + /// + /// The trusted domains from which content can be downloaded. + /// + public List CspTrustedDomains { get; set; } = new List(); /// /// Applies configuration parsed from an appsettings file into these options. @@ -70,6 +75,7 @@ public void ApplyConfiguration(IConfiguration configuration) configuration.GetSection(nameof(DataProtectionConfiguration)).Bind(DataProtection); configuration.GetSection(nameof(AzureKeyVaultConfiguration)).Bind(AzureKeyVault); IdentityAction = options => configuration.GetSection(nameof(IdentityOptions)).Bind(options); + configuration.GetSection(ConfigurationConsts.CspTrustedDomainsKey).Bind(CspTrustedDomains); } } } diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/StartupHelpers.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/StartupHelpers.cs index c9de185f3..7518a55a5 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/StartupHelpers.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/StartupHelpers.cs @@ -41,6 +41,8 @@ using System.Globalization; using System.Linq; using System.Threading.Tasks; +using Microsoft.AspNetCore.HttpOverrides; +using System.Collections.Generic; namespace Skoruba.IdentityServer4.Admin.UI.Helpers { @@ -465,5 +467,70 @@ private static Task OnRedirectToIdentityProvider(RedirectContext n, AdminConfigu } } } + + /// + /// Using of Forwarded Headers, Hsts, XXssProtection and Csp + /// + /// + /// + public static void UseSecurityHeaders(this IApplicationBuilder app) + { + var forwardingOptions = new ForwardedHeadersOptions() + { + ForwardedHeaders = ForwardedHeaders.All + }; + + forwardingOptions.KnownNetworks.Clear(); + forwardingOptions.KnownProxies.Clear(); + + app.UseForwardedHeaders(forwardingOptions); + + app.UseXXssProtection(options => options.EnabledWithBlockMode()); + app.UseXContentTypeOptions(); + app.UseXfo(options => options.SameOrigin()); + app.UseReferrerPolicy(options => options.NoReferrer()); + + // CSP Configuration to be able to use external resources + var cspTrustedDomains = app.ApplicationServices.GetRequiredService().CspTrustedDomains; + if (cspTrustedDomains.Any()) + { + app.UseCsp(csp => + { + csp.ImageSources(options => + { + options.SelfSrc = true; + options.CustomSources = cspTrustedDomains; + options.Enabled = true; + }); + csp.FontSources(options => + { + options.SelfSrc = true; + options.CustomSources = cspTrustedDomains; + options.Enabled = true; + }); + csp.ScriptSources(options => + { + options.SelfSrc = true; + options.CustomSources = cspTrustedDomains; + options.Enabled = true; + options.UnsafeInlineSrc = true; + options.UnsafeEvalSrc = true; + }); + csp.StyleSources(options => + { + options.SelfSrc = true; + options.CustomSources = cspTrustedDomains; + options.Enabled = true; + options.UnsafeInlineSrc = true; + }); + csp.DefaultSources(options => + { + options.SelfSrc = true; + options.CustomSources = cspTrustedDomains; + options.Enabled = true; + }); + }); + } + } } } diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj b/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj index c5d9bd678..0bbd3a8ab 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj +++ b/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj @@ -158,6 +158,7 @@ + diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/Constants/ConfigurationConsts.cs b/src/Skoruba.IdentityServer4.Admin/Configuration/Constants/ConfigurationConsts.cs index 2431ff373..84e71e85a 100644 --- a/src/Skoruba.IdentityServer4.Admin/Configuration/Constants/ConfigurationConsts.cs +++ b/src/Skoruba.IdentityServer4.Admin/Configuration/Constants/ConfigurationConsts.cs @@ -9,7 +9,5 @@ public class ConfigurationConsts public const string IdentityServerDataConfigurationKey = "IdentityServerData"; public const string IdentityDataConfigurationKey = "IdentityData"; - - public const string CspTrustedDomainsKey = "CspTrustedDomains"; } } \ No newline at end of file diff --git a/src/Skoruba.IdentityServer4.Admin/Helpers/StartupHelpers.cs b/src/Skoruba.IdentityServer4.Admin/Helpers/StartupHelpers.cs deleted file mode 100644 index 1d90dca6e..000000000 --- a/src/Skoruba.IdentityServer4.Admin/Helpers/StartupHelpers.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System.Collections.Generic; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.HttpOverrides; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Skoruba.IdentityServer4.Admin.Configuration.Constants; -using System.Linq; - -namespace Skoruba.IdentityServer4.Admin.Helpers -{ - public static class StartupHelpers - { - /// - /// Using of Forwarded Headers, Hsts, XXssProtection and Csp - /// - /// - /// - public static void UseSecurityHeaders(this IApplicationBuilder app, IConfiguration configuration) - { - var forwardingOptions = new ForwardedHeadersOptions() - { - ForwardedHeaders = ForwardedHeaders.All - }; - - forwardingOptions.KnownNetworks.Clear(); - forwardingOptions.KnownProxies.Clear(); - - app.UseForwardedHeaders(forwardingOptions); - - app.UseXXssProtection(options => options.EnabledWithBlockMode()); - app.UseXContentTypeOptions(); - app.UseXfo(options => options.SameOrigin()); - app.UseReferrerPolicy(options => options.NoReferrer()); - - // CSP Configuration to be able to use external resources - var cspTrustedDomains = new List(); - configuration.GetSection(ConfigurationConsts.CspTrustedDomainsKey).Bind(cspTrustedDomains); - if (cspTrustedDomains.Any()) - { - app.UseCsp(csp => - { - csp.ImageSources(options => - { - options.SelfSrc = true; - options.CustomSources = cspTrustedDomains; - options.Enabled = true; - }); - csp.FontSources(options => - { - options.SelfSrc = true; - options.CustomSources = cspTrustedDomains; - options.Enabled = true; - }); - csp.ScriptSources(options => - { - options.SelfSrc = true; - options.CustomSources = cspTrustedDomains; - options.Enabled = true; - options.UnsafeInlineSrc = true; - options.UnsafeEvalSrc = true; - }); - csp.StyleSources(options => - { - options.SelfSrc = true; - options.CustomSources = cspTrustedDomains; - options.Enabled = true; - options.UnsafeInlineSrc = true; - }); - csp.DefaultSources(options => - { - options.SelfSrc = true; - options.CustomSources = cspTrustedDomains; - options.Enabled = true; - }); - }); - } - } - } -} diff --git a/src/Skoruba.IdentityServer4.Admin/Skoruba.IdentityServer4.Admin.csproj b/src/Skoruba.IdentityServer4.Admin/Skoruba.IdentityServer4.Admin.csproj index a8675a37c..ff1353cf6 100644 --- a/src/Skoruba.IdentityServer4.Admin/Skoruba.IdentityServer4.Admin.csproj +++ b/src/Skoruba.IdentityServer4.Admin/Skoruba.IdentityServer4.Admin.csproj @@ -35,7 +35,6 @@ - diff --git a/src/Skoruba.IdentityServer4.Admin/Startup.cs b/src/Skoruba.IdentityServer4.Admin/Startup.cs index f4de8167f..88928dcd6 100644 --- a/src/Skoruba.IdentityServer4.Admin/Startup.cs +++ b/src/Skoruba.IdentityServer4.Admin/Startup.cs @@ -49,8 +49,8 @@ public void ConfigureServices(IServiceCollection services) //// Add Asp.Net Core Identity Configuration and OpenIdConnect auth as well //RegisterAuthentication(services); - // Add HSTS options - RegisterHstsOptions(services); + //// Add HSTS options + //RegisterHstsOptions(services); //// Add exception filters in MVC //services.AddMvcExceptionFilters(); @@ -159,15 +159,15 @@ public virtual void UseAuthentication(IApplicationBuilder app) app.UseAuthentication(); } - public virtual void RegisterHstsOptions(IServiceCollection services) - { - services.AddHsts(options => - { - options.Preload = true; - options.IncludeSubDomains = true; - options.MaxAge = TimeSpan.FromDays(365); - }); - } + //public virtual void RegisterHstsOptions(IServiceCollection services) + // { + // services.AddHsts(options => + // { + // options.Preload = true; + // options.IncludeSubDomains = true; + // options.MaxAge = TimeSpan.FromDays(365); + // }); + // } protected IRootConfiguration CreateRootConfiguration() { From 6981527449e95f311a48c4f82a4f0495a46c9e31 Mon Sep 17 00:00:00 2001 From: Brice Date: Thu, 7 Jan 2021 16:11:55 +0100 Subject: [PATCH 16/38] Moved startup app building to UI project --- .../AdminUIApplicationBuilderExtensions.cs | 63 ++++++++++++++----- .../IdentityServer4AdminUIOptions.cs | 25 ++++++++ .../Helpers/StartupHelpers.cs | 5 +- .../AuthenticatedTestRequestMiddleware.cs | 2 +- .../Skoruba.IdentityServer4.Admin.UI.csproj | 1 + .../Configuration/Test/StartupTest.cs | 20 +++--- src/Skoruba.IdentityServer4.Admin/Startup.cs | 53 ++++++++-------- .../Common/HttpClientExtensions.cs | 5 +- 8 files changed, 114 insertions(+), 60 deletions(-) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Middlewares/AuthenticatedTestRequestMiddleware.cs (94%) diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ApplicationBuilder/AdminUIApplicationBuilderExtensions.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ApplicationBuilder/AdminUIApplicationBuilderExtensions.cs index 4a8a5bebb..6e82d290f 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ApplicationBuilder/AdminUIApplicationBuilderExtensions.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ApplicationBuilder/AdminUIApplicationBuilderExtensions.cs @@ -1,5 +1,9 @@ -using Microsoft.AspNetCore.Routing; +using HealthChecks.UI.Client; +using Microsoft.AspNetCore.Diagnostics.HealthChecks; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.DependencyInjection; using Skoruba.IdentityServer4.Admin.UI.Helpers; +using Skoruba.IdentityServer4.Admin.UI.Middlewares; namespace Microsoft.AspNetCore.Builder { @@ -12,27 +16,56 @@ public static class AdminUIApplicationBuilderExtensions /// public static IApplicationBuilder UseIdentityServer4AdminUI(this IApplicationBuilder app) { - // ... + IdentityServer4AdminUIOptions options = app.ApplicationServices.GetRequiredService(); + + app.UseCookiePolicy(); + + if (options.UseDeveloperExceptionPage) + { + app.UseDeveloperExceptionPage(); + } + else + { + app.UseExceptionHandler("/Home/Error"); + } + + if (options.UseHsts) + { + app.UseHsts(); + } + + app.UsePathBase(options.BasePath); + + // Add custom security headers + app.UseSecurityHeaders(options.CspTrustedDomains); + + app.UseStaticFiles(); + + app.UseAuthentication(); // Use Localization app.ConfigureLocalization(); - // ... + app.UseAuthorization(); + if (options.IsStaging) + { + app.UseMiddleware(); + } return app; } - ///// - ///// Maps the Skoruba IdentityServer4 Admin UI to the routes of this application. - ///// - ///// - //public static void MapIdentityServer4AdminUI(this IEndpointRouteBuilder endpoint) - //{ - // endpoint.MapDefaultControllerRoute(); - // //endpoint.MapHealthChecks("/health", new HealthCheckOptions - // //{ - // // ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse - // //}); - //} + /// + /// Maps the Skoruba IdentityServer4 Admin UI to the routes of this application. + /// + /// + public static void MapIdentityServer4AdminUI(this IEndpointRouteBuilder endpoint) + { + endpoint.MapDefaultControllerRoute(); + endpoint.MapHealthChecks("/health", new HealthCheckOptions + { + ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse + }); + } } } diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/IdentityServer4AdminUIOptions.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/IdentityServer4AdminUIOptions.cs index 70ec98e6c..e4ec4fc3e 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/IdentityServer4AdminUIOptions.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/IdentityServer4AdminUIOptions.cs @@ -6,6 +6,8 @@ using Skoruba.IdentityServer4.Shared.Configuration.Common; using System; using System.Collections.Generic; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Hosting; namespace Microsoft.Extensions.DependencyInjection { @@ -61,6 +63,15 @@ public class IdentityServer4AdminUIOptions /// public List CspTrustedDomains { get; set; } = new List(); + public string BasePath { get; set; } = ""; + + /// + /// Use the developer exception page instead of the Identity error handler. + /// + public bool UseDeveloperExceptionPage { get; set; } = false; + + public bool UseHsts { get; set; } = true; + /// /// Applies configuration parsed from an appsettings file into these options. /// @@ -77,5 +88,19 @@ public void ApplyConfiguration(IConfiguration configuration) IdentityAction = options => configuration.GetSection(nameof(IdentityOptions)).Bind(options); configuration.GetSection(ConfigurationConsts.CspTrustedDomainsKey).Bind(CspTrustedDomains); } + + public void ApplyConfiguration(IWebHostEnvironment env) + { + if (env.IsDevelopment()) + { + UseDeveloperExceptionPage = true; + UseHsts = false; + } + else + { + UseDeveloperExceptionPage = false; + UseHsts = true; + } + } } } diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/StartupHelpers.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/StartupHelpers.cs index 7518a55a5..fd324588a 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/StartupHelpers.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/StartupHelpers.cs @@ -473,7 +473,7 @@ private static Task OnRedirectToIdentityProvider(RedirectContext n, AdminConfigu /// /// /// - public static void UseSecurityHeaders(this IApplicationBuilder app) + public static void UseSecurityHeaders(this IApplicationBuilder app, List cspTrustedDomains) { var forwardingOptions = new ForwardedHeadersOptions() { @@ -491,8 +491,7 @@ public static void UseSecurityHeaders(this IApplicationBuilder app) app.UseReferrerPolicy(options => options.NoReferrer()); // CSP Configuration to be able to use external resources - var cspTrustedDomains = app.ApplicationServices.GetRequiredService().CspTrustedDomains; - if (cspTrustedDomains.Any()) + if (cspTrustedDomains != null && cspTrustedDomains.Any()) { app.UseCsp(csp => { diff --git a/src/Skoruba.IdentityServer4.Admin/Middlewares/AuthenticatedTestRequestMiddleware.cs b/src/Skoruba.IdentityServer4.Admin.UI/Middlewares/AuthenticatedTestRequestMiddleware.cs similarity index 94% rename from src/Skoruba.IdentityServer4.Admin/Middlewares/AuthenticatedTestRequestMiddleware.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Middlewares/AuthenticatedTestRequestMiddleware.cs index 9e9971f09..c873ccee9 100644 --- a/src/Skoruba.IdentityServer4.Admin/Middlewares/AuthenticatedTestRequestMiddleware.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Middlewares/AuthenticatedTestRequestMiddleware.cs @@ -4,7 +4,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Http; -namespace Skoruba.IdentityServer4.Admin.Middlewares +namespace Skoruba.IdentityServer4.Admin.UI.Middlewares { public class AuthenticatedTestRequestMiddleware { diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj b/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj index 0bbd3a8ab..367ba95ea 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj +++ b/src/Skoruba.IdentityServer4.Admin.UI/Skoruba.IdentityServer4.Admin.UI.csproj @@ -159,6 +159,7 @@ + diff --git a/src/Skoruba.IdentityServer4.Admin/Configuration/Test/StartupTest.cs b/src/Skoruba.IdentityServer4.Admin/Configuration/Test/StartupTest.cs index e717c09da..27e620865 100644 --- a/src/Skoruba.IdentityServer4.Admin/Configuration/Test/StartupTest.cs +++ b/src/Skoruba.IdentityServer4.Admin/Configuration/Test/StartupTest.cs @@ -1,15 +1,10 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Skoruba.IdentityServer4.Admin.EntityFramework.Shared.DbContexts; -using Skoruba.IdentityServer4.Admin.EntityFramework.Shared.Entities.Identity; -using Skoruba.IdentityServer4.Admin.Helpers; -using Skoruba.IdentityServer4.Admin.Middlewares; namespace Skoruba.IdentityServer4.Admin.Configuration.Test { - public class StartupTest : Startup + public class StartupTest : Startup { public StartupTest(IWebHostEnvironment env, IConfiguration configuration) : base(env, configuration) { @@ -19,6 +14,7 @@ public override void ConfigureUIOptions(IdentityServer4AdminUIOptions options) { // Applies configuration from appsettings. options.ApplyConfiguration(Configuration); + options.ApplyConfiguration(HostingEnvironment); // Use staging DbContexts and auth services. options.IsStaging = true; @@ -40,10 +36,10 @@ public override void ConfigureUIOptions(IdentityServer4AdminUIOptions options) // services.AddAuthorizationPolicies(rootConfiguration); //} - public override void UseAuthentication(IApplicationBuilder app) - { - app.UseAuthentication(); - app.UseMiddleware(); - } + //public override void UseAuthentication(IApplicationBuilder app) + //{ + // app.UseAuthentication(); + // app.UseMiddleware(); + //} } } diff --git a/src/Skoruba.IdentityServer4.Admin/Startup.cs b/src/Skoruba.IdentityServer4.Admin/Startup.cs index 88928dcd6..dd624de02 100644 --- a/src/Skoruba.IdentityServer4.Admin/Startup.cs +++ b/src/Skoruba.IdentityServer4.Admin/Startup.cs @@ -88,26 +88,26 @@ public void ConfigureServices(IServiceCollection services) public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) { - app.UseCookiePolicy(); + // app.UseCookiePolicy(); - if (env.IsDevelopment()) - { - app.UseDeveloperExceptionPage(); - } - else - { - app.UseExceptionHandler("/Home/Error"); - app.UseHsts(); - } + // if (env.IsDevelopment()) + // { + // app.UseDeveloperExceptionPage(); + // } + // else + // { + // app.UseExceptionHandler("/Home/Error"); + // app.UseHsts(); + // } - app.UsePathBase(Configuration.GetValue("BasePath")); + // app.UsePathBase(Configuration.GetValue("BasePath")); - // Add custom security headers - app.UseSecurityHeaders(Configuration); + // // Add custom security headers + // app.UseSecurityHeaders(Configuration); - app.UseStaticFiles(); + // app.UseStaticFiles(); - UseAuthentication(app); + // UseAuthentication(app); //// Use Localization //app.ConfigureLocalization(); @@ -115,16 +115,16 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerF app.UseIdentityServer4AdminUI(); app.UseRouting(); - app.UseAuthorization(); + //app.UseAuthorization(); app.UseEndpoints(endpoint => { - //endpoint.MapIdentityServer4AdminUI(); + endpoint.MapIdentityServer4AdminUI(); - endpoint.MapDefaultControllerRoute(); - endpoint.MapHealthChecks("/health", new HealthCheckOptions - { - ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse - }); + //endpoint.MapDefaultControllerRoute(); + //endpoint.MapHealthChecks("/health", new HealthCheckOptions + //{ + // ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse + //}); }); } @@ -132,6 +132,7 @@ public virtual void ConfigureUIOptions(IdentityServer4AdminUIOptions options) { // Applies configuration from appsettings. options.ApplyConfiguration(Configuration); + options.ApplyConfiguration(HostingEnvironment); // Use production DbContexts and auth services. options.IsStaging = false; @@ -154,10 +155,10 @@ public virtual void ConfigureUIOptions(IdentityServer4AdminUIOptions options) // services.AddAuthorizationPolicies(rootConfiguration); //} - public virtual void UseAuthentication(IApplicationBuilder app) - { - app.UseAuthentication(); - } + //public virtual void UseAuthentication(IApplicationBuilder app) + //{ + // app.UseAuthentication(); + //} //public virtual void RegisterHstsOptions(IServiceCollection services) // { diff --git a/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Common/HttpClientExtensions.cs b/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Common/HttpClientExtensions.cs index 0e4ab77f4..7ba31b6eb 100644 --- a/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Common/HttpClientExtensions.cs +++ b/tests/Skoruba.IdentityServer4.Admin.IntegrationTests/Common/HttpClientExtensions.cs @@ -2,13 +2,12 @@ using System.IdentityModel.Tokens.Jwt; using System.Net.Http; using System.Security.Claims; -using Skoruba.IdentityServer4.Admin.Configuration; -using Skoruba.IdentityServer4.Admin.Middlewares; using Skoruba.IdentityServer4.Admin.UI.Configuration; +using Skoruba.IdentityServer4.Admin.UI.Middlewares; namespace Skoruba.IdentityServer4.Admin.IntegrationTests.Common { - public static class HttpClientExtensions + public static class HttpClientExtensions { public static void SetAdminClaimsViaHeaders(this HttpClient client, AdminConfiguration adminConfiguration) { From 081f67f0e3862cf2e2b8ff41cff765cb704333ae Mon Sep 17 00:00:00 2001 From: Brice Date: Thu, 7 Jan 2021 16:16:09 +0100 Subject: [PATCH 17/38] Fixed authorization middleware setup --- .../AdminUIApplicationBuilderExtensions.cs | 8 +++----- src/Skoruba.IdentityServer4.Admin/Startup.cs | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ApplicationBuilder/AdminUIApplicationBuilderExtensions.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ApplicationBuilder/AdminUIApplicationBuilderExtensions.cs index 6e82d290f..6d96bab6f 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ApplicationBuilder/AdminUIApplicationBuilderExtensions.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/ApplicationBuilder/AdminUIApplicationBuilderExtensions.cs @@ -42,16 +42,14 @@ public static IApplicationBuilder UseIdentityServer4AdminUI(this IApplicationBui app.UseStaticFiles(); app.UseAuthentication(); - - // Use Localization - app.ConfigureLocalization(); - - app.UseAuthorization(); if (options.IsStaging) { app.UseMiddleware(); } + // Use Localization + app.ConfigureLocalization(); + return app; } diff --git a/src/Skoruba.IdentityServer4.Admin/Startup.cs b/src/Skoruba.IdentityServer4.Admin/Startup.cs index dd624de02..704e171bd 100644 --- a/src/Skoruba.IdentityServer4.Admin/Startup.cs +++ b/src/Skoruba.IdentityServer4.Admin/Startup.cs @@ -115,7 +115,7 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerF app.UseIdentityServer4AdminUI(); app.UseRouting(); - //app.UseAuthorization(); + app.UseAuthorization(); app.UseEndpoints(endpoint => { endpoint.MapIdentityServer4AdminUI(); From a3e9b20cac32ae3c5b426bfbbdae28818a4d6c8b Mon Sep 17 00:00:00 2001 From: Brice Date: Thu, 7 Jan 2021 17:04:13 +0100 Subject: [PATCH 18/38] Fixed UI view build --- .../Helpers/DateTimeHelpers.cs | 2 +- .../AdminUIServiceCollectionExtensions.cs | 1 + .../Views/Account/AccessDenied.cshtml | 10 +++---- .../Views/Grant/PersistedGrant.cshtml | 2 +- .../Views/Home/Index.cshtml | 8 +++--- .../Views/Log/ErrorsLog.cshtml | 2 +- .../Views/Shared/Common/ErrorPage.cshtml | 2 +- .../Views/Shared/Common/Notification.cshtml | 2 +- .../Views/Shared/Common/Pager.cshtml | 2 +- .../Views/Shared/_Layout.cshtml | 28 +++++++++---------- 10 files changed, 30 insertions(+), 29 deletions(-) rename src/{Skoruba.IdentityServer4.Admin => Skoruba.IdentityServer4.Admin.UI}/Helpers/DateTimeHelpers.cs (86%) diff --git a/src/Skoruba.IdentityServer4.Admin/Helpers/DateTimeHelpers.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DateTimeHelpers.cs similarity index 86% rename from src/Skoruba.IdentityServer4.Admin/Helpers/DateTimeHelpers.cs rename to src/Skoruba.IdentityServer4.Admin.UI/Helpers/DateTimeHelpers.cs index 52f0bba78..25a42d60e 100644 --- a/src/Skoruba.IdentityServer4.Admin/Helpers/DateTimeHelpers.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DateTimeHelpers.cs @@ -1,6 +1,6 @@ using System; -namespace Skoruba.IdentityServer4.Admin.Helpers +namespace Skoruba.IdentityServer4.Admin.UI.Helpers { public static class DateTimeHelpers { diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/AdminUIServiceCollectionExtensions.cs b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/AdminUIServiceCollectionExtensions.cs index 83916bf5e..62344c5e2 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/AdminUIServiceCollectionExtensions.cs +++ b/src/Skoruba.IdentityServer4.Admin.UI/Helpers/DependencyInjection/AdminUIServiceCollectionExtensions.cs @@ -66,6 +66,7 @@ public static IServiceCollection AddIdentityServer4AdminUI(this IServiceCollecti IdentityServer4AdminUIOptions options = new IdentityServer4AdminUIOptions(); optionsAction(options); services.AddSingleton(options); + services.AddSingleton(options.Admin); // Add DbContexts for Asp.Net Core Identity, Logging and IdentityServer - Configuration store and Operational store if (!options.IsStaging) diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Views/Account/AccessDenied.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Account/AccessDenied.cshtml index 54ddc7acc..a92dd2314 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Views/Account/AccessDenied.cshtml +++ b/src/Skoruba.IdentityServer4.Admin.UI/Views/Account/AccessDenied.cshtml @@ -1,15 +1,15 @@ @using Microsoft.AspNetCore.Mvc.Localization -@using Skoruba.IdentityServer4.Admin.Configuration.Interfaces +@using Skoruba.IdentityServer4.Admin.UI.Configuration @inject IViewLocalizer Localizer -@inject IRootConfiguration RootConfiguration +@inject AdminConfiguration AdminConfiguration @{ Layout = null; } - - + + @Localizer["PageTitle"] @@ -34,7 +34,7 @@

- @Localizer["ReturnToIdentityServer"] + @Localizer["ReturnToIdentityServer"] @Localizer["Logout"] diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Views/Grant/PersistedGrant.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Grant/PersistedGrant.cshtml index 92340d4d4..740218e62 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Views/Grant/PersistedGrant.cshtml +++ b/src/Skoruba.IdentityServer4.Admin.UI/Views/Grant/PersistedGrant.cshtml @@ -1,6 +1,6 @@ @using Microsoft.AspNetCore.Mvc.Localization @using Skoruba.IdentityServer4.Admin.BusinessLogic.Identity.Dtos.Grant -@using Skoruba.IdentityServer4.Admin.Helpers +@using Skoruba.IdentityServer4.Admin.UI.Helpers @using Skoruba.IdentityServer4.Admin.BusinessLogic.Shared.Dtos.Common @model PersistedGrantsDto @inject IViewLocalizer Localizer diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Views/Home/Index.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Home/Index.cshtml index 963d3ecf1..25a98eb4a 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Views/Home/Index.cshtml +++ b/src/Skoruba.IdentityServer4.Admin.UI/Views/Home/Index.cshtml @@ -1,15 +1,15 @@ @using Microsoft.AspNetCore.Mvc.Localization -@using Skoruba.IdentityServer4.Admin.Configuration.Interfaces -@inject IRootConfiguration RootConfiguration +@using Skoruba.IdentityServer4.Admin.UI.Configuration +@inject AdminConfiguration AdminConfiguration @inject IViewLocalizer Localizer @{ - ViewBag.Title = RootConfiguration.AdminConfiguration.PageTitle; + ViewBag.Title = AdminConfiguration.PageTitle; Layout = "_Layout"; }
-

@RootConfiguration.AdminConfiguration.PageTitle

+

@AdminConfiguration.PageTitle

@Localizer["PageSubTitle"]

diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Views/Log/ErrorsLog.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Log/ErrorsLog.cshtml index d7fff1d4c..e7450aab7 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Views/Log/ErrorsLog.cshtml +++ b/src/Skoruba.IdentityServer4.Admin.UI/Views/Log/ErrorsLog.cshtml @@ -1,6 +1,6 @@ @using Microsoft.AspNetCore.Mvc.Localization @using Skoruba.IdentityServer4.Admin.BusinessLogic.Shared.Dtos.Common -@using Skoruba.IdentityServer4.Admin.Helpers +@using Skoruba.IdentityServer4.Admin.UI.Helpers @model Skoruba.IdentityServer4.Admin.BusinessLogic.Dtos.Log.LogsDto @inject IViewLocalizer Localizer diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/ErrorPage.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/ErrorPage.cshtml index 8bfc61a88..844927018 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/ErrorPage.cshtml +++ b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/ErrorPage.cshtml @@ -1,6 +1,6 @@ @using Microsoft.AspNetCore.Mvc.Localization @using Newtonsoft.Json -@using Skoruba.IdentityServer4.Admin.Helpers +@using Skoruba.IdentityServer4.Admin.UI.Helpers @inject IViewLocalizer Localizer @{ ViewData["Title"] = "Error"; diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/Notification.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/Notification.cshtml index ff49daed6..8d2fe75a2 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/Notification.cshtml +++ b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/Notification.cshtml @@ -1,5 +1,5 @@ @using Newtonsoft.Json -@using Skoruba.IdentityServer4.Admin.Helpers +@using Skoruba.IdentityServer4.Admin.UI.Helpers @if (ViewBag.Notifications != null) { var settings = new JsonSerializerSettings diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/Pager.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/Pager.cshtml index c8374d814..8c9e52e72 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/Pager.cshtml +++ b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/Common/Pager.cshtml @@ -1,5 +1,5 @@ @using Microsoft.AspNetCore.Mvc.Localization -@using Skoruba.IdentityServer4.Admin.Helpers +@using Skoruba.IdentityServer4.Admin.UI.Helpers @model Skoruba.IdentityServer4.Admin.BusinessLogic.Shared.Dtos.Common.Pager @inject IViewLocalizer Localizer @{ diff --git a/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/_Layout.cshtml b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/_Layout.cshtml index 0327ad3c5..d622cf70d 100644 --- a/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/_Layout.cshtml +++ b/src/Skoruba.IdentityServer4.Admin.UI/Views/Shared/_Layout.cshtml @@ -1,38 +1,38 @@ @using IdentityServer4.Extensions @using Microsoft.AspNetCore.Mvc.Localization -@using Skoruba.IdentityServer4.Admin.Configuration.Interfaces +@using Skoruba.IdentityServer4.Admin.UI.Configuration @inject IViewLocalizer Localizer -@inject IRootConfiguration RootConfiguration +@inject AdminConfiguration AdminConfiguration - - - @ViewData["Title"] - @RootConfiguration.AdminConfiguration.PageTitle + + + @ViewData["Title"] - @AdminConfiguration.PageTitle - @if (!string.IsNullOrEmpty(RootConfiguration.AdminConfiguration.Theme)) + @if (!string.IsNullOrEmpty(AdminConfiguration.Theme)) { - + } - @if (!string.IsNullOrEmpty(RootConfiguration.AdminConfiguration.Theme)) + @if (!string.IsNullOrEmpty(AdminConfiguration.Theme)) { - + } - @if (!string.IsNullOrEmpty(RootConfiguration.AdminConfiguration.CustomThemeCss)) + @if (!string.IsNullOrEmpty(AdminConfiguration.CustomThemeCss)) { - + } @await RenderSectionAsync("styles", required: false) @@ -41,7 +41,7 @@