update the code to use simple validation.
This commit is contained in:
parent
4f74962ce2
commit
ce51262197
@ -279,7 +279,7 @@
|
||||
}
|
||||
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
|
||||
|
@ -136,7 +136,7 @@
|
||||
<value>Please Enter All Required Fields. Ensure Passwords Match And Email Address Provided Is Valid.</value>
|
||||
</data>
|
||||
<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 name="Register" xml:space="preserve">
|
||||
<value>Please Register Me For Major Product Updates And Security Bulletins</value>
|
||||
@ -183,4 +183,7 @@
|
||||
<data name="Template" xml:space="preserve">
|
||||
<value>Select a site template</value>
|
||||
</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>
|
@ -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 IMemoryCache _cache;
|
||||
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(
|
||||
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)
|
||||
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)
|
||||
{
|
||||
_users = users;
|
||||
_roles = roles;
|
||||
@ -84,15 +51,6 @@ namespace Oqtane.Managers
|
||||
_logger = logger;
|
||||
_cache = cache;
|
||||
_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)
|
||||
@ -585,25 +543,22 @@ namespace Oqtane.Managers
|
||||
public async Task<UserValidateResult> ValidateUser(string username, string email, string password)
|
||||
{
|
||||
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 };
|
||||
var userValidator = new UserValidator<IdentityUser>();
|
||||
var userResult = await userValidator.ValidateAsync(installUserManager, user);
|
||||
if (!userResult.Succeeded)
|
||||
//validate username
|
||||
var allowedChars = _identityUserManager.Options.User.AllowedUserNameCharacters;
|
||||
if (string.IsNullOrWhiteSpace(username) || (!string.IsNullOrEmpty(allowedChars) && username.Any(c => !allowedChars.Contains(c))))
|
||||
{
|
||||
validateResult.Succeeded = false;
|
||||
if(userResult.Errors != null)
|
||||
{
|
||||
validateResult.Errors = userResult.Errors?.ToDictionary(i => i.Code, i => i.Description);
|
||||
}
|
||||
validateResult.Errors.Add("Message.Username.Invalid", string.Empty);
|
||||
}
|
||||
|
||||
//validate password
|
||||
var passwordValidator = new PasswordValidator<IdentityUser>();
|
||||
var passwordResult = await passwordValidator.ValidateAsync(installUserManager, null, password);
|
||||
if (!passwordResult.Succeeded && !validateResult.Errors.ContainsKey("InvalidPassword"))
|
||||
var passwordResult = await passwordValidator.ValidateAsync(_identityUserManager, null, password);
|
||||
if (!passwordResult.Succeeded)
|
||||
{
|
||||
validateResult.Succeeded = false;
|
||||
validateResult.Errors.Add("Message.Password.Invalid", string.Empty);
|
||||
if (passwordResult.Errors != null)
|
||||
{
|
||||
foreach (var error in passwordResult.Errors)
|
||||
|
Reference in New Issue
Block a user