public TokenUserDto Login(LoginDto dto) { var user = _baseRepository.Get <User>(x => x.UserName == dto.UserName); if (user == null) { throw new UnauthorizedAccessException( AuthExceptionMessages.INVALID_USERNAME_OR_PASSWORD); } var computedHash = PasswordHelper.DecodePassword(user.PasswordSalt, dto.Password); for (var i = 0; i < computedHash.Length - 1; i++) { if (computedHash[i] != user.Password[i]) { throw new UnauthorizedAccessException( AuthExceptionMessages.INVALID_USERNAME_OR_PASSWORD); } } var result = new TokenUserDto { Token = _jwtService.GenerateToken(dto) }; return(result); }
public async Task <CommandResponse> Handle(Command message, CancellationToken cancellationToken) { var result = new CommandResponse(); #region Validate var isValid = true; if (string.IsNullOrEmpty(message.UserName)) { isValid = false; result.Messages.Add("Username is required"); } if (string.IsNullOrEmpty(message.Password)) { isValid = false; result.Messages.Add("Password is required"); } if (isValid) { if ((await _mediator.Send(new CheckUserApi.Query() { UserName = message.UserName, Email = message.Email })).IsExist) { isValid = false; result.Messages.Add("Username or email was existed"); } else { try { using (var scope = _scopeFactory.Create()) { var context = scope.DbContexts.Get <MainContext>(); var profile = new UserProfile() { Id = Guid.NewGuid(), Email = message.Email }; var user = new UserCredential() { Id = Guid.NewGuid(), UserName = message.UserName, Password = PasswordHelper.DecodePassword(message.Password), UserProfileId = profile.Id }; context.Set <UserProfile>().Add(profile); context.Set <UserCredential>().Add(user); scope.SaveChanges(); } } catch (Exception ex) { isValid = false; result.Messages.Add(ex.Message); } } } result.IsSuccessful = isValid; #endregion return(await Task.FromResult(result)); }