Download the PHP package nanicas/authentication-library without Composer
On this page you can find all versions of the php package nanicas/authentication-library. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download nanicas/authentication-library
More information about nanicas/authentication-library
Files in nanicas/authentication-library
Package authentication-library
Short Description Auth manager for Nanicas projects
License
Informations about the package authentication-library
Atenção: Todos os comandos abaixo deverão ser executados em seu projeto principal.
Instalar a dependência
Adicionar os Providers
No arquivo config/app.php
, adicione:
Executar o comando de publicação dos arquivos de configuração
Após o comando, favor verificar no diretório /config
(raiz) se o arquivo existe:
nanicas_auth.php
Configurar as variáveis de ambiente
Customizar Guards e Providers em config/auth.php
Caso queira personalizar os meios de autenticação, altere:
Configurar a entidade de usuário
Adicionar a coluna ID no "fillable" da Model que representa seu usuário autenticado:
Adicionar Middlewares
No arquivo app/Http/Kernel.php
, adicione:
Exemplos
Busca de permissões por usuário via API (stateless)
Primeiro passo é sua model referente ao usuário possuir a trait Nanicas\Auth\Frameworks\Laravel\Traits\PermissionableStateless
implementada.
Segundo passo é habilitar a configuração gate.check_acl_permissions
e stateless
no seu arquivo nanicas_auth.php
.
Vamos criar um middleware para separar a lógica referente a autorização, caso exista: (namespace App\Http\Middleware
)
No exemplo acima, estamos usando um
HARD_CONTRACT_ID
fixo, ou seja, obtido do arquivo de configuração. Contudo, isso poderia ser dinâmico de acordo com sua regra de negócio.
E por último é tentar fazer o uso do fluxo como um todo, incluindo acesso às permissões, sendo:
Estrutura de dados via API (stateless)
Um ponto de atenção é sobre o middleware principal
auth:api
, pois, caso o token recebido seja inválido, o Laravel pode passar a exibir"The route api/v1/user could not be found"
, sendo necessário então configurar umfallback
.Caso tente usar o
Gate::authorize
sem antes passar pelo middlewareauth:api
, receberá o seguinte erro:Caso tente usar os métodos contidos na trait
PermissionableStateless
, como por exemplogetACLPermissions
, sem antes adicionar uma resposta válida doAutorizador
na requisição em questão, receberá o seguinte erro:
Busca de permissões por usuário via sessão
Primeiro passo é sua Model referente ao usuário possuir a Trait Nanicas\Auth\Frameworks\Laravel\Traits\PermissionableSession
implementada.
Segundo passo é habilitar a configuração gate.check_acl_permissions
e desabilitar a configuração stateless
no seu arquivo nanicas_auth.php
Terceiro e último é tentar fazer o uso do fluxo como um todo, incluindo acesso às permissões, sendo:
Estrutura de dados via sessão
Caso você decida não usar o
define_contract_by_domain.nanicas
para definir seu contrato automaticamente na sessão, tenha em mente que será necessária tal informação internamente durante o uso doGate::authorize
, caso contrário, receberá o seguinte erro:Entendemos que, se existe um grupo cercado pelo middleware
auth_oauth.nanicas
, significa que o login já foi feito anteriormente usando o drivercustom_session
, caso contrário, será redirecionado para ologout
.
Customizar um serviço terceiro
No arquivo de configuração config/nanicas_auth.php
, existem as classes padrão, sendo:
Caso queira usar uma própria, bastar herdá-la e implementar/ajustar da sua maneira, como:
As interfaces são obrigatórias, pois é com esse contrato que o Framework conseguirá usar a inversão de dependência corretamente, como configurado em src/Frameworks/Laravel/Providers/AppServiceProvider.php
.
Gerar Personal Tokens
As aplicações que forem consumir recursos privados desse projeto, deverão usar um token pessoal para comunicação entre as aplicações (machine-to-machine), enviando no cabeçalho, como no exemplo:
Execução simples (token pessoal)
Execução avançada (token pessoal)
Resultado (ambos):
Lembre-se de configurar as variáveis de ambiente para lê-las:
Enviando token pessoal via HTTP
Fluxo de entrada no aplicativo
Legendas
- auth, Autenticação: https://github.com/nanicas/nans-authentication-laravel
- autho, Autorização: https://github.com/nanicas/nans-authorization-laravel