public async Task <AuthenticationResponseModel> LoginAsync(LoginRequestModel loginRequestModel) { if (loginRequestModel == null) { throw new EShopperException("Please provide required information!"); } EShopperUser getUserDetails = _eShopperUserManager.GetUserWithUserDetailsByEmail(loginRequestModel.Email); if (getUserDetails == null) { throw new EShopperException("User not found!"); } if (_eShopperUserManager.CheckUserDeletion(getUserDetails)) { throw new EShopperException("This user is Deleted!"); } if (_eShopperUserManager.IsUserDeactivated(getUserDetails)) { throw new EShopperException("This is is Deactivated!"); } bool checkUserPassword = await _eShopperUserManager.CheckPasswordAsync(getUserDetails, loginRequestModel.Password); if (!checkUserPassword) { throw new EShopperException("Password is invalid!"); } JwtManagerResponse getToken = await _jwtManager.GenerateToken(getUserDetails); EShopperUserDto mappedUserDetails = _mapper.Map <EShopperUserDto>(getUserDetails); _logger.LogInformation($"{getUserDetails.Email} - Just landed!"); return(new AuthenticationResponseModel { AccessToken = getToken.AccessToken, RefreshToken = getToken.RefreshToken, EShopperUser = mappedUserDetails }); }
public async Task <AuthenticationResponseModel> RegisterAsync(RegisterRequestModel registerRequestModel) { if (registerRequestModel == null) { throw new EShopperException("Please provide required information!"); } EShopperUser isEmailExist = await _eShopperUserManager.FindByEmailAsync(registerRequestModel.Email); if (isEmailExist != null) { throw new EShopperException("Email address already exist!"); } EShopperUser eShopperIdentity = new EShopperUser { Email = registerRequestModel.Email, UserName = registerRequestModel.Username }; // Begin Transaction... using (var transaction = _unitOfWork.EShopperDbContext.Database.BeginTransaction()) { try { IdentityResult registerEShopperUserResult = await _eShopperUserManager.CreateAsync(eShopperIdentity, registerRequestModel.Password); if (registerEShopperUserResult.Succeeded) { UserDetails usersDetail = new UserDetails { User = eShopperIdentity, Fullname = registerRequestModel.Fullname, RegisterDate = DateTime.UtcNow }; IdentityResult addToRoleResult = await _eShopperUserManager.AddToRoleAsync(eShopperIdentity, "USER"); if (!addToRoleResult.Succeeded) { throw new EShopperException(); } _unitOfWork.UsersDetail.Add(usersDetail); _unitOfWork.Complete(); transaction.Commit(); JwtManagerResponse jwtResponse = await _jwtManager.GenerateToken(eShopperIdentity); EShopperUser getUserDetails = _eShopperUserManager.GetUserWithUserDetailsByEmail(registerRequestModel.Email); EShopperUserDto mappedUserDetails = _mapper.Map <EShopperUserDto>(getUserDetails); _logger.LogInformation($"{getUserDetails.Email} - Registered with EShopperAuthentication"); return(new AuthenticationResponseModel { AccessToken = jwtResponse.AccessToken, RefreshToken = jwtResponse.RefreshToken, EShopperUser = mappedUserDetails }); } } catch (Exception ex) { _logger.LogError(ex.Message); throw new EShopperException(); } finally { transaction.Dispose(); } } throw new EShopperException(); }