private async Task <bool> IsUniqueUserName(string username, CancellationToken cancellationToken) { var userObject = (await userRepository.FindByCondition(x => x.UserName.ToLower() == username.ToLower()).ConfigureAwait(false)).AsQueryable().FirstOrDefault(); if (userObject != null) { return(false); } return(true); }
private async Task <bool> IsUserExists(Guid UserId, CancellationToken cancellationToken) { var userObject = (await userRepository.FindByCondition(x => x.UserId.Equals(UserId)).ConfigureAwait(false)).AsQueryable().FirstOrDefault(); if (userObject != null) { return(true); } return(false); }
public async Task <Response <Guid> > Handle(UpdateUserCommand request, CancellationToken cancellationToken) { var user = (await _userRepository.FindByCondition(x => x.UserId == request.UserId).ConfigureAwait(false)).AsQueryable().FirstOrDefault(); user.FirstName = request.FirstName; user.LastName = request.LastName; user.UserEmail = request.UserEmail; user.UpdatedBy = request.UpdatedBy; user.UpdatedDate = DateTime.UtcNow; user.UserStatuses = (await _userStatusRepository.FindByCondition(x => x.UserStatusId == request.UserStatus).ConfigureAwait(false)).AsQueryable().FirstOrDefault(); var userObject = await _userRepository.UpdateAsync(user).ConfigureAwait(false); return(new Response <Guid>(userObject.UserId)); }
public async Task <Response <UserViewModel> > Handle(GetUserByIdQuery request, CancellationToken cancellationToken) { var userObject = (await _userRepository.FindByCondition(x => x.UserId.Equals(request.UserId)).ConfigureAwait(false)).AsQueryable().FirstOrDefault(); return(new Response <UserViewModel>(_mapper.Map <UserViewModel>(userObject))); }
public virtual async Task <Response <AuthenticationResponse> > AuthenticateAsync(AuthenticationRequest request, string ipAddress) { IList <ValidationFailure> errorMessages = new List <ValidationFailure>(); var user = (await _UserRepository.FindByCondition(x => x.UserName.ToLower() == request.UserName.ToLower()).ConfigureAwait(false)).AsQueryable().FirstOrDefault(); LoginLog log = new LoginLog() { LoginLogId = Guid.NewGuid(), LoginDate = DateTime.UtcNow, LoginUserIP = ipAddress, UserIdentifier = request.UserName, }; if (user == null) { errorMessages.Add(new ValidationFailure("UserName", $"No Accounts Registered with {request.UserName}.")); log.LoginSuccess = false; log.LoginLogTypes = (await _LoginLogTypeRepository.FindByCondition(x => x.LoginLogTypeName == LoginLogTypeId.IncorrectUserNameOrPassword.ToString()).ConfigureAwait(false)).AsQueryable().FirstOrDefault(); await this._LoginLogRepository.AddAsync(log).ConfigureAwait(false); } var isBase64String = this._PasswordService.IsBase64String(request.Password); if (!isBase64String) { errorMessages.Add(new ValidationFailure("Password", $"Password is not base64 encoded.")); } if (user != null) { var isPasswordValid = this._PasswordService.VerifyPasswordHash(this._PasswordService.Base64Decode(request.Password), Convert.FromBase64String(user.PasswordHash), Convert.FromBase64String(user.PasswordSalt)); if (!isPasswordValid) { errorMessages.Add(new ValidationFailure("Password", $"Password is Incorrect.")); log.LoginSuccess = false; log.LoginLogTypes = (await _LoginLogTypeRepository.FindByCondition(x => x.LoginLogTypeName == LoginLogTypeId.IncorrectUserNameOrPassword.ToString()).ConfigureAwait(false)).AsQueryable().FirstOrDefault(); await this._LoginLogRepository.AddAsync(log).ConfigureAwait(false); } } if (errorMessages.Count > 0) { throw new ValidationException(errorMessages); } log.LoginSuccess = true; log.LoginLogTypes = (await _LoginLogTypeRepository.FindByCondition(x => x.LoginLogTypeName == LoginLogTypeId.Success.ToString()).ConfigureAwait(false)).AsQueryable().FirstOrDefault(); await this._LoginLogRepository.AddAsync(log).ConfigureAwait(false); JwtSecurityToken jwtSecurityToken = await GenerateJWToken(user); var JwtToken = new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken); var userToken = GenerateRefreshToken(ipAddress); userToken.JwtToken = JwtToken; userToken.UserId = user.UserId; user.UserTokens.Add(userToken); await _UserRepository.UpdateAsync(user).ConfigureAwait(false); AuthenticationResponse response = new AuthenticationResponse() { Id = user.UserId.ToString(), Token = JwtToken, Email = user.UserEmail, UserName = user.UserName, UserStatus = user.UserStatuses.StatusValue, RefreshToken = userToken.Token, }; return(new Response <AuthenticationResponse>(response, $"Authenticated {user.UserName}")); }