Skip to content

Commit ce6fe10

Browse files
committed
eod
1 parent 922c95a commit ce6fe10

File tree

4 files changed

+272
-0
lines changed

4 files changed

+272
-0
lines changed

database/migrations/add_team_id_to_roles_permissions_tables.php.stub

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ class AddTeamIdToRolesPermissionsTables extends Migration
1818
Schema::table('roles', function (Blueprint $table) {
1919
$table->unsignedBigInteger('team_id')->index()->nullable();
2020
$table->boolean('global')->default(false);
21+
$table->dropUnique(['name', 'guard_name']);
22+
$table->unique(['name', 'guard_name','team_id']);
2123
});
2224
}
2325

@@ -26,6 +28,8 @@ class AddTeamIdToRolesPermissionsTables extends Migration
2628
Schema::table('permissions', function (Blueprint $table) {
2729
$table->unsignedBigInteger('team_id')->index()->nullable();
2830
$table->boolean('global')->default(false);
31+
$table->dropUnique(['name', 'guard_name']);
32+
$table->unique(['name', 'guard_name','team_id']);
2933
});
3034
}
3135
}
@@ -39,10 +43,14 @@ class AddTeamIdToRolesPermissionsTables extends Migration
3943
{
4044
Schema::table('roles', function (Blueprint $table) {
4145
$table->dropColumn(['team_id','global']);
46+
$table->dropUnique(['name', 'guard_name', 'team_id']);
47+
$table->unique(['name', 'guard_name']);
4248
});
4349

4450
Schema::table('permissions', function (Blueprint $table) {
51+
$table->dropUnique(['name', 'guard_name', 'team_id']);
4552
$table->dropColumn(['team_id','global']);
53+
$table->unique(['name', 'guard_name']);
4654
});
4755
}
4856
}

src/LaravelCrmServiceProvider.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
use VentureDrake\LaravelCrm\Observers\PersonObserver;
2929
use VentureDrake\LaravelCrm\Observers\PhoneObserver;
3030
use VentureDrake\LaravelCrm\Observers\SettingObserver;
31+
use VentureDrake\LaravelCrm\Observers\TeamObserver;
32+
use VentureDrake\LaravelCrm\Observers\UserObserver;
3133

3234
class LaravelCrmServiceProvider extends ServiceProvider
3335
{
@@ -58,6 +60,7 @@ public function boot(Router $router, Filesystem $filesystem)
5860
{
5961
if ((app()->version() >= 8 && class_exists('App\Models\User')) || (class_exists('App\Models\User') && ! class_exists('App\User'))) {
6062
class_alias(config("auth.providers.users.model"), 'App\User');
63+
class_alias('App\Models\Team', 'App\Team');
6164
}
6265

6366
$this->registerPolicies();
@@ -87,6 +90,14 @@ class_alias(config("auth.providers.users.model"), 'App\User');
8790
Phone::observe(PhoneObserver::class);
8891
Email::observe(EmailObserver::class);
8992
Setting::observe(SettingObserver::class);
93+
94+
if ((app()->version() >= 8 && class_exists('App\Models\User')) || (class_exists('App\Models\User') && ! class_exists('App\User'))) {
95+
\App\Models\Team::observe(TeamObserver::class);
96+
\App\Models\User::observe(UserObserver::class);
97+
} else {
98+
\App\Team::observe(TeamObserver::class);
99+
\App\User::observe(UserObserver::class);
100+
}
90101

91102
// Paginate on Collection
92103
if (! Collection::hasMacro('paginate')) {

src/Observers/TeamObserver.php

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
<?php
2+
3+
namespace VentureDrake\LaravelCrm\Observers;
4+
5+
use App\Team;
6+
use DB;
7+
use Spatie\Permission\Models\Permission;
8+
use Spatie\Permission\Models\Role;
9+
10+
class TeamObserver
11+
{
12+
/**
13+
* Handle the team "creating" event.
14+
*
15+
* @param \App\Team $team
16+
* @return void
17+
*/
18+
public function creating(Team $team)
19+
{
20+
//
21+
}
22+
23+
/**
24+
* Handle the team "created" event.
25+
*
26+
* @param \App\Team $team
27+
* @return void
28+
*/
29+
public function created(Team $team)
30+
{
31+
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,
41+
'team_id' => $team->id,
42+
]);
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());
50+
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+
]);
70+
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+
]);
90+
}
91+
92+
/**
93+
* Handle the team "updating" event.
94+
*
95+
* @param \App\Team $team
96+
* @return void
97+
*/
98+
public function updating(Team $team)
99+
{
100+
//
101+
}
102+
103+
/**
104+
* Handle the team "updated" event.
105+
*
106+
* @param \App\Team $team
107+
* @return void
108+
*/
109+
public function updated(Team $team)
110+
{
111+
//
112+
}
113+
114+
/**
115+
* Handle the team "deleting" event.
116+
*
117+
* @param \App\Team $team
118+
* @return void
119+
*/
120+
public function deleting(Team $team)
121+
{
122+
//
123+
}
124+
125+
/**
126+
* Handle the team "deleted" event.
127+
*
128+
* @param \App\Team $team
129+
* @return void
130+
*/
131+
public function deleted(Team $team)
132+
{
133+
//
134+
}
135+
136+
/**
137+
* Handle the team "restored" event.
138+
*
139+
* @param \App\Team $team
140+
* @return void
141+
*/
142+
public function restored(Team $team)
143+
{
144+
//
145+
}
146+
147+
/**
148+
* Handle the team "force deleted" event.
149+
*
150+
* @param \App\Team $team
151+
* @return void
152+
*/
153+
public function forceDeleted(Team $team)
154+
{
155+
//
156+
}
157+
}

src/Observers/UserObserver.php

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
<?php
2+
3+
namespace VentureDrake\LaravelCrm\Observers;
4+
5+
use App\User;
6+
7+
class UserObserver
8+
{
9+
/**
10+
* Handle the user "creating" event.
11+
*
12+
* @param \App\User $user
13+
* @return void
14+
*/
15+
public function creating(User $user)
16+
{
17+
//
18+
}
19+
20+
/**
21+
* Handle the user "created" event.
22+
*
23+
* @param \App\User $user
24+
* @return void
25+
*/
26+
public function created(User $user)
27+
{
28+
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();
29+
}
30+
31+
/**
32+
* Handle the user "updating" event.
33+
*
34+
* @param \App\User $user
35+
* @return void
36+
*/
37+
public function updating(User $user)
38+
{
39+
//
40+
}
41+
42+
/**
43+
* Handle the user "updated" event.
44+
*
45+
* @param \App\User $user
46+
* @return void
47+
*/
48+
public function updated(User $user)
49+
{
50+
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();
51+
}
52+
53+
/**
54+
* Handle the user "deleting" event.
55+
*
56+
* @param \App\User $user
57+
* @return void
58+
*/
59+
public function deleting(User $user)
60+
{
61+
//
62+
}
63+
64+
/**
65+
* Handle the user "deleted" event.
66+
*
67+
* @param \App\User $user
68+
* @return void
69+
*/
70+
public function deleted(User $user)
71+
{
72+
//
73+
}
74+
75+
/**
76+
* Handle the user "restored" event.
77+
*
78+
* @param \App\User $user
79+
* @return void
80+
*/
81+
public function restored(User $user)
82+
{
83+
//
84+
}
85+
86+
/**
87+
* Handle the user "force deleted" event.
88+
*
89+
* @param \App\User $user
90+
* @return void
91+
*/
92+
public function forceDeleted(User $user)
93+
{
94+
//
95+
}
96+
}

0 commit comments

Comments
 (0)