public async Task <Result> LoginUserAsync(LoginVM model)
        {
            var user = await _userManager.FindByEmailAsync(model.Email);

            var result = await _userManager.CheckPasswordAsync(user, model.Password);

            if (!result || user.Email != model.Email || user == null)
            {
                return(Result.GeneralFailure("Email Or Password Wrong"));
            }


            if (!user.EmailConfirmed)
            {
                return(Result.GeneralFailure("please Check Your Email for Conformation"));
            }

            var userRoles = await _userManager.GetRolesAsync(user);

            var refreshToken = _jwtHandler.CreateRefreshToken(user.Id);
            var token        = _jwtHandler.CreateToken(user, userRoles.FirstOrDefault());

            var jwt = new JsonWebToken
            {
                Token        = token,
                RefreshToken = refreshToken.Token,
            };
            await _context.RefreshTokens.AddAsync(refreshToken);

            await _context.SaveChangesAsync();

            return(Result.ReturnToken(jwt));
        }
Ejemplo n.º 2
0
        public async Task <Unit> Handle(LoginUserCommand notification, CancellationToken cancellationToken)
        {
            await _userService.LoginAsync(notification.Email, notification.Password);

            var user = await _userRepository.GetAsyncByEmail(notification.Email);

            var jwt          = _jwtHandler.CreateToken(user.Id, user.Role);
            var refreshToken = _jwtHandler.CreateRefreshToken(user.Role, user.Id);

            jwt.RefreshToken = refreshToken;
            await _tokenRepository.CreateAsync(refreshToken);

            _cache.SetJwt(notification.Email, jwt);
            return(Unit.Value);
        }