Skip to content

Commit 89c1db5

Browse files
authored
feat: update signature for file gen commands (#27)
Consolidates the command interface by renaming file generation commands from mandate:make:* to mandate:* and merging database creation functionality into the same commands via a --db flag. This simplifies the command structure and provides a more intuitive API where the default behavior generates PHP classes (code-first approach) and the --db flag creates database records directly (database-first approach). Changes: * Unified command signatures: mandate:permission, mandate:role, mandate:capability, and mandate:feature now support both class generation (default) and database creation (with --db flag) * Removed separate CreateRoleCommand, CreatePermissionCommand, and CreateCapabilityCommand classes * Updated all tests, documentation, and configuration references to use the new command names
1 parent bc29bd0 commit 89c1db5

18 files changed

+468
-355
lines changed

README.md

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ php artisan migrate
7373

7474
That's it. No configuration required for most applications.
7575

76+
**Publish the config file for customization:**
77+
78+
```bash
79+
php artisan vendor:publish --tag=mandate-config
80+
```
81+
7682
**Optional migrations** (publish only what you need):
7783

7884
```bash
@@ -383,17 +389,20 @@ User::withoutPermission('admin:access')->get();
383389
## Artisan Commands
384390

385391
```bash
386-
# Create a permission
387-
php artisan mandate:permission article:edit
388-
php artisan mandate:permission article:edit --guard=api
392+
# Generate a permission class (code-first)
393+
php artisan mandate:permission ArticlePermissions
394+
php artisan mandate:permission ArticlePermissions --guard=api
395+
396+
# Generate a role class (code-first)
397+
php artisan mandate:role SystemRoles
389398

390-
# Create a role
391-
php artisan mandate:role editor
392-
php artisan mandate:role editor --permissions=article:edit,article:view
399+
# Generate a capability class (code-first)
400+
php artisan mandate:capability ContentCapabilities
393401

394-
# Create a capability (requires capabilities.enabled = true)
395-
php artisan mandate:capability manage-posts
396-
php artisan mandate:capability manage-posts --permissions=post:create,post:edit
402+
# Create directly in database (use --db flag)
403+
php artisan mandate:permission article:edit --db
404+
php artisan mandate:role editor --db --permissions=article:edit,article:view
405+
php artisan mandate:capability manage-posts --db --permissions=post:create,post:edit
397406

398407
# Assign a role to a subject (user, team, etc.)
399408
php artisan mandate:assign-role 1 admin
@@ -661,10 +670,13 @@ $user->getAllCapabilities(); // Includes both direct and via roles
661670
### Artisan Commands for Capabilities
662671

663672
```bash
664-
# Create a capability
665-
php artisan mandate:capability manage-posts
666-
php artisan mandate:capability manage-posts --guard=api
667-
php artisan mandate:capability manage-posts --permissions=post:create,post:edit,post:delete
673+
# Generate a capability class (code-first)
674+
php artisan mandate:capability ContentCapabilities
675+
676+
# Create capability directly in database
677+
php artisan mandate:capability manage-posts --db
678+
php artisan mandate:capability manage-posts --db --guard=api
679+
php artisan mandate:capability manage-posts --db --permissions=post:create,post:edit,post:delete
668680

669681
# Assign capability to a role
670682
php artisan mandate:assign-capability editor manage-posts
@@ -1106,14 +1118,14 @@ Generate new definition classes with scaffolded constants:
11061118

11071119
```bash
11081120
# Generate a permission class with CRUD constants
1109-
php artisan mandate:make:permission ArticlePermissions
1110-
php artisan mandate:make:permission ArticlePermissions --guard=api
1121+
php artisan mandate:permission ArticlePermissions
1122+
php artisan mandate:permission ArticlePermissions --guard=api
11111123

11121124
# Generate a role class
1113-
php artisan mandate:make:role SystemRoles
1125+
php artisan mandate:role SystemRoles
11141126

11151127
# Generate a capability class
1116-
php artisan mandate:make:capability ContentCapabilities
1128+
php artisan mandate:capability ContentCapabilities
11171129
```
11181130

11191131
Customize the generated stubs:

UPGRADE.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -227,14 +227,15 @@ php artisan mandate:role SystemRoles
227227
**After (2.x):**
228228

229229
```bash
230-
# Database-first commands (create directly in database)
231-
php artisan mandate:permission user:view
232-
php artisan mandate:role admin
233-
234-
# Code-first commands (generate PHP classes)
235-
php artisan mandate:make:permission UserPermissions
236-
php artisan mandate:make:role SystemRoles
237-
php artisan mandate:make:capability ContentCapabilities
230+
# Code-first commands (generate PHP classes) - default behavior
231+
php artisan mandate:permission UserPermissions
232+
php artisan mandate:role SystemRoles
233+
php artisan mandate:capability ContentCapabilities
234+
235+
# Database-first commands (use --db flag)
236+
php artisan mandate:permission user:view --db
237+
php artisan mandate:role admin --db
238+
php artisan mandate:capability manage-posts --db
238239

239240
# Sync code-first definitions to database
240241
php artisan mandate:sync

config/mandate.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@
120120
| Feature Generator
121121
|--------------------------------------------------------------------------
122122
|
123-
| Class that handles generating feature classes for the mandate:make:feature
123+
| Class that handles generating feature classes for the mandate:feature
124124
| command. External packages (e.g., Flagged) can provide their own generator.
125125
| Must implement OffloadProject\Mandate\Contracts\FeatureGenerator.
126126
|

src/Commands/CreateCapabilityCommand.php

Lines changed: 0 additions & 111 deletions
This file was deleted.

src/Commands/CreatePermissionCommand.php

Lines changed: 0 additions & 72 deletions
This file was deleted.

0 commit comments

Comments
 (0)