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(); }
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); }