예제 #1
0
        public object Post([FromBody] UsuarioCommandRegister usuario,
                           [FromServices] SigningConfigurations signingConfigurations,
                           [FromServices] TokenConfigurations tokenConfigurations)
        {
            var  usuarioBase        = new UsuarioCommadResult();
            bool credenciaisValidas = false;

            if (!string.IsNullOrEmpty(usuario.User) && !string.IsNullOrEmpty(usuario.Senha))
            {
                usuarioBase        = _service.GetUsuarioCommad(usuario.Senha, usuario.User);
                credenciaisValidas = (usuarioBase != null);
            }

            if (credenciaisValidas)
            {
                ClaimsIdentity identity = new ClaimsIdentity(
                    new GenericIdentity(usuarioBase.UsuarioId.ToString()),
                    new[] {
                    new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")),
                    new Claim(JwtRegisteredClaimNames.Sub, usuarioBase.UsuarioId.ToString())
                }
                    );

                DateTime dataCriacao   = DateTime.Now;
                DateTime dataExpiracao = dataCriacao +
                                         TimeSpan.FromSeconds(tokenConfigurations.Seconds);

                var handler       = new JwtSecurityTokenHandler();
                var securityToken = handler.CreateToken(new SecurityTokenDescriptor
                {
                    Issuer             = tokenConfigurations.Issuer,
                    Audience           = tokenConfigurations.Audience,
                    SigningCredentials = signingConfigurations.SigningCredentials,
                    Subject            = identity,
                    NotBefore          = dataCriacao,
                    Expires            = dataExpiracao
                });
                var token = handler.WriteToken(securityToken);

                return(new
                {
                    authenticated = true,
                    created = dataCriacao.ToString("yyyy-MM-dd HH:mm:ss"),
                    expiration = dataExpiracao.ToString("yyyy-MM-dd HH:mm:ss"),
                    accessToken = token,
                    message = "OK"
                });
            }
            else
            {
                return(new
                {
                    authenticated = false,
                    message = "Falha ao autenticar"
                });
            }
        }
예제 #2
0
        public UsuarioCommandResultRegister Handler(UsuarioCommandRegister command)
        {
            var usuario = new Usuario(
                command.UsuarioId,
                command.Nome,
                command.Email,
                command.Senha,
                command.User,
                command.AccessKey
                );

            var id = _usuarioRepository.SalvarUsuario(usuario);

            var result = new UsuarioCommandResultRegister(
                id,
                command.Nome
                );

            return(result);
        }