33namespace VentureDrake \LaravelCrm \Observers ;
44
55use App \Team ;
6+ use Carbon \Carbon ;
67use DB ;
7- use Spatie \Permission \Models \Permission ;
8- use Spatie \Permission \Models \Role ;
98
109class TeamObserver
1110{
@@ -29,64 +28,77 @@ public function creating(Team $team)
2928 public function created (Team $ team )
3029 {
3130 app ()[\Spatie \Permission \PermissionRegistrar::class]->forgetCachedPermissions ();
32-
33- foreach (DB ::table ('permissions ' )
34- ->whereNull ('team_id ' )
35- ->get () as $ permission ) {
36- DB ::table ('permissions ' )->insert ([
37- 'name ' => $ permission ->name ,
38- 'guard_name ' => $ permission ->guard_name ,
39- 'description ' => $ permission ->description ,
40- 'crm_permission ' => $ permission ->crm_permission ,
31+
32+ // Get the roles
33+ foreach (DB ::table ('roles ' )
34+ ->whereNull ('team_id ' )
35+ ->get () as $ role ) {
36+ DB ::table ('roles ' )->updateOrInsert ([
37+ 'name ' => $ role ->name ,
38+ 'guard_name ' => $ role ->guard_name ,
39+ 'description ' => $ role ->description ,
40+ 'crm_role ' => $ role ->crm_role ,
4141 'team_id ' => $ team ->id ,
42+ ], [
43+ 'created_at ' => Carbon::now (),
44+ 'updated_at ' => Carbon::now (),
4245 ]);
43- }
44-
45- $ role = Role::create (['name ' => 'Owner ' , 'crm_role ' => 1 ])
46- ->givePermissionTo (Permission::all ());
47-
48- $ role = Role::create (['name ' => 'Admin ' , 'crm_role ' => 1 ])
49- ->givePermissionTo (Permission::all ());
46+
47+ if ($ newRole = DB ::table ('roles ' )->where ([
48+ 'name ' => $ role ->name ,
49+ 'guard_name ' => $ role ->guard_name ,
50+ 'description ' => $ role ->description ,
51+ 'crm_role ' => $ role ->crm_role ,
52+ 'team_id ' => $ team ->id ,
53+ ])->first ()) {
54+ if ($ role ->name == 'Owner ' ) {
55+ if ((app ()->version () >= 8 && class_exists ('App\Models\User ' )) || (class_exists ('App\Models\User ' ) && ! class_exists ('App\User ' ))) {
56+ DB ::table ('model_has_roles ' )->updateOrInsert ([
57+ 'role_id ' => $ newRole ->id ,
58+ 'model_type ' => 'App\Models\User ' ,
59+ 'model_id ' => auth ()->user ()->id ,
60+ ]);
61+ } else {
62+ DB ::table ('model_has_roles ' )->updateOrInsert ([
63+ 'role_id ' => $ newRole ->id ,
64+ 'model_type ' => 'App\User ' ,
65+ 'model_id ' => auth ()->user ()->id ,
66+ ]);
67+ }
68+ }
69+
70+ foreach (DB ::table ('permissions ' )
71+ ->leftJoin ('role_has_permissions ' , 'permissions.id ' , '= ' , 'role_has_permissions.permission_id ' )
72+ ->where ('role_has_permissions.role_id ' , $ role ->id )
73+ ->get () as $ permission ) {
74+ DB ::table ('permissions ' )->updateOrInsert ([
75+ 'name ' => $ permission ->name ,
76+ 'guard_name ' => $ permission ->guard_name ,
77+ 'description ' => $ permission ->description ,
78+ 'crm_permission ' => $ permission ->crm_permission ,
79+ 'team_id ' => $ team ->id ,
80+ ], [
81+ 'created_at ' => Carbon::now (),
82+ 'updated_at ' => Carbon::now (),
83+ ]);
5084
51- $ role = Role::create (['name ' => 'Manager ' , 'crm_role ' => 1 ])
52- ->givePermissionTo ([
53- 'create crm leads ' ,
54- 'view crm leads ' ,
55- 'edit crm leads ' ,
56- 'delete crm leads ' ,
57- 'create crm deals ' ,
58- 'view crm deals ' ,
59- 'edit crm deals ' ,
60- 'delete crm deals ' ,
61- 'create crm people ' ,
62- 'view crm people ' ,
63- 'edit crm people ' ,
64- 'delete crm people ' ,
65- 'create crm organisations ' ,
66- 'view crm organisations ' ,
67- 'edit crm organisations ' ,
68- 'delete crm organisations ' ,
69- ]);
85+ if ($ newPermission = DB ::table ('permissions ' )->where ([
86+ 'name ' => $ permission ->name ,
87+ 'guard_name ' => $ permission ->guard_name ,
88+ 'description ' => $ permission ->description ,
89+ 'crm_permission ' => $ permission ->crm_permission ,
90+ 'team_id ' => $ team ->id ,
91+ ])->first ()) {
92+ DB ::table ('role_has_permissions ' )->updateOrInsert ([
93+ 'permission_id ' => $ newPermission ->id ,
94+ 'role_id ' => $ newRole ->id ,
95+ ]);
96+ }
97+ }
98+ }
99+ }
70100
71- $ role = Role::create (['name ' => 'Employee ' , 'crm_role ' => 1 ])
72- ->givePermissionTo ([
73- 'create crm leads ' ,
74- 'view crm leads ' ,
75- 'edit crm leads ' ,
76- 'delete crm leads ' ,
77- 'create crm deals ' ,
78- 'view crm deals ' ,
79- 'edit crm deals ' ,
80- 'delete crm deals ' ,
81- 'create crm people ' ,
82- 'view crm people ' ,
83- 'edit crm people ' ,
84- 'delete crm people ' ,
85- 'create crm organisations ' ,
86- 'view crm organisations ' ,
87- 'edit crm organisations ' ,
88- 'delete crm organisations ' ,
89- ]);
101+ auth ()->user ()->assignRole (['Owner ' ]);
90102 }
91103
92104 /**
0 commit comments