You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
9 months ago | |
---|---|---|
resources/images | 10 months ago | |
src | 10 months ago | |
.gitignore | 10 months ago | |
README.md | 9 months ago | |
composer.json | 10 months ago | |
composer.lock | 10 months ago |
README.md
Ae3 Auth
Esta lib padroniza o processo de autenticação e gerência de senhas utilizados na Ae3
Requisitos
- PHP >= 8.1
- Laravel >= 10.*
- Composer >= v2
Como configurar o projeto?
- Adicione este repositório à lista de repositórios do composer em seu projeto laravel.
{
"repositories": [
{
"type": "git",
"url": "https://git.ae3tecnologia.com.br/AE3_TECNOLOGIA_OPENSOURCE/ae3-auth.git"
}
]
}
- Execute o comando a seguir para baixar esta lib ao vendor do seu projeto.
composer require ae3/ae3auth
- Configure as variáveis abaixo no .env do seu projeto.
USERS_TABLE="Nome da tabela de usuários | users"
MIN_PASSWORD_LENGTH="Tamanho mínimo da senha | 8"
PASSWORD_HISTORY_TABLE="Nome da tabela de senhas a serem mantidas na base de dados | password_histories"
MAX_STORE_PASSWORDS="Quantidade máxima de senhas | 3"
USERNAME_COLUMN="Nome da coluna de usuário | username"
FORCE_CHANGE_COLUMN_NAME="Nome da coluna de alteração | force_change_password"
EXPIRES_PASSWORD_COLUMN_NAME="Nome da coluna de expiração | password_expires_at"
USER_MODEL="Modelo de usuário | App\\Models\\User"
PASSWORD_COLUMN="Nome da coluna de senha | password"
PASSWORD_EXPIRES_IN="Quantidade de dias que as senhas são válidas | 30"
- Execute o comando abaixo para criar a tabela de usuários e a tabela de senhas.
php artisan ae3auth:publish
- Execute o comando abaixo para criar as tabelas de usuários e senhas.
php artisan migrate
- Validação de senhas
Para validar a nova senha do usuário, no FormRequest, adicione a seguinte regra:
use Pablo\Ae3auth\app\Rules\CheckUsedPasswordRule;
public function rules(): array
{
return [
'password' => [
new CheckUsedPasswordRule()
],
];
}
- Caso necessário, a trait
ValidationErrorResponse
pode ser adicionada ao FormRequest para enviar uma mensagem personalizada para o client
use Pablo\Ae3auth\app\Traits\ValidationErrorResponse
use Illuminate\Contracts\Validation\Validator;
...
protected function failedValidation(Validator $validator)
{
$this->throwAndReturnJsonResponse($validator, 'sua mensagem');
}
- Invalidando senhas expiradas
Para invalidar as senhas expiradas, execute o comando abaixo:
php artisan ae3auth:invalidate-expired-passwords
Ou adicione a chamada para o comando no arquivo de schedule do seu projeto para ser executado pelo cron do sistema.
Versão 10.*:
Adicione ao arquivo app\Console\Kernel.php
:
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
...
$schedule->command('ae3auth:invalidate-expired-passwords')->daily();
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
Versão >= 11.*:
Adicione ao arquivo routes/console.php
:
...
use \Illuminate\Support\Facades\Schedule;
...
Schedule::call('ae3auth:invalidate-expired-passwords')->daily();
- Adicione o atributo de data de expiração para o usuário e trait para validação de senhas
use App\Models\User;
use \Pablo\Ae3auth\app\Traits\HasPasswordValidation;
class User extends Authenticatable
{
use HasPasswordValidation;
...
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
...
'password_expires_at'
];
...
}
- MMiddleware
Para validação das rotas com a data de validação das senhas, adicione o middleware:
- Versão 10.*:
app\Http\Kernel.php
protected $routeMiddleware = [
...
\Pablo\Ae3auth\app\Http\InvalidPasswordMiddleware::class,
];
- Versão 11.*
bootstrap/app.php
<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
api: __DIR__.'/../routes/api.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'ae3auth-invalid-password' => \Pablo\Ae3auth\app\Http\InvalidPasswordMiddleware::class,
]);
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();