update the code to use simple validation.
This commit is contained in:
parent
4f74962ce2
commit
ce51262197
@ -279,7 +279,7 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_message = string.Join("<br />", result.Errors.Select(i => i.Value));
|
_message = string.Join("<br />", result.Errors.Select(i => !string.IsNullOrEmpty(i.Value) ? i.Value : Localizer[i.Key]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -136,7 +136,7 @@
|
|||||||
<value>Please Enter All Required Fields. Ensure Passwords Match And Email Address Provided Is Valid.</value>
|
<value>Please Enter All Required Fields. Ensure Passwords Match And Email Address Provided Is Valid.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Message.Password.Invalid" xml:space="preserve">
|
<data name="Message.Password.Invalid" xml:space="preserve">
|
||||||
<value>The Password Provided Does Not Meet The Complexity Policy. Passwords Must Be At Least 6 Characters In Length And Contain Uppercase, Lowercase, Numeric, And Punctuation Characters.</value>
|
<value>The Password Provided Does Not Meet The Complexity Policy For Below Reasons:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Register" xml:space="preserve">
|
<data name="Register" xml:space="preserve">
|
||||||
<value>Please Register Me For Major Product Updates And Security Bulletins</value>
|
<value>Please Register Me For Major Product Updates And Security Bulletins</value>
|
||||||
@ -183,4 +183,7 @@
|
|||||||
<data name="Template" xml:space="preserve">
|
<data name="Template" xml:space="preserve">
|
||||||
<value>Select a site template</value>
|
<value>Select a site template</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Message.Username.Invalid" xml:space="preserve">
|
||||||
|
<value>The Username Provided Does Not Meet The System Requirement, It Can Only Contains Letters Or Digits.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
@ -1,41 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Microsoft.AspNetCore.Identity;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
|
|
||||||
namespace Oqtane.Managers
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// This class is only used for user validation during installation process.
|
|
||||||
/// </summary>
|
|
||||||
/// <typeparam name="TUser"></typeparam>
|
|
||||||
internal class InstallUserManager<TUser> : UserManager<IdentityUser>
|
|
||||||
{
|
|
||||||
public InstallUserManager(IUserStore<IdentityUser> store, IOptions<IdentityOptions> optionsAccessor, IPasswordHasher<IdentityUser> passwordHasher, IEnumerable<IUserValidator<IdentityUser>> userValidators, IEnumerable<IPasswordValidator<IdentityUser>> passwordValidators, ILookupNormalizer keyNormalizer, IdentityErrorDescriber errors, IServiceProvider services, ILogger<UserManager<IdentityUser>> logger) : base(store, optionsAccessor, passwordHasher, userValidators, passwordValidators, keyNormalizer, errors, services, logger)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public override async Task<IdentityUser> FindByNameAsync(string userName)
|
|
||||||
{
|
|
||||||
await Task.CompletedTask;
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override async Task<IdentityUser> FindByEmailAsync(string email)
|
|
||||||
{
|
|
||||||
await Task.CompletedTask;
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override async Task<string> GetUserIdAsync(IdentityUser user)
|
|
||||||
{
|
|
||||||
await Task.CompletedTask;
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -33,41 +33,8 @@ namespace Oqtane.Managers
|
|||||||
private readonly ILogManager _logger;
|
private readonly ILogManager _logger;
|
||||||
private readonly IMemoryCache _cache;
|
private readonly IMemoryCache _cache;
|
||||||
private readonly IStringLocalizer<UserManager> _localizer;
|
private readonly IStringLocalizer<UserManager> _localizer;
|
||||||
private readonly IUserStore<IdentityUser> _identityStore;
|
|
||||||
private readonly Microsoft.Extensions.Options.IOptions<IdentityOptions> _identityOptionsAccessor;
|
|
||||||
private readonly IPasswordHasher<IdentityUser> _passwordHasher;
|
|
||||||
private readonly IEnumerable<IUserValidator<IdentityUser>> _userValidators;
|
|
||||||
private readonly IEnumerable<IPasswordValidator<IdentityUser>> _passwordValidators;
|
|
||||||
private readonly ILookupNormalizer _identityKeyNormalizer;
|
|
||||||
private readonly IdentityErrorDescriber _identityErrors;
|
|
||||||
private readonly IServiceProvider _identityServices;
|
|
||||||
private readonly Microsoft.Extensions.Logging.ILogger<UserManager<IdentityUser>> _identityLogger;
|
|
||||||
|
|
||||||
public UserManager(
|
public UserManager(IUserRepository users, IRoleRepository roles, IUserRoleRepository userRoles, UserManager<IdentityUser> identityUserManager, SignInManager<IdentityUser> identitySignInManager, ITenantManager tenantManager, INotificationRepository notifications, IFolderRepository folders, IProfileRepository profiles, ISettingRepository settings, ISiteRepository sites, ISyncManager syncManager, ILogManager logger, IMemoryCache cache, IStringLocalizer<UserManager> localizer)
|
||||||
IUserRepository users,
|
|
||||||
IRoleRepository roles,
|
|
||||||
IUserRoleRepository userRoles,
|
|
||||||
UserManager<IdentityUser> identityUserManager,
|
|
||||||
SignInManager<IdentityUser> identitySignInManager,
|
|
||||||
ITenantManager tenantManager,
|
|
||||||
INotificationRepository notifications,
|
|
||||||
IFolderRepository folders,
|
|
||||||
IProfileRepository profiles,
|
|
||||||
ISettingRepository settings,
|
|
||||||
ISiteRepository sites,
|
|
||||||
ISyncManager syncManager,
|
|
||||||
ILogManager logger,
|
|
||||||
IMemoryCache cache,
|
|
||||||
IStringLocalizer<UserManager> localizer,
|
|
||||||
IUserStore<IdentityUser> store,
|
|
||||||
Microsoft.Extensions.Options.IOptions<IdentityOptions> optionsAccessor,
|
|
||||||
IPasswordHasher<IdentityUser> passwordHasher,
|
|
||||||
IEnumerable<IUserValidator<IdentityUser>> userValidators,
|
|
||||||
IEnumerable<IPasswordValidator<IdentityUser>> passwordValidators,
|
|
||||||
ILookupNormalizer keyNormalizer,
|
|
||||||
IdentityErrorDescriber errors,
|
|
||||||
IServiceProvider services,
|
|
||||||
Microsoft.Extensions.Logging.ILogger<UserManager<IdentityUser>> identityLogger)
|
|
||||||
{
|
{
|
||||||
_users = users;
|
_users = users;
|
||||||
_roles = roles;
|
_roles = roles;
|
||||||
@ -84,15 +51,6 @@ namespace Oqtane.Managers
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
_cache = cache;
|
_cache = cache;
|
||||||
_localizer = localizer;
|
_localizer = localizer;
|
||||||
_identityStore = store;
|
|
||||||
_identityOptionsAccessor = optionsAccessor;
|
|
||||||
_passwordHasher = passwordHasher;
|
|
||||||
_userValidators = userValidators;
|
|
||||||
_passwordValidators = passwordValidators;
|
|
||||||
_identityKeyNormalizer = keyNormalizer;
|
|
||||||
_identityErrors = errors;
|
|
||||||
_identityServices = services;
|
|
||||||
_identityLogger = identityLogger;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public User GetUser(int userid, int siteid)
|
public User GetUser(int userid, int siteid)
|
||||||
@ -585,25 +543,22 @@ namespace Oqtane.Managers
|
|||||||
public async Task<UserValidateResult> ValidateUser(string username, string email, string password)
|
public async Task<UserValidateResult> ValidateUser(string username, string email, string password)
|
||||||
{
|
{
|
||||||
var validateResult = new UserValidateResult { Succeeded = true };
|
var validateResult = new UserValidateResult { Succeeded = true };
|
||||||
var installUserManager = new InstallUserManager<IdentityUser>(_identityStore, _identityOptionsAccessor, _passwordHasher, _userValidators, _passwordValidators, _identityKeyNormalizer, _identityErrors, _identityServices, _identityLogger);
|
|
||||||
|
|
||||||
var user = new IdentityUser { UserName = username, Email = email, EmailConfirmed = true };
|
//validate username
|
||||||
var userValidator = new UserValidator<IdentityUser>();
|
var allowedChars = _identityUserManager.Options.User.AllowedUserNameCharacters;
|
||||||
var userResult = await userValidator.ValidateAsync(installUserManager, user);
|
if (string.IsNullOrWhiteSpace(username) || (!string.IsNullOrEmpty(allowedChars) && username.Any(c => !allowedChars.Contains(c))))
|
||||||
if (!userResult.Succeeded)
|
|
||||||
{
|
{
|
||||||
validateResult.Succeeded = false;
|
validateResult.Succeeded = false;
|
||||||
if(userResult.Errors != null)
|
validateResult.Errors.Add("Message.Username.Invalid", string.Empty);
|
||||||
{
|
|
||||||
validateResult.Errors = userResult.Errors?.ToDictionary(i => i.Code, i => i.Description);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//validate password
|
||||||
var passwordValidator = new PasswordValidator<IdentityUser>();
|
var passwordValidator = new PasswordValidator<IdentityUser>();
|
||||||
var passwordResult = await passwordValidator.ValidateAsync(installUserManager, null, password);
|
var passwordResult = await passwordValidator.ValidateAsync(_identityUserManager, null, password);
|
||||||
if (!passwordResult.Succeeded && !validateResult.Errors.ContainsKey("InvalidPassword"))
|
if (!passwordResult.Succeeded)
|
||||||
{
|
{
|
||||||
validateResult.Succeeded = false;
|
validateResult.Succeeded = false;
|
||||||
|
validateResult.Errors.Add("Message.Password.Invalid", string.Empty);
|
||||||
if (passwordResult.Errors != null)
|
if (passwordResult.Errors != null)
|
||||||
{
|
{
|
||||||
foreach (var error in passwordResult.Errors)
|
foreach (var error in passwordResult.Errors)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user