Skip to content

Commit af86b6a

Browse files
committed
Added models and seeders
1 parent 9128637 commit af86b6a

File tree

4 files changed

+107
-1
lines changed

4 files changed

+107
-1
lines changed

app/Models/Permission.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace App\Models;
4+
5+
use Spatie\Permission\Models\Permission as OriginalPermission;
6+
7+
class Permission extends OriginalPermission
8+
{
9+
protected $fillable = [
10+
'name',
11+
'guard_name',
12+
'updated_at',
13+
'created_at'
14+
];
15+
}

app/Models/Role.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace App\Models;
4+
5+
use Spatie\Permission\Models\Role as OriginalRole;
6+
7+
class Role extends OriginalRole
8+
{
9+
protected $fillable = [
10+
'name',
11+
'guard_name',
12+
'updated_at',
13+
'created_at'
14+
];
15+
}

app/Models/User.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77
use Illuminate\Foundation\Auth\User as Authenticatable;
88
use Illuminate\Notifications\Notifiable;
99
use Laravel\Sanctum\HasApiTokens;
10+
use Spatie\Permission\Traits\HasRoles;
1011

1112
class User extends Authenticatable
1213
{
13-
use HasApiTokens, HasFactory, Notifiable;
14+
use HasApiTokens, HasFactory, Notifiable, HasRoles;
1415

1516
/**
1617
* The attributes that are mass assignable.
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<?php
2+
3+
namespace Database\Seeders;
4+
5+
use Illuminate\Database\Seeder;
6+
use Spatie\Permission\Models\Permission;
7+
use Spatie\Permission\Models\Role;
8+
use Spatie\Permission\PermissionRegistrar;
9+
10+
class BasicAdminPermissionSeeder extends Seeder
11+
{
12+
/**
13+
* Create the initial roles and permissions.
14+
*
15+
* @return void
16+
*/
17+
public function run()
18+
{
19+
// Reset cached roles and permissions
20+
app()[PermissionRegistrar::class]->forgetCachedPermissions();
21+
22+
// create permissions
23+
$permissions = [
24+
'permission list',
25+
'permission create',
26+
'permission edit',
27+
'permission delete',
28+
'role list',
29+
'role create',
30+
'role edit',
31+
'role delete',
32+
'user list',
33+
'user create',
34+
'user edit',
35+
'user delete'
36+
];
37+
38+
foreach ($permissions as $permission) {
39+
Permission::create(['name' => $permission]);
40+
}
41+
42+
// create roles and assign existing permissions
43+
$role1 = Role::create(['name' => 'writer']);
44+
$role1->givePermissionTo('permission list');
45+
$role1->givePermissionTo('role list');
46+
$role1->givePermissionTo('user list');
47+
48+
$role2 = Role::create(['name' => 'admin']);
49+
foreach ($permissions as $permission) {
50+
$role2->givePermissionTo($permission);
51+
}
52+
53+
$role3 = Role::create(['name' => 'super-admin']);
54+
// gets all permissions via Gate::before rule; see AuthServiceProvider
55+
56+
// create demo users
57+
$user = \App\Models\User::factory()->create([
58+
'name' => 'Super Admin',
59+
'email' => '[email protected]',
60+
]);
61+
$user->assignRole($role3);
62+
63+
$user = \App\Models\User::factory()->create([
64+
'name' => 'Admin User',
65+
'email' => '[email protected]',
66+
]);
67+
$user->assignRole($role2);
68+
69+
$user = \App\Models\User::factory()->create([
70+
'name' => 'Example User',
71+
'email' => '[email protected]',
72+
]);
73+
$user->assignRole($role1);
74+
}
75+
}

0 commit comments

Comments
 (0)