public UserViewModel Authenticate(LoginPasswordViewModel viewModel) { using (var uow = new UnitOfWork(ConnectionString)) { viewModel.Password = Crypto.Encrypt(viewModel.Password); var user = this._mapp.Map <LoginPasswordViewModel, UserEntity>(viewModel); user = uow._userR.IsUserAuthenticated(user); if (user != null) { return(this._mapp.Map <UserEntity, UserViewModel>(user)); } throw new System.Exception("Usuário e/ou Senha inválidos"); } }
public IActionResult Authenticate([FromBody] LoginPasswordViewModel userViewModel) { try { var user = _userService.Authenticate(userViewModel); if (user == null) { return(BadRequest(new { message = "Username or password is incorrect" })); } var menuViewModel = _menuService.GetMenuByUserId(user.Id); var userClaims = new[] { new Claim(ClaimTypes.Name, user.Name), new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()) }; var token = new JwtServices().GenerateToken(_appSettings.Secret, _appSettings.ExpirationTokenTime, userClaims); this._userService.SaveRefreshToken(user.Id, token.RefreshToken); return(Ok(new ResultResponseViewModel <object>() { IsSuccess = true, Response = new { token.Token, token.RefreshToken, Menu = menuViewModel } })); } catch (Exception e) { return(Ok(new ResultResponseViewModel <Exception>() { IsSuccess = false, Message = "Usuário e/ou Senha inválidos", Response = e })); } }