Пример #1
0
        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
            });
        }
Пример #2
0
        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();
        }