seb-53 / laravel-core
Core CRUD and API functionalities for Laravel projects
Requires
- php: ^8.3
- api-platform/laravel: ^4.3
- laravel/framework: ^12.0 || ^13.0
- laravel/sanctum: ^4.2
- laravel/tinker: ^2.9 || ^3.0
- livewire/livewire: ^3.5
- spatie/laravel-permission: ^6.23
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- larastan/larastan: ^3.8
- orchestra/testbench: ^10.0 || ^11.0
- phpdocumentor/type-resolver: ^1.8
- phpstan/phpstan: ^2.0
- rector/rector: ^2.0
- squizlabs/php_codesniffer: ^3.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
This package include all basic functionalities for a Laravel application.
- CRUD
- API with ApiPlatform 4
- Caching
Installation
composer require seb-53/laravel-core
Inscription au back-office
L'inscription publique (/admin/register) est désactivée par défaut : les comptes du back-office
sont créés par un administrateur. Pour la réactiver (5 inscriptions / 10 min par IP) :
LARAVEL_CORE_REGISTRATION=true
Si le projet a publié config/laravel-core.php, y ajouter la clé 'registration' => (bool) env('LARAVEL_CORE_REGISTRATION', false).
Droits d'accès (1.6.0)
AbstractController::authorize()applique réellement le Gate (policies, permissions, Super-Admin viaGate::before). Avant la 1.6.0 il renvoyait toujourstrue: un contrôleur d'application qui hérite d'AbstractControlleret appelle$this->authorize()sans policy correspondante renvoie désormais 403.- Rôles : un compte qui n'est pas Super-Admin n'attribue (à un compte ou à un rôle) que des rôles et des
permissions qu'il détient déjà, ne touche pas au rôle Super-Admin et ne peut pas en créer un autre ;
attribuer des rôles demande
manage roles(le profil et sa propre fiche n'en attribuent jamais). - Comptes : un Super-Admin n'est modifiable ou supprimable que par un Super-Admin ; on ne supprime pas son
propre compte ; rattacher la fiche d'un autre collaborateur demande
edit contributors, lier un collaborateur à un compte demandeedit users. - Permissions : création, modification et suppression réservées au Super-Admin (leurs noms sont utilisés dans le code).
- Avatars : nom aléatoire, extension déduite du contenu (jpg, png, gif, webp ; plus de SVG).
- Connexion : « mot de passe oublié » sans révéler si l'adresse a un compte ; limites de débit sur la
connexion, l'oubli et la réinitialisation du mot de passe, le profil et la connexion d'API
(
Security\Api\AuthController) ; jetons d'API révoqués à la réinitialisation du mot de passe. - Le modèle des comptes est celui de
auth.providers.users.models'il étendSeb53\LaravelCore\Models\User\User: les rôles attribués depuis l'écran Utilisateurs étaient enregistrés sous le type du paquet, donc sans effet pour une application qui étend le modèle.
Publication des ressources
| Tag | Contenu | Destination |
|---|---|---|
laravel-config | configuration | config/laravel-core.php |
laravel-views | vues Blade | resources/views/vendor/laravel-core |
laravel-lang | traductions | lang/vendor/laravel-core |
laravel-stubs | stubs des générateurs | stubs/vendor/laravel-core |
laravel-core-assets | SCSS, JS, polices, images | resources/{scss,js,fonts,images}/vendor/laravel-core |
php artisan vendor:publish --tag=laravel-core-assets --force
Les assets ne sont pas republiés par le script post-update-cmd du squelette Laravel
(vendor:publish --tag=laravel-assets --force) : un composer update n'écrase donc plus les
fichiers du projet. Republier explicitement après une mise à jour du paquet qui modifie ses assets.
Documentations
- Resource Model - Basic usage of Resource Model.
- User - Basic usage of user logic.
- API - Basic usage of API.
- Filters - Usage of CRUD list filters.
- Forms - Usage of CRUD forms blade components.