public IHttpActionResult PrimeiroAcesso(UsuarioDTO usuario)
        {
            if (usuario == null)
            {
                return(BadRequest("Usuário não informado!"));
            }
            usuario.Login = usuario.Login.ToLower();
            bool        usuarioExiste = usuariosService.UsuarioExiste(usuario.Login);
            Funcionario funcionario;

            if (!usuarioExiste)
            {
                if (!funcionariosService.FuncionarioExiste(usuario.MatriculaFuncionario, usuario.CodigoEmpresa))
                {
                    return(BadRequest($"Matrícula {usuario.MatriculaFuncionario} não cadastrada!"));
                }

                funcionario       = funcionariosService.GetFuncionario(usuario.MatriculaFuncionario, usuario.CodigoEmpresa);
                funcionario.Email = usuario.Email;
                funcionariosService.AddOrUpdateFuncionario(funcionario);

                Usuario novoUsuario = new Usuario
                {
                    Login         = usuario.Login,
                    FuncionarioId = funcionario.Id,
                    Nome          = funcionario.Nome,
                    Perfil        = Perfil.ELEITOR,
                    Senha         = CryptoGraph.Encrypt(usuario.Senha)
                };
                usuariosService.AddOrUpdateUsuario(novoUsuario);

                return(Ok());
            }

            if (!funcionariosService.FuncionarioExiste(usuario.MatriculaFuncionario, usuario.CodigoEmpresa))
            {
                return(BadRequest($"Matrícula {usuario.MatriculaFuncionario} não cadastrada!"));
            }

            funcionario       = funcionariosService.GetFuncionario(usuario.MatriculaFuncionario, usuario.CodigoEmpresa);
            funcionario.Email = usuario.Email;
            funcionariosService.AddOrUpdateFuncionario(funcionario);

            Usuario usuarioDB = usuariosService.GetUsuario(usuario.Login);

            usuarioDB.Senha = CryptoGraph.Encrypt(usuario.Senha);
            usuariosService.AddOrUpdateUsuario(usuarioDB);
            return(Ok());
        }
        public IHttpActionResult Login(UsuarioSenhaDTO usuario)
        {
            if (usuario == null || usuario.Login == null || usuario.Senha == null)
            {
                return(BadRequest());
            }
            Usuario user;

            try
            {
                Modelo db = new Modelo();
                user = db.Usuarios.Find(usuario.Login);


                if (user == null)
                {
                    return(BadRequest("Usuário não encontrado!"));
                }

                string senhaCrypt = CryptoGraph.Encrypt(usuario.Senha);

                if (user.Senha != senhaCrypt)
                {
                    return(BadRequest("Senha incorreta!"));
                }


                string token = TokenServices.GenerateToken(user.Login, roles: user.Perfil);

                var userObj = new
                {
                    Token   = token,
                    Usuario = user.Nome,
                    usuario.Login,
                    user.FuncionarioId,
                    user.Funcionario?.MatriculaFuncionario,
                    user.Funcionario?.CodigoEmpresa,
                    user.Perfil
                };
                db.Dispose();

                return(Ok(userObj));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, ex));
            }
        }
        public IHttpActionResult RecuperarSenha(UsuarioSenhaDTO usuario)
        {
            if (string.IsNullOrEmpty(usuario.Login))
            {
                return(BadRequest("É necessário informar o login!"));
            }

            if (string.IsNullOrEmpty(usuario.Senha))
            {
                return(BadRequest("É necessário informar a senha!"));
            }

            if (string.IsNullOrEmpty(usuario.CodigoRecuperacao))
            {
                return(BadRequest("É necessário informa o código de recuperação!"));
            }

            try
            {
                Usuario usuarioDB = usuariosService.GetUsuario(usuario.Login);
                if (usuario.CodigoRecuperacao != usuarioDB.CodigoRecuperacao)
                {
                    return(BadRequest("Código de Recuperação inválido!"));
                }

                usuarioDB.Senha             = CryptoGraph.Encrypt(usuario.Senha);
                usuarioDB.CodigoRecuperacao = null;
                usuariosService.AddOrUpdateUsuario(usuarioDB);
                return(Ok("Senha alterada com Sucesso!"));
            }
            catch (UsuarioNaoEncontradoException)
            {
                return(Content(HttpStatusCode.NotFound, "Usuário não encontrado!"));
            }
            catch
            {
                return(Content(HttpStatusCode.InternalServerError, "Ocorreu um erro desconhecido. Por favor, entre em contato com o suporte."));
            }
        }
示例#4
0
 public string Decrypt(string texto)
 {
     return(CryptoGraph.Decrypt(texto));
 }
示例#5
0
 public string Encrypt(string texto)
 {
     return(CryptoGraph.Encrypt(texto));
 }