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.
Go to file
pablo ab0d708e72 Atualizacao de uso do provider de senha 9 months ago
resources/images Initial commit 10 months ago
src Refatoracao para alterar metodos para classe de servico 10 months ago
.gitignore Initial commit 10 months ago
README.md Atualizacao de uso do provider de senha 9 months ago
composer.json Atualizacao do nome do pacote 10 months ago
composer.lock Atualização da versão do sanctum e PHP 10 months ago

README.md

A&3 Logo

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?

  1. 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"
    }
  ]
}


  1. Execute o comando a seguir para baixar esta lib ao vendor do seu projeto.
composer require ae3/ae3auth
  1. 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"
  1. Execute o comando abaixo para criar a tabela de usuários e a tabela de senhas.
php artisan ae3auth:publish
  1. Execute o comando abaixo para criar as tabelas de usuários e senhas.
php artisan migrate
  1. 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');
}

  1. 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();
  1. 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'
    ];
    ...
}
  1. 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();