Browse Source

Merge pull request #2177 from abpframework/maliming/ExternalLoginOnly

Implement external login only.
pull/2272/head
Halil İbrahim Kalkan 7 years ago
committed by GitHub
parent
commit
66434a6979
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 17
      modules/account/src/Volo.Abp.Account.Web.IdentityServer/Pages/Account/IdentityServerSupportedLoginModel.cs
  2. 7
      modules/account/src/Volo.Abp.Account.Web/Areas/Account/Controllers/LogoutController.cs
  3. 12
      modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs
  4. 4
      modules/account/src/Volo.Abp.Account.Web/Settings/AccountSettingDefinitionProvider.cs
  5. 2
      modules/account/src/Volo.Abp.Account.Web/Settings/AccountSettingNames.cs

17
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.Events;
using IdentityServer4.Models; using IdentityServer4.Models;
using IdentityServer4.Services; using IdentityServer4.Services;
@ -12,8 +12,10 @@ using System.Linq;
using System.Security.Claims; using System.Security.Claims;
using System.Security.Principal; using System.Security.Principal;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.Account.Web.Settings;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.MultiTenancy; using Volo.Abp.MultiTenancy;
using Volo.Abp.Settings;
using Volo.Abp.Uow; using Volo.Abp.Uow;
namespace Volo.Abp.Account.Web.Pages.Account namespace Volo.Abp.Account.Web.Pages.Account
@ -40,7 +42,7 @@ namespace Volo.Abp.Account.Web.Pages.Account
IdentityServerEvents = identityServerEvents; IdentityServerEvents = identityServerEvents;
} }
public override async Task OnGetAsync() public override async Task<IActionResult> OnGetAsync()
{ {
LoginInput = new LoginInputModel(); LoginInput = new LoginInputModel();
@ -63,7 +65,7 @@ namespace Volo.Abp.Account.Web.Pages.Account
{ {
LoginInput.UserNameOrEmailAddress = context.LoginHint; LoginInput.UserNameOrEmailAddress = context.LoginHint;
ExternalProviders = new[] { new ExternalProviderModel { AuthenticationScheme = context.IdP } }; ExternalProviders = new[] { new ExternalProviderModel { AuthenticationScheme = context.IdP } };
return; return Page();
} }
var schemes = await _schemeProvider.GetAllSchemesAsync(); var schemes = await _schemeProvider.GetAllSchemesAsync();
@ -77,7 +79,7 @@ namespace Volo.Abp.Account.Web.Pages.Account
}) })
.ToList(); .ToList();
EnableLocalLogin = true; //TODO: We can get default from a setting? EnableLocalLogin = await SettingProvider.IsTrueAsync(AccountSettingNames.EnableLocalLogin);
if (context?.ClientId != null) if (context?.ClientId != null)
{ {
var client = await ClientStore.FindEnabledClientByIdAsync(context.ClientId); var client = await ClientStore.FindEnabledClientByIdAsync(context.ClientId);
@ -96,15 +98,16 @@ namespace Volo.Abp.Account.Web.Pages.Account
if (IsExternalLoginOnly) if (IsExternalLoginOnly)
{ {
//return await ExternalLogin(vm.ExternalLoginScheme, returnUrl); return await base.OnPostExternalLogin(providers.First().AuthenticationScheme);
throw new NotImplementedException();
} }
return Page();
} }
[UnitOfWork] //TODO: Will be removed when we implement action filter [UnitOfWork] //TODO: Will be removed when we implement action filter
public override async Task<IActionResult> OnPostAsync(string action) public override async Task<IActionResult> OnPostAsync(string action)
{ {
EnableLocalLogin = true; //TODO: We can get default from a setting? EnableLocalLogin = await SettingProvider.IsTrueAsync(AccountSettingNames.EnableLocalLogin);
if (action == "Cancel") if (action == "Cancel")
{ {

7
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" //todo@alper: this method can be moved to AccountController like "account/logout"
public async Task<IActionResult> Index() public async Task<IActionResult> Index(string returnUrl = null)
{ {
await _signInManager.SignOutAsync(); await _signInManager.SignOutAsync();
if (returnUrl != null)
{
return LocalRedirect(returnUrl);
}
return RedirectToPage("/Account/Login"); return RedirectToPage("/Account/Login");
} }
} }

12
modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs

@ -10,8 +10,10 @@ using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Security.Claims; using System.Security.Claims;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.Account.Web.Settings;
using Volo.Abp.Identity; using Volo.Abp.Identity;
using Volo.Abp.Security.Claims; using Volo.Abp.Security.Claims;
using Volo.Abp.Settings;
using Volo.Abp.Uow; using Volo.Abp.Uow;
using Volo.Abp.Validation; using Volo.Abp.Validation;
using IdentityUser = Volo.Abp.Identity.IdentityUser; using IdentityUser = Volo.Abp.Identity.IdentityUser;
@ -56,7 +58,7 @@ namespace Volo.Abp.Account.Web.Pages.Account
_accountOptions = accountOptions.Value; _accountOptions = accountOptions.Value;
} }
public virtual async Task OnGetAsync() public virtual async Task<IActionResult> OnGetAsync()
{ {
LoginInput = new LoginInputModel(); LoginInput = new LoginInputModel();
@ -71,8 +73,8 @@ namespace Volo.Abp.Account.Web.Pages.Account
}) })
.ToList(); .ToList();
EnableLocalLogin = true; //TODO: We can get default from a setting? EnableLocalLogin = await SettingProvider.IsTrueAsync(AccountSettingNames.EnableLocalLogin);
ExternalProviders = providers.ToArray(); ExternalProviders = providers.ToArray();
if (IsExternalLoginOnly) if (IsExternalLoginOnly)
@ -80,12 +82,14 @@ namespace Volo.Abp.Account.Web.Pages.Account
//return await ExternalLogin(vm.ExternalLoginScheme, returnUrl); //return await ExternalLogin(vm.ExternalLoginScheme, returnUrl);
throw new NotImplementedException(); throw new NotImplementedException();
} }
return Page();
} }
[UnitOfWork] //TODO: Will be removed when we implement action filter [UnitOfWork] //TODO: Will be removed when we implement action filter
public virtual async Task<IActionResult> OnPostAsync(string action) public virtual async Task<IActionResult> OnPostAsync(string action)
{ {
EnableLocalLogin = true; //TODO: We can get default from a setting? EnableLocalLogin = await SettingProvider.IsTrueAsync(AccountSettingNames.EnableLocalLogin);
ValidateModel(); ValidateModel();

4
modules/account/src/Volo.Abp.Account.Web/Settings/AccountSettingDefinitionProvider.cs

@ -9,6 +9,10 @@ namespace Volo.Abp.Account.Web.Settings
context.Add( context.Add(
new SettingDefinition(AccountSettingNames.IsSelfRegistrationEnabled, "true") new SettingDefinition(AccountSettingNames.IsSelfRegistrationEnabled, "true")
); );
context.Add(
new SettingDefinition(AccountSettingNames.EnableLocalLogin, "true")
);
} }
} }
} }

2
modules/account/src/Volo.Abp.Account.Web/Settings/AccountSettingNames.cs

@ -3,5 +3,7 @@
public class AccountSettingNames public class AccountSettingNames
{ {
public const string IsSelfRegistrationEnabled = "Abp.Account.IsSelfRegistrationEnabled"; public const string IsSelfRegistrationEnabled = "Abp.Account.IsSelfRegistrationEnabled";
public const string EnableLocalLogin = "Abp.Account.EnableLocalLogin";
} }
} }

Loading…
Cancel
Save