public override async Task <SignInQueryResult> ExecuteAsync(SignInQuery query) { Logger.ExecuteUserSignIn(query.Email); Tuple <Guid, string, string, IEnumerable <string> >?userByEmail = await Reader.SingleOrDefaultAsync <User, Tuple <Guid, string, string, IEnumerable <string> > >( u => u.Email == query.Email.ToLowerInvariant(), u => new Tuple <Guid, string, string, IEnumerable <string> >(u.Id, u.PasswordHash, u.Email, u.Roles)); if (userByEmail == null) { Logger.UserSignInUserNotFound(query.Email); return(new SignInQueryResult(true, false, string.Empty)); } bool passwordOk = _passwordStorage.Match(query.Password, userByEmail.Item2); if (!passwordOk) { Logger.UserSignInPasswordMismatch(query.Email); return(new SignInQueryResult(false, true, string.Empty)); } string token = _securityTokenFactory.Create(userByEmail.Item1, userByEmail.Item3, userByEmail.Item4); var result = new SignInQueryResult(false, false, token); Logger.ExecuteUserSignInSuccessful(query.Email); return(result); }
public async Task <SignInQueryResult> ExecuteAsync(SignInQuery query) { _logger.PartnerSignInInitiated(query.Id); (Guid id, string?name, string?hash) = await _reader.GetByIdOrThrowAsync <TokenIssuer, Tuple <Guid, string, string> >( query.Id, u => new Tuple <Guid, string, string>(u.Id, u.Name, u.SecretHash)); if (id == Guid.Empty) { _logger.PartnerSignInPartnerNotFound(query.Id); return(new SignInQueryResult(true, false, string.Empty)); } bool passwordOk = _passwordStorage.Match(query.Secret, hash); if (!passwordOk) { _logger.PartnerSignInPasswordMismatch(query.Id); return(new SignInQueryResult(false, true, string.Empty)); } _logger.PartnerSignInSuccessful(query.Id, name); string token = _securityTokenFactory.Create(id, name, new[] { Roles.Partner }); return(new SignInQueryResult(false, false, token)); }
public async Task <string> ExecuteAsync(SignInValidQuery query) { User user = await _userReader.ByEmail(query.Email); if (user == null) { throw new ValidationException("User not found!"); } bool isValid = _passwordStorage.Match(query.Password, user.PasswordHash); if (isValid) { return(_securityTokenFactory.Create(user)); } throw new ValidationException("Password invalid!"); }