public async Task <LoginViewModel> Login(InsereLoginPayload model) { var user = await _context.Usuarios.FirstOrDefaultAsync(x => x.Usuario == model.Username && x.Password == model.Password); //if (user == null) // return StatusCode(404, "Usuário ou senha inválidos"); var token = TokenService.GenerateToken(model); model.Password = ""; var retorno = new LoginViewModel(); if (user == null) { return(null); } retorno.Nome = model.Username; //retorno.Email = model.Email; retorno.token = token; return(retorno); }
public async Task <ActionResult <dynamic> > Authenticate( [FromServices] Context context, [FromBody] InsereLoginPayload model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { var user = await context.Usuarios.FirstOrDefaultAsync(x => x.Usuario == model.Username && x.Password == model.Password); if (user == null) { return(StatusCode(404, "Usuário ou senha inválidos")); } model.Role = user.Role; var token = TokenService.GenerateToken(model); user.Password = ""; //model.Role = ""; return(Ok(new { user = user, token = token }));; } catch { return(StatusCode(500, "Falha na autenticação")); } }
public static string GenerateToken(InsereLoginPayload user) { var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(Settings.Secret); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, user.Username.ToString()), new Claim(ClaimTypes.Role, user.Role.ToString()), }), Expires = DateTime.UtcNow.AddHours(2), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); return(tokenHandler.WriteToken(token)); }