private Task <ClaimsIdentity> BuscarClaims(AutenticarUsuarioEmpresaComando comando) { var usuarioEmpresa = _usuarioRepositorio.BuscarUsuarioPorEmail(comando.Email); if (usuarioEmpresa == null) { return(Task.FromResult <ClaimsIdentity>(null)); } _usuarioEmpresa = usuarioEmpresa; //Lista de Claims return(Task.FromResult(new ClaimsIdentity( new GenericIdentity(usuarioEmpresa.Id.ToString(), "Token"), new[] { new Claim("VagasZM", "UsuarioEmpresa"), new Claim("EmpresaId", _usuarioEmpresa.Empresa.Id.ToString()) }))); }
public async Task <IActionResult> Autenticar([FromForm] AutenticarUsuarioEmpresaComando comando) { if (comando == null) { return(await Resposta(null, new List <Notification> { new Notification("Usuario", "Usuário ou senha inválidos") })); } var claimsIdentity = await BuscarClaims(comando); if (claimsIdentity == null) { return(await Resposta(null, new List <Notification> { new Notification("Usuario", "Usuário não encontrado.") })); } if (!_usuarioEmpresa.Autenticado(comando.Senha)) { return(await Resposta(null, new List <Notification> { new Notification("Usuario", "Senha inválida.") })); } var claims = new List <Claim> { new Claim(JwtRegisteredClaimNames.UniqueName, _usuarioEmpresa.Id.ToString()), new Claim(JwtRegisteredClaimNames.NameId, _usuarioEmpresa.Id.ToString()), new Claim(JwtRegisteredClaimNames.Email, _usuarioEmpresa.Email.EnderecoEmail), new Claim(JwtRegisteredClaimNames.Sub, _usuarioEmpresa.Id.ToString()), new Claim(JwtRegisteredClaimNames.Jti, await _tokenOptions.JtiGenerator()), new Claim(JwtRegisteredClaimNames.Iat, ConversorData.ConverterParaUnixEpochDate(_tokenOptions.IssuedAt).ToString(), ClaimValueTypes.Integer64), }; foreach (Claim claim in claimsIdentity.Claims) { claims.Add(claim); } var jwt = new JwtSecurityToken( issuer: _tokenOptions.Issuer, audience: _tokenOptions.Audience, claims: claims, notBefore: _tokenOptions.NotBefore, expires: _tokenOptions.Expiration, signingCredentials: _tokenOptions.SigningCredentials); var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt); var response = new { token = encodedJwt, expires = (int)_tokenOptions.ValidFor.TotalSeconds, user = new { usuarioId = _usuarioEmpresa.Id, nome = _usuarioEmpresa.Nome.nome, email = _usuarioEmpresa.Email.EnderecoEmail, empresaId = _usuarioEmpresa.Empresa.Id, nomeEmpresa = _usuarioEmpresa.Empresa.NomeEmpresa.nome } }; var json = JsonConvert.SerializeObject(response, _serializerSettings); return(new OkObjectResult(json)); }