public async Task <ActionResult <AppUserAuth> > LogIn([FromBody] AuthenticationQuery user) { try { var x = await ValidateUser(user); return(StatusCode(200, x)); } catch (NotFoundException e) { return(StatusCode(404, e.Message)); } }
/// <summary> /// used to validate if a user account provided by the user exists or not /// </summary> /// <param name="userQ"></param> /// <returns>AppUserAuth</returns> protected async Task <AppUserAuth> ValidateUser(AuthenticationQuery userQ) { AppUserAuth ret = new AppUserAuth(); ApplicationUser authUser = null; authUser = await _Mediator.Send(userQ); if (authUser != null) { ret = BuildUserAuthObject(authUser); } return(ret); }
public async Task <ActionResult> LogIn([FromBody] AuthenticationQuery userAuth) { if (userAuth == null) { return(StatusCode(400)); } if (!ModelState.IsValid) { return(new InvalidInputResponse(ModelState)); } try { var user = await _Mediator.Send(userAuth); var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["jwt:key"])); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var claims = new List <Claim> { new Claim(ClaimTypes.NameIdentifier, user.userName), new Claim(ClaimTypes.Name, user.userName) }; var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); var principal = new ClaimsPrincipal(identity); var token = new JwtSecurityToken(_configuration["jwt:Issuer"], _configuration["jwt:Audience"], claims, expires: DateTime.Now.AddMinutes(30), signingCredentials: creds); var serializedToken = new { userId = user.id, userName = user.userName, role = user.role, token = new JwtSecurityTokenHandler().WriteToken(token) }; return(StatusCode(200, serializedToken)); } catch (NotFoundException e) { ModelState.AddModelError("Username or password", e.Message); return(new InvalidInputResponse(ModelState)); } }
/// <summary> /// Realiza a verificação do usuário para autenticação. /// </summary> /// <param name="email">Email do usuário</param> /// <param name="password">Senha do usuário</param> /// <returns>Entidade com o usuário encontrado</returns> public AuthenticationResult Authentication(AuthenticationQuery query) { using (var context = new DatabaseContext()) { try { var user = (from usuario in context.Usuario join clinica in context.Clinica_Usuario on usuario.IdUsuario equals clinica.IdUsuario where usuario.Email.Equals(query.Username) && clinica.IdClinica == query.IdClinica select new { Nome = usuario.Nome, Senha = usuario.Senha, IdUsuario = usuario.IdUsuario, IdUsuarioGrupo = clinica.IdUsuarioGrupo, PrimeiroAcesso = usuario.PrimeiroAcesso }) .FirstOrDefault(); if (user == null || PasswordHash.ValidatePassword(query.Password, user.Senha) == false) { return(null); } return(new AuthenticationResult { Nome = user.Nome, IdUsuario = user.IdUsuario, PrimeiroAcesso = user.PrimeiroAcesso, IdUsuarioGrupo = user.IdUsuarioGrupo }); } catch (Exception) { throw; } } }