PHP code example of s3tech / laravel-auth-kit

1. Go to this page and download the library: Download s3tech/laravel-auth-kit library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

s3tech / laravel-auth-kit example snippets



// app/Models/User.php

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Sanctum\HasApiTokens;
use Spatie\Permission\Traits\HasRoles;
use S3Tech\AuthKit\Traits\HasAuthKit;

class User extends Authenticatable
{
    use HasApiTokens, HasRoles, HasAuthKit;

    protected $fillable = ['first_name', 'last_name', 'phone', 'email', 'password', 'must_change_password', 'status'];

    protected $hidden = ['password', 'remember_token'];
}

'guard_name' => 'sanctum',

'guards' => [
    'sanctum' => ['driver' => 'sanctum', 'provider' => 'users'],
],

// database/seeders/RoleSeeder.php
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;

// Rôles
Role::firstOrCreate(['name' => 'super-admin', 'guard_name' => 'sanctum']);
Role::firstOrCreate(['name' => 'manager',     'guard_name' => 'sanctum']);
Role::firstOrCreate(['name' => 'user',        'guard_name' => 'sanctum']);

// Permissions
$permissions = ['manage-roles', 'create-user', 'update-user'];
foreach ($permissions as $perm) {
    Permission::firstOrCreate(['name' => $perm, 'guard_name' => 'sanctum']);
}

// Assigner toutes les permissions au super-admin
Role::findByName('super-admin', 'sanctum')->givePermissionTo($permissions);

return [
    'route_prefix'     => 'api',
    'route_middleware' => ['api'],
    'user_model'       => \App\Models\User::class,

    'token' => ['name' => 'auth_token'],

    'otp' => [
        'length'     => 6,
        'expires_in' => 10,  // minutes
    ],

    'password_rules' => ['min:8'],

    'messages' => [
        'default_locale' => 'en',
        'supported_locales' => ['en', 'fr'],
    ],

    'registration' => [
        'mode'         => 'self',   // 'self' | 'admin'  — mutuellement exclusifs
        'default_role' => 'user',
    ],

    'profile' => [
        // Champs modifiables via PUT /profile et PUT /users/{user}
        // Ajouter 'phone', 'avatar'… selon votre table users
        'editable_fields' => ['first_name', 'last_name', 'email', 'phone'],
    ],

    'activity_log' => [
        'enabled'        => true,
        'retention_days' => 90,     // null = indéfini
        'log_events'     => [
            'register'           => true,
            'login'              => true,
            'logout'             => true,
            'login_failed'       => true,
            'profile_updated'    => true,
            'password_changed'   => true,
            'password_reset'     => true,
            'otp_requested'      => true,
            'admin_created_user' => true,
            'role_assigned'      => true,
            'role_revoked'       => true,
        ],
    ],

    'permissions' => [
        'manage_roles'      => 'manage-roles',
        'create_user'       => 'create-user',
        'update_other_user' => 'update-user',
    ],
];

$this->logger->log($request, 'budget_updated', auth()->id(), 'update', $budget, [
    'updated_fields' => ['amount', 'status'],
]);
bash
php artisan vendor:publish --tag=auth-kit-config
bash
# Sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

# Spatie
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"

# Auth Kit
php artisan vendor:publish --tag=auth-kit-migrations

php artisan migrate

GET /api/activity-logs?event=login&from=2024-01-01&to=2024-12-31&per_page=50