예제 #1
0
        public IComandResult Handle(AutenticarUsuarioComand comand)
        {
            //verificar se tem notificação no comand
            if (!comand.IsValid())
            {
                return(new ComandResult(false, "Por favor corrija os campos abaixo", comand.Notifications));
            }

            //verifica se o usuário ja existe
            var usuario = _repository.Autenticar(comand.Login, comand.Senha);

            if (usuario == null)
            {
                AddNotification("Usuario", "Senha ou email inválidos!");
            }
            else
            {
                usuario.SetarUltimoAcesso();
                _repository.Alterar(usuario);
            }

            //AddNotifications(email.Notifications);
            if (Invalid)
            {
                return(new ComandResult(false, "Por favor corrija os campos abaixo", Notifications));
            }

            // Persistir no banco


            // Enviar um E-mail de boas vindas

            // Retornar o resultado para tela

            return(new ComandResult(true, "Login efetuado com sucesso", new { usuario.Login, usuario.Id, usuario.Nome, usuario.SobreNome, usuario.TipoUsuario, usuario.Foto, usuario.ConfigDadoPessoal }));
        }
예제 #2
0
        public object Post(

            [FromBody] AutenticarUsuarioComand usuario,
            [FromServices] SigningConfigurations signingConfigurations,
            [FromServices] TokenConfigurations tokenConfigurations)

        {
            bool credenciaisValidas = false;

            var resposta = (ComandResult)_usuarioHandler.Handle(usuario);


            if (resposta.Success == false)
            {
                return(resposta);
            }
            else
            {
                usuarioComand = DeserializerObjeto <UsuarioComand> .RetornoObjetoTipado(resposta.Data);

                credenciaisValidas = true;
                Commit(resposta.Success);
            }

            //var usuarioBase = usersDAO.Find(usuario.UserID);

            //credenciaisValidas = (usuarioBase != null usuario.UserID == usuarioBase.UserID && usuario.AccessKey == usuarioBase.AccessKey);


            if (credenciaisValidas)
            {
                ClaimsIdentity identity = new ClaimsIdentity(

                    new GenericIdentity(usuarioComand.Id, "UsuarioId"),

                    new[] {
                    new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")),
                    new Claim(JwtRegisteredClaimNames.UniqueName, usuarioComand.Id),
                    new Claim(JwtRegisteredClaimNames.Email, usuario.Login),
                    new Claim(JwtRegisteredClaimNames.Sid, usuarioComand.Id),
                    new Claim("Administrador", usuarioComand.TipoUsuario)
                    //new Claim(JwtRegisteredClaimNames.NameId, usuario.Nome),
                    //new Claim(JwtRegisteredClaimNames.UniqueName, usuario.Id.ToString())
                }

                    );

                var usuarioHomeCommandResult = new UsuarioHomeCommandResult(usuario.Login, usuarioComand.Nome, usuarioComand.SobreNome, usuarioComand.Foto, usuarioComand.TipoUsuario);

                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",

                    Usuario = usuarioComand
                });
            }

            else

            {
                return(new

                {
                    authenticated = false,

                    message = "Falha ao autenticar"
                });
            }
        }