Skip to content

Commit 2b91e2d

Browse files
committed
new release with permissions
1 parent 768db6b commit 2b91e2d

15 files changed

+196
-101
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ composer.lock
44
.DS_Store
55
.idea
66
.php_cs.cache
7-
.phpunit.result.cache
7+
.phpunit.result.cache
8+
/node_modules

.phpunit.result.cache

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

src/Console/Commands/Install.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,12 @@ public function handle()
4747

4848
protected function publishAssets()
4949
{
50-
$this->warn('1. Publishing Migrations');
51-
Artisan::call('vendor:publish --tag=multiauth:migrations');
50+
$this->warn('1. Publishing Configurations');
51+
Artisan::call('vendor:publish --tag=multiauth:config');
5252
$this->info(Artisan::output());
53-
$this->warn('2. Publishing Factories');
54-
Artisan::call('vendor:publish --tag=multiauth:factories');
53+
54+
$this->warn('2. Publishing Migrations');
55+
Artisan::call('vendor:publish --tag=multiauth:migrations');
5556
$this->info(Artisan::output());
5657
}
5758

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<?php
2+
3+
namespace Bitfumes\Multiauth\Console\Commands;
4+
5+
use Illuminate\Console\Command;
6+
7+
class PermissionCommand extends Command
8+
{
9+
/**
10+
* The name and signature of the console command.
11+
*
12+
* @var string
13+
*/
14+
protected $signature = 'multiauth:permissions {model} {--name=}';
15+
/**
16+
* The console command description.
17+
*
18+
* @var string
19+
*/
20+
protected $description = 'Create permission CRUD part for given model';
21+
22+
/**
23+
* Create a new command instance.
24+
*
25+
* @return void
26+
*/
27+
public function __construct()
28+
{
29+
parent::__construct();
30+
}
31+
32+
/**
33+
* Execute the console command.
34+
*
35+
* @return mixed
36+
*/
37+
public function handle()
38+
{
39+
$model = $this->argument('model');
40+
$permissionModel = config('multiauth.models.permission');
41+
if ($name = $this->option('name')) {
42+
$tasks = [$name];
43+
} else {
44+
$tasks = ['Create', 'Read', 'Update', 'Delete'];
45+
}
46+
47+
foreach ($tasks as $task) {
48+
$name = "{$task}{$model}";
49+
$permission = $permissionModel::create(['name' => $name, 'parent'=>$model]);
50+
$this->info("created $name permission,");
51+
}
52+
53+
$this->info('Done.');
54+
}
55+
}

src/Console/Commands/PermissionSeed.php

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

src/Console/Commands/SeedCmd.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,14 @@ public function handle()
6262
protected function createSuperAdmin($role, $rolename)
6363
{
6464
$prefix = config('multiauth.prefix');
65-
$admin = factory($this->adminModel)
66-
->create(['email' => "super@{$prefix}.com", 'name' => 'Super ' . ucfirst($prefix)]);
65+
$admin = $this->adminModel::create([
66+
'email' => "super@{$prefix}.com",
67+
'name' => 'Super ' . ucfirst($prefix),
68+
'password' => bcrypt('secret123'),
69+
'active' => true,
70+
]);
6771
if (!$role) {
68-
$role = factory($this->roleModel)->create(['name' => $rolename]);
72+
$role = $this->roleModel::create(['name' => $rolename]);
6973
$this->createAndLinkPermissionsTo($role);
7074
}
7175
$admin->roles()->attach($role);
@@ -80,7 +84,7 @@ protected function createAndLinkPermissionsTo($role)
8084
foreach ($tasks as $task) {
8185
foreach ($models as $model) {
8286
$name = "{$task}{$model}";
83-
$permission = factory($this->permissionModel)->create(['name' => $name, 'parent'=>$model]);
87+
$permission = $this->permissionModel::create(['name' => $name, 'parent'=>$model]);
8488
$role->addPermission([$permission->id]);
8589
}
8690
}

src/Events/NotifyAdmin.php

Lines changed: 0 additions & 36 deletions
This file was deleted.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
namespace Bitfumes\Multiauth\Http\Middleware;
4+
5+
use Closure;
6+
7+
class AdminPermitTo
8+
{
9+
/**
10+
* Handle an incoming request.
11+
*
12+
* @param \Illuminate\Http\Request $request
13+
* @param \Closure $next
14+
* @return mixed
15+
*/
16+
public function handle($request, Closure $next, $permission)
17+
{
18+
$permissions = auth('admin')->user()->allPermissions();
19+
20+
$permissions = array_map(function ($permission) {
21+
return $permission['name'];
22+
}, $permissions);
23+
24+
$given_permissions = explode(';', $permission);
25+
26+
$match = count(array_intersect($given_permissions, $permissions));
27+
28+
if (!$match) {
29+
return redirect(route('admin.login'));
30+
}
31+
32+
return $next($request);
33+
}
34+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
namespace Bitfumes\Multiauth\Http\Middleware;
4+
5+
use Closure;
6+
7+
class AdminPermitToParent
8+
{
9+
/**
10+
* Handle an incoming request.
11+
*
12+
* @param \Illuminate\Http\Request $request
13+
* @param \Closure $next
14+
* @return mixed
15+
*/
16+
public function handle($request, Closure $next, $permission)
17+
{
18+
$permissions = auth('admin')->user()->allPermissions();
19+
20+
$permissions = array_map(function ($permission) {
21+
return $permission['parent'];
22+
}, $permissions);
23+
24+
$given_permissions = explode(';', $permission);
25+
26+
$match = count(array_intersect($given_permissions, $permissions));
27+
28+
if (!$match) {
29+
return redirect(route('admin.login'));
30+
}
31+
32+
return $next($request);
33+
}
34+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
namespace Bitfumes\Multiauth\Http\Middleware;
4+
5+
use Auth;
6+
use Closure;
7+
8+
class redirectIfNotWithRoleOfAdmin
9+
{
10+
/**
11+
* Handle an incoming request.
12+
*
13+
* @param \Illuminate\Http\Request $request
14+
* @param \Closure $next
15+
* @param string $role
16+
*
17+
* @return mixed
18+
*/
19+
public function handle($request, Closure $next, $role = 'super')
20+
{
21+
// If not logged in, redirect to the login page.
22+
if (!auth('admin')->user()) {
23+
return redirect(route('admin.login'));
24+
}
25+
26+
$roles = auth('admin')->user()->roles()->pluck('name');
27+
if (in_array('super', $roles->toArray())) {
28+
return $next($request);
29+
}
30+
31+
$given_role = explode(';', $role);
32+
33+
$match = count(array_intersect($given_role, $roles->toArray()));
34+
35+
if (!$match) {
36+
return redirect(route('admin.home'));
37+
}
38+
39+
return $next($request);
40+
}
41+
}

0 commit comments

Comments
 (0)