public async Task <IActionResult> LogIn([FromBody] UserLoginApiModel user)
        {
            try
            {
                var _user = await _userManager.FindByEmailAsync(user.Email);

                if (_user == null)
                {
                    return(StatusCode(204, $"User {user.Email} doesn`t found"));
                }
                var confirmPassword = _userManager.PasswordHasher.VerifyHashedPassword(_user, _user.PasswordHash, user.Password);
                if (confirmPassword == PasswordVerificationResult.Failed)
                {
                    return(StatusCode(401, "Password doesn`t match"));
                }
                var token = _tokenFabric.GetToken(_user).Result;

                var response = new
                {
                    user_id     = _user.Id,
                    acces_token = token
                };

                return(Ok(response));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex.Message));
            }
        }
        public async Task <TokenApiModel> LoginUserAsync(UserLoginApiModel model)
        {
            var user = _userManager.FindByEmailAsync(model.Email).Result;

            if (user == null)
            {
                throw new BadRequestException(_resourceManager.GetString("LoginOrPasswordInvalid"));
            }

            if (user != null && user.IsDeleted == true)
            {
                throw new UserIsDeletedException(_resourceManager.GetString("UserIsDeleted"));
            }

            var loginResult = await _signInManager.PasswordSignInAsync(user, model.Password, false, false);

            if (!loginResult.Succeeded)
            {
                throw new BadRequestException(_resourceManager.GetString("LoginOrPasswordInvalid"));
            }

            var token        = _jwtService.CreateToken(_jwtService.SetClaims(user));
            var refreshToken = _jwtService.CreateRefreshToken();

            await _userRepository.UpdateUserTokenAsync(user.Id, refreshToken);

            await _signInManager.SignInAsync(user, isPersistent : false);

            return(new TokenApiModel {
                Token = token, RefreshToken = refreshToken
            });
        }
Example #3
0
        public async Task <IActionResult> Login([FromBody] UserLoginApiModel model)
        {
            var validator   = new LoginValidator(_recaptcha, _resourceManager);
            var validResult = validator.Validate(model);

            if (!validResult.IsValid)
            {
                return(BadRequest(new MessageApiModel()
                {
                    Message = validResult.ToString()
                }));
            }

            var loginResult = await _accountService.LoginUserAsync(model);

            return(Ok(loginResult));
        }
Example #4
0
 private string CreateToken(UserLoginApiModel userLogin)
 {
     return("token"); //TODO : replace with jwt token
 }