示例#1
0
        public async Task AddUser(User user, string password)
        {
            // тут пока все )
            if (!await this.cheker.CheckLoginAsync(user.Login))
            {
                throw new EntityValidationException($"Login {user.Login} is using by another user");
            }

            if (!await this.cheker.ChekEmailAsync(user.Email))
            {
                throw new EntityValidationException($"Email {user.Email} is using by another user");
            }

            byte[] passHash, passSalt = new byte[] { };
            await Task.Run(() =>
            {
                PassCryptHelper.CreatePassword(password, out passHash, out passSalt);
                user.PasswordHash = passHash;
                user.PasswordSalt = passSalt;
            });

            await context.Set <User>().AddAsync(user);

            await context.SaveChangesAsync();
        }
示例#2
0
        public async Task <User> LogIn(string login, string password)
        {
            //ищем юзера по логину
            var user = await context.Set <User>().FirstOrDefaultAsync(x => x.Login == login);

            //TODO подумать,вызывать исключения или возрашать булеан
            if (user == null)
            {
                throw new ArgumentException("Password or Login is invalid");
            }
            // await Task.Run дожидаемся выполнения таска в асинхроном стиле
            var passVerify = await Task.Run(() => PassCryptHelper.VerifyPassword(password, user.PasswordSalt, user.PasswordHash));

            if (!passVerify)
            {
                throw new ArgumentException("Password or login is invalid");
            }
            return(user);
        }