diff --git a/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Pages/Account/IdentityServerSupportedLoginModel.cs b/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Pages/Account/IdentityServerSupportedLoginModel.cs index b6902e86d8..f1abf44750 100644 --- a/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Pages/Account/IdentityServerSupportedLoginModel.cs +++ b/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Pages/Account/IdentityServerSupportedLoginModel.cs @@ -1,4 +1,4 @@ -using IdentityModel; +using IdentityModel; using IdentityServer4.Events; using IdentityServer4.Models; using IdentityServer4.Services; @@ -12,8 +12,10 @@ using System.Linq; using System.Security.Claims; using System.Security.Principal; using System.Threading.Tasks; +using Volo.Abp.Account.Web.Settings; using Volo.Abp.DependencyInjection; using Volo.Abp.MultiTenancy; +using Volo.Abp.Settings; using Volo.Abp.Uow; namespace Volo.Abp.Account.Web.Pages.Account @@ -40,7 +42,7 @@ namespace Volo.Abp.Account.Web.Pages.Account IdentityServerEvents = identityServerEvents; } - public override async Task OnGetAsync() + public override async Task OnGetAsync() { LoginInput = new LoginInputModel(); @@ -63,7 +65,7 @@ namespace Volo.Abp.Account.Web.Pages.Account { LoginInput.UserNameOrEmailAddress = context.LoginHint; ExternalProviders = new[] { new ExternalProviderModel { AuthenticationScheme = context.IdP } }; - return; + return Page(); } var schemes = await _schemeProvider.GetAllSchemesAsync(); @@ -77,7 +79,7 @@ namespace Volo.Abp.Account.Web.Pages.Account }) .ToList(); - EnableLocalLogin = true; //TODO: We can get default from a setting? + EnableLocalLogin = await SettingProvider.IsTrueAsync(AccountSettingNames.EnableLocalLogin); if (context?.ClientId != null) { var client = await ClientStore.FindEnabledClientByIdAsync(context.ClientId); @@ -96,15 +98,16 @@ namespace Volo.Abp.Account.Web.Pages.Account if (IsExternalLoginOnly) { - //return await ExternalLogin(vm.ExternalLoginScheme, returnUrl); - throw new NotImplementedException(); + return await base.OnPostExternalLogin(providers.First().AuthenticationScheme); } + + return Page(); } [UnitOfWork] //TODO: Will be removed when we implement action filter public override async Task OnPostAsync(string action) { - EnableLocalLogin = true; //TODO: We can get default from a setting? + EnableLocalLogin = await SettingProvider.IsTrueAsync(AccountSettingNames.EnableLocalLogin); if (action == "Cancel") { diff --git a/modules/account/src/Volo.Abp.Account.Web/Areas/Account/Controllers/LogoutController.cs b/modules/account/src/Volo.Abp.Account.Web/Areas/Account/Controllers/LogoutController.cs index 1f1b43b853..eb7d1cbc84 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Areas/Account/Controllers/LogoutController.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Areas/Account/Controllers/LogoutController.cs @@ -17,10 +17,15 @@ namespace Volo.Abp.Account.Web.Areas.Account.Controllers } //todo@alper: this method can be moved to AccountController like "account/logout" - public async Task Index() + public async Task Index(string returnUrl = null) { await _signInManager.SignOutAsync(); + if (returnUrl != null) + { + return LocalRedirect(returnUrl); + } + return RedirectToPage("/Account/Login"); } } diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs index cc82de414f..e7e625416a 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs @@ -10,8 +10,10 @@ using System.Diagnostics; using System.Linq; using System.Security.Claims; using System.Threading.Tasks; +using Volo.Abp.Account.Web.Settings; using Volo.Abp.Identity; using Volo.Abp.Security.Claims; +using Volo.Abp.Settings; using Volo.Abp.Uow; using Volo.Abp.Validation; using IdentityUser = Volo.Abp.Identity.IdentityUser; @@ -56,7 +58,7 @@ namespace Volo.Abp.Account.Web.Pages.Account _accountOptions = accountOptions.Value; } - public virtual async Task OnGetAsync() + public virtual async Task OnGetAsync() { LoginInput = new LoginInputModel(); @@ -71,8 +73,8 @@ namespace Volo.Abp.Account.Web.Pages.Account }) .ToList(); - EnableLocalLogin = true; //TODO: We can get default from a setting? - + EnableLocalLogin = await SettingProvider.IsTrueAsync(AccountSettingNames.EnableLocalLogin); + ExternalProviders = providers.ToArray(); if (IsExternalLoginOnly) @@ -80,12 +82,14 @@ namespace Volo.Abp.Account.Web.Pages.Account //return await ExternalLogin(vm.ExternalLoginScheme, returnUrl); throw new NotImplementedException(); } + + return Page(); } [UnitOfWork] //TODO: Will be removed when we implement action filter public virtual async Task OnPostAsync(string action) { - EnableLocalLogin = true; //TODO: We can get default from a setting? + EnableLocalLogin = await SettingProvider.IsTrueAsync(AccountSettingNames.EnableLocalLogin); ValidateModel(); diff --git a/modules/account/src/Volo.Abp.Account.Web/Settings/AccountSettingDefinitionProvider.cs b/modules/account/src/Volo.Abp.Account.Web/Settings/AccountSettingDefinitionProvider.cs index 8d3ccba7c9..be16fa7045 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Settings/AccountSettingDefinitionProvider.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Settings/AccountSettingDefinitionProvider.cs @@ -9,6 +9,10 @@ namespace Volo.Abp.Account.Web.Settings context.Add( new SettingDefinition(AccountSettingNames.IsSelfRegistrationEnabled, "true") ); + + context.Add( + new SettingDefinition(AccountSettingNames.EnableLocalLogin, "true") + ); } } } \ No newline at end of file diff --git a/modules/account/src/Volo.Abp.Account.Web/Settings/AccountSettingNames.cs b/modules/account/src/Volo.Abp.Account.Web/Settings/AccountSettingNames.cs index 3122dbdc6a..a167be0ce8 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Settings/AccountSettingNames.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Settings/AccountSettingNames.cs @@ -3,5 +3,7 @@ public class AccountSettingNames { public const string IsSelfRegistrationEnabled = "Abp.Account.IsSelfRegistrationEnabled"; + + public const string EnableLocalLogin = "Abp.Account.EnableLocalLogin"; } }