Skip to content

Boilerplate para criação de sistemas para a Universidade Federal de Ouro Preto (UFOP) usando a autenticação do servidor AD da instituição.

License

Notifications You must be signed in to change notification settings

jpmoura/ufop-boilerplate-laravel

Repository files navigation

UFOP Boilerplate - Laravel 5.3

Esse projeto se destina aqueles que desejam criar algum sistema dedicado a comunidade da Universidade Federal de Ouro Preto (UFOP) usando o mesmo sistema de autenticação do portal Minha UFOP, tornando a experiência do usuário mais agradável.

Esse boilerplate foi desenvolvido usando o framework Laravel, que é um dos frameworks PHP mais usados no mercado na época de criação desse boilerplate. Além disso, para o painel de controle, foi utilizado uma versão personalizada da dashboard do AdminLTE 2.

Em conjunto ao sistema, para a sessão de autenticação usando os dados do Minha UFOP, foi usada a API LD(AP)I como API de autenticação, que atualmente está hospedada nos servidores do campus do Instituto de Ciências Exatas e Aplicadas (ICEA), localizado na cidade de João Monlevade, Minas Gerais.

Pré-requisitos

Antes de executar os comandos de instalação, é necessário que você tenha instalado no dispositivo onde o sistema irá ser hospedado o Node.js entre as versões 0.12 e 6.9.4 e o gulp.js instalado globalmente. Você pode ver mais detalhes sobre a instalação do Node.js visitando o site da aplicação para ter mais detalhes sobre os procedimentos em cada plataforma.

No caso do gulp.js, você deve instalar previamente o Node.js e então executar o comando npm install --global gulp-cli. Caso você esteje usando um sistema UNIX como MacOS ou uma distribuição Linux, talvez seja necessário executar o comando com permissão de administrador e para isso você pode usar o comando sudo ou su, variando de acordo com o seu sistema operacional.

Como pré-requisitos do próprio Laravel, temos:

  • Versão do PHP igual ou superior a 5.6.4;
  • Extensão OpenSSL do PHP ativada;
  • Extensão PDO do banco de dados utilizado ativada;
  • Extensão Mbstring do PHP ativada;
  • Extensão Tokenizer do PHP ativada;
  • Extensão XML do PHP ativada;

Instalação

Para a instalação são necessários os seguintes comandos:

$ composer install
$ npm install
$ gulp --prod
$ php artisan migrate

O comando composer install é usado para realizar a instalação de todos os pacotes os quais o sistema é dependente para que o mesmo funcione.

O comando npm install é usado para instalar as bibliotecas necessárias para manipulação de assets ou recursos do sistema como arquivos CSS, JavaScript, etc. Caso você esteja usando um sistema Windows para hospedar a aplicação, talvez seja necessário executar o comando npm install --no-bin-links ao invés do npm install devido algumas restrições do sistema operacional.

O comando gulp --prod irá realizar todos os comandos definidos no arquivo gulpfile.js, onde estão definidos todos os procedimentos referentes aos arquivos de recursos do sistema. No caso desse boilerplate todos os arquivos CSS e JavaScript serão mesclados e minificados em um único arquivo, pois isso é uma boa prática para o desenvolvimento de sistemas WEB.

E por último, o comando php artisan migrate faz a migração da tabela que irá conter os usuários para o banco de dados.

Configuração

Dentro da pasta config existe o arquivo ldapi.php que mostra que no arquivo de ambiente, o chamado arquivo .env devem existir as entradas:

  • LDAPI_USER:usuário da API;
  • LDAPI_PASSWORD: senha do usuário da API;
  • LDAPI_REQUEST_METHOD: Método HTTP da requisição de autenticação. Originalmente a API foi desenvolvidada para usar somente método POST mas isso pode ser alterado facilmente, então é necessário verificar o método com o responsável pela API;
  • LDAPI_AUTH_URL: URL para qual a requisição de autenticação será enviada. Verifique também com o responsável pela API qual é o endereço que recebe as requisições de autenticação.

No arquivo .env.example é possível ver um exemplo preenchido. Para obter o seu usuário e senha da LDAPI é necessário entrar em contato com o suporte de informática do ICEA.

Após preenchido o usuário e senha do LDAPI no arquivo .env pode ser necessário executar o comando php artisan config:cache na raiz do diretório do sistema. Esse comando limpa a configuração anterior que foi salva em cache e força um novo carregamento do arquivo de configuração.

Funcionamento da Autenticação

A LDAPI é uma API RESTful e por isso reponde a requisições HTTP. Para realizar tais requisições para a API foi utilizado o pacote GuzzleHttp, que é um dos pacotes HTTP mais conhecidos para PHP.

O controlador LoginController contém toda a lógica da autenticação. Para esse boilerplate, foi tomada como restrição que somente professores e técnicos administrativos seriam capazes de utilizar o sistema.

A autenticação nesse caso depende de dois métodos do LoginController, que são o isPermitted que verifica se o usuário pertence a algum grupo da lista de permitidos e o método postLogin que recebe os dados do formulário da página de login. Usando as credenciais fornecidas, é feita uma requisição para a LDAPI e dependendo da resposta o usuário é autenticado ou não. Caso seja o primeiro acesso do usuário, ele é cadastrado imediatamente e automaticamente no banco de dados, usando os atributos provenientes da resposta da LDAPI caso ele esteja autorizado e autenticado.

O método isPermitted foi incluído somente como um exemplo de como filtrar os usuários capazes de usar o seu sistema. Caso ele seja aberto para toda comunidade acadêmica, basta retirar o método e fazer as adaptações necessárias. Nesse exemplo, o método só permite acesso de usuários que sejam técnicos ou professores do campus do Instituto de Ciências Exatas e Aplicadas, da cidade de João Monlevade.

O modelo Usuario bem como sua tabela foram feitos como exemplo e podem ser alterados de acordo com os dados que você irá necessitar.

Todo o código de autenticação está comentado no corpo dos métodos no LoginController. Existem também o tratamento de eventos, que basicamente criam uma entrada no arquivo de log informando o administrador sobre erros de login, logins que foram realizados com sucesso e também logouts feitos, bem como o registro da criação de novos usuários.

About

Boilerplate para criação de sistemas para a Universidade Federal de Ouro Preto (UFOP) usando a autenticação do servidor AD da instituição.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published