/// <summary> /// Проверяет валидность пользователя /// </summary> /// <param name="user">Пользователь</param> /// <returns>Результат проверки валидности пользователя</returns> public override async Task <IdentityResult> ValidateAsync(AppUser user) { //Возвращает результат базовой проверки валидности пользователя IdentityResult result = await base.ValidateAsync(user); AppMsgDbContext db = new AppMsgDbContext(); var errors = result.Errors.ToList(); //Проверяет занят ли указанный Email var us = new AppMsgDbContext().Users.Where((m) => m.Email == user.Email); if (us.FirstOrDefault() != null) { errors.Add($"Пользователь с Email {user.Email} уже зарегестрирован"); } //Проверяет занят ли указанный Логин if (errors.Contains($"Name {user.UserName} is already taken.")) { errors.Remove($"Name {user.UserName} is already taken."); errors.Add($"Логин {user.UserName} уже занят"); } //Проверяет были-ли ошибки валидации if (errors.Count > 0) { return(IdentityResult.Failed(errors.ToArray())); } return(result); }
public static AppUserManager Create(IdentityFactoryOptions <AppUserManager> options, IOwinContext context) { AppMsgDbContext db = context.Get <AppMsgDbContext>(); AppUserManager manager = new AppUserManager(new UserStore <AppUser>(db)); manager.UserTokenProvider = new TotpSecurityStampBasedTokenProvider <AppUser, string>(); manager.PasswordValidator = new CustomPasswardValidator { MinLength = 6, }; manager.UserValidator = new CustomUserValidator(manager); manager.EmailService = new EmailService(); var provider = new DpapiDataProtectionProvider("Msg"); //manager.UserTokenProvider = new DataProtectorTokenProvider<AppUser>( // provider.Create("EmailConfirmation")); return(manager); }