From 391713b84dc960fe76c958c6c886e10d7198fa76 Mon Sep 17 00:00:00 2001 From: Shaun Walker Date: Wed, 20 Apr 2022 16:00:58 -0400 Subject: [PATCH] Fix #2144 - install issue, Fix #2146 - move file issue, require verification of external login account linkage --- Oqtane.Client/Modules/Admin/Login/Index.razor | 39 +++++++++--- .../Resources/Modules/Admin/Login/Index.resx | 28 ++++++++- Oqtane.Client/Services/AliasService.cs | 10 +-- Oqtane.Client/Services/DatabaseService.cs | 10 +-- Oqtane.Client/Services/FileService.cs | 6 +- Oqtane.Client/Services/FolderService.cs | 9 +-- Oqtane.Client/Services/InstallationService.cs | 2 +- .../Services/Interfaces/IUserService.cs | 13 ++++ Oqtane.Client/Services/JobLogService.cs | 9 +-- Oqtane.Client/Services/JobService.cs | 9 +-- Oqtane.Client/Services/LanguageService.cs | 12 +--- Oqtane.Client/Services/LocalizationService.cs | 9 +-- Oqtane.Client/Services/LogService.cs | 6 +- .../Services/ModuleDefinitionService.cs | 11 +--- Oqtane.Client/Services/ModuleService.cs | 10 +-- Oqtane.Client/Services/NotificationService.cs | 9 +-- Oqtane.Client/Services/PackageService.cs | 8 +-- Oqtane.Client/Services/PageModuleService.cs | 10 +-- Oqtane.Client/Services/PageService.cs | 11 +--- Oqtane.Client/Services/ProfileService.cs | 10 +-- Oqtane.Client/Services/RoleService.cs | 11 +--- Oqtane.Client/Services/SettingService.cs | 10 +-- Oqtane.Client/Services/SiteService.cs | 10 +-- Oqtane.Client/Services/SiteTemplateService.cs | 8 +-- Oqtane.Client/Services/SqlService.cs | 9 +-- Oqtane.Client/Services/SyncService.cs | 13 +--- Oqtane.Client/Services/SystemService.cs | 9 +-- Oqtane.Client/Services/TenantService.cs | 9 +-- Oqtane.Client/Services/ThemeService.cs | 9 +-- Oqtane.Client/Services/UrlMappingService.cs | 11 +--- Oqtane.Client/Services/UserRoleService.cs | 10 +-- Oqtane.Client/Services/UserService.cs | 15 ++--- Oqtane.Client/Services/VisitorService.cs | 11 +--- Oqtane.Server/Controllers/FileController.cs | 1 + Oqtane.Server/Controllers/UserController.cs | 38 ++++++++++- ...taneSiteAuthenticationBuilderExtensions.cs | 63 +++++++++++++------ Oqtane.Server/Pages/Login.cshtml.cs | 1 - Oqtane.Server/Security/PrincipalValidator.cs | 4 +- Oqtane.Server/Startup.cs | 4 +- Oqtane.Shared/Enums/ExternalLoginStatus.cs | 13 ++++ 40 files changed, 234 insertions(+), 256 deletions(-) create mode 100644 Oqtane.Shared/Enums/ExternalLoginStatus.cs diff --git a/Oqtane.Client/Modules/Admin/Login/Index.razor b/Oqtane.Client/Modules/Admin/Login/Index.razor index f6f11fcf..c8e61d38 100644 --- a/Oqtane.Client/Modules/Admin/Login/Index.razor +++ b/Oqtane.Client/Modules/Admin/Login/Index.razor @@ -117,22 +117,47 @@ _username = PageState.QueryString["name"]; } - if (PageState.QueryString.ContainsKey("token")) + if (PageState.QueryString.ContainsKey("token") && !string.IsNullOrEmpty(_username)) { var user = new User(); user.SiteId = PageState.Site.SiteId; user.Username = _username; - user = await UserService.VerifyEmailAsync(user, PageState.QueryString["token"]); - if (user != null) + if (PageState.QueryString.ContainsKey("key")) { - await logger.LogInformation(LogFunction.Security, "Email Verified For For Username {Username}", _username); - AddModuleMessage(Localizer["Success.Account.Verified"], MessageType.Info); + user = await UserService.LinkUserAsync(user, PageState.QueryString["token"], PageState.Site.Settings["ExternalLogin:ProviderType"], PageState.QueryString["key"], PageState.Site.Settings["ExternalLogin:ProviderName"]); + if (user != null) + { + await logger.LogInformation(LogFunction.Security, "External Login Linkage Successful For Username {Username}", _username); + AddModuleMessage(Localizer["Success.Account.Linked"], MessageType.Info); + } + else + { + await logger.LogError(LogFunction.Security, "External Login Linkage Failed For Username {Username}", _username); + AddModuleMessage(Localizer["Message.Account.NotLinked"], MessageType.Warning); + } + _username = ""; } else { - await logger.LogError(LogFunction.Security, "Email Verification Failed For Username {Username}", _username); - AddModuleMessage(Localizer["Message.Account.NotVerfied"], MessageType.Warning); + user = await UserService.VerifyEmailAsync(user, PageState.QueryString["token"]); + if (user != null) + { + await logger.LogInformation(LogFunction.Security, "Email Verified For For Username {Username}", _username); + AddModuleMessage(Localizer["Success.Account.Verified"], MessageType.Info); + } + else + { + await logger.LogError(LogFunction.Security, "Email Verification Failed For Username {Username}", _username); + AddModuleMessage(Localizer["Message.Account.NotVerified"], MessageType.Warning); + } + } + } + else + { + if (PageState.QueryString.ContainsKey("status")) + { + AddModuleMessage(Localizer["ExternalLoginStatus." + PageState.QueryString["status"]], MessageType.Info); } } } diff --git a/Oqtane.Client/Resources/Modules/Admin/Login/Index.resx b/Oqtane.Client/Resources/Modules/Admin/Login/Index.resx index 33c9fb60..af56fc05 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Login/Index.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Login/Index.resx @@ -1,4 +1,4 @@ - +