public async Task <Response <UsuarioQuery> > Handle(AutenticarCommand request, CancellationToken cancellationToken)
        {
            var qUsuario = await _usuarioDapperRepository.BuscarUsuarioPorEmail(request.Email);

            qUsuario.Token = generateJwtToken(qUsuario.Id);

            return(await Task.FromResult(new Response <UsuarioQuery>(qUsuario)));
        }
예제 #2
0
        public async Task <IActionResult> Post([FromForm] AutenticarCommand command)
        {
            if (command == null)
            {
                return(BadRequest("Usuário ou Senha inválidos."));
            }

            var identity = await ObterClaims(command);

            if (identity == null)
            {
                return(BadRequest("Usuário ou Senha inválidos."));
            }

            var userClaims = new[]
            {
                new Claim(JwtRegisteredClaimNames.UniqueName, _usuario.Nome.ToString()),
                new Claim(JwtRegisteredClaimNames.Sub, _usuario.Id.ToString()),
                new Claim(JwtRegisteredClaimNames.Jti, await _tokenOptions.JtiGenerator()),
                new Claim(JwtRegisteredClaimNames.Iat, _tokenOptions.ToUnixEpochDate().ToString(), ClaimValueTypes.Integer64),
                identity.FindFirst("JwtValidation")
            };

            var jwt = new JwtSecurityToken(
                issuer: _tokenOptions.Issuer,
                audience: _tokenOptions.Audience,
                claims: userClaims,
                notBefore: _tokenOptions.NotBefore,
                expires: _tokenOptions.Expiration,
                signingCredentials: _tokenOptions.SigningCredentials);

            var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt);

            var response = new
            {
                token   = encodedJwt,
                expires = _tokenOptions.Expiration,
                usuario = new
                {
                    id   = _usuario.Id,
                    nome = _usuario.Nome
                }
            };

            return(new OkObjectResult(
                       JsonConvert.SerializeObject(response)));
        }
예제 #3
0
        private Task <ClaimsIdentity> ObterClaims(AutenticarCommand command)
        {
            var usuarioService = new UsuarioService();

            var usuario = usuarioService.Autenticar(command.Usuario, command.Senha);

            if (usuario == null)
            {
                return(Task.FromResult <ClaimsIdentity>(null));
            }

            _usuario = usuario;

            return(Task.FromResult(new ClaimsIdentity(
                                       new GenericIdentity(_usuario.Nome, "Token"),
                                       new[] {
                new Claim("JwtValidation", "Usuario")
            })));
        }
 public async Task <IActionResult> Autenticar([FromBody] AutenticarCommand usuario)
 {
     return(Ok(await Mediator.Send(usuario)));
 }