Exemple #1
0
        /// <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);
        }
Exemple #2
0
        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);
        }