FEATURE: add another permissions
This commit is contained in:
@@ -131,8 +131,8 @@ abstract class BaseHandler implements BaseModuleHandler
|
||||
});
|
||||
|
||||
// create menu with user profile
|
||||
\Menu::create('profileMenu', function ($menu) {
|
||||
$menu->route('users.detail', trans('admin/userManagement.profile'), [], 10, ['icon' => 'fa fa-fw fa-user icon']);
|
||||
\Menu::create('profileMenu', function ($menu) use ($user) {
|
||||
$menu->route('users.detail', trans('admin/userManagement.profile'), ['user' => $user], 10, ['icon' => 'fa fa-fw fa-user icon']);
|
||||
$menu->addDivider(999);
|
||||
$menu->route('logout', trans('admin/common.logout'), [], 1000, ['icon' => 'fa fa-fw fa-power-off icon']);
|
||||
});
|
||||
|
||||
@@ -16,7 +16,6 @@ class ModuleManager extends ServiceProvider
|
||||
// this service provider needs published config - config is merged right after this service provider
|
||||
$modules = app(ModuleRepository::class)->getOnlyModules();
|
||||
|
||||
// dd($modules);
|
||||
|
||||
// iterate over all modules and enable or disable them
|
||||
foreach ($modules as $module) {
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Listeners;
|
||||
|
||||
use App\Events\CreateNewUser;
|
||||
use App\Models\Permissions\Permission;
|
||||
|
||||
class SetDefaultPermissions
|
||||
{
|
||||
/**
|
||||
* Handle the event.
|
||||
*
|
||||
* @param CreateNewUser $event
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle(CreateNewUser $event)
|
||||
{
|
||||
$permissions = Permission::where('default', true)
|
||||
->get();
|
||||
|
||||
foreach ($permissions as $permission) {
|
||||
$event->user->permissions()
|
||||
->attach($permission);
|
||||
}
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -77,10 +77,10 @@ class User extends Model implements AuthenticableInterface, CanResetPassword
|
||||
*/
|
||||
public function hasAbility($ability)
|
||||
{
|
||||
if (empty(self::$abilities)) {
|
||||
self::$abilities = $this->permissions->pluck('string_id')->toArray();
|
||||
if (!isset(self::$abilities[$this->id])) {
|
||||
self::$abilities[$this->id] = $this->permissions->pluck('string_id')->toArray();
|
||||
}
|
||||
|
||||
return in_array($ability, self::$abilities);
|
||||
return in_array($ability, self::$abilities[$this->id]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,13 @@ abstract class BasicPolicy
|
||||
* @return bool
|
||||
*/
|
||||
public function manage(User $user) {
|
||||
if (!$user->hasAbility($this->entity.'-management')) {
|
||||
// echo "<pre>";
|
||||
// debug_print_backtrace();
|
||||
// echo "</pre>";
|
||||
// die();
|
||||
}
|
||||
|
||||
return $user->hasAbility($this->entity.'-management');
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,30 @@ class UserPolicy extends BasicPolicy
|
||||
use HandlesAuthorization;
|
||||
protected $entity = 'users';
|
||||
|
||||
public function before(User $user, $ability)
|
||||
{
|
||||
if ($ability === 'view')
|
||||
return null;
|
||||
|
||||
return parent::before($user, $ability);
|
||||
}
|
||||
|
||||
/**
|
||||
* Can user see other users?
|
||||
*
|
||||
* @param User $currentUser
|
||||
* @param User $user
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function view(User $currentUser, User $user) {
|
||||
// user can se himself
|
||||
if ($currentUser->id == $user->id)
|
||||
return true;
|
||||
|
||||
return $this->manage($currentUser);
|
||||
}
|
||||
|
||||
/**
|
||||
* Can current user updates other users (or himself?)
|
||||
*
|
||||
|
||||
@@ -43,21 +43,21 @@ use App\Listeners\Loggers\LogPublishContent;
|
||||
use App\Listeners\Loggers\LogRemoveWidgetFromArea;
|
||||
use App\Listeners\Loggers\LogSetHomepage;
|
||||
use App\Listeners\Loggers\LogUploadFile;
|
||||
use App\Listeners\SetDefaultPermissions;
|
||||
use Illuminate\Auth\Events\Login;
|
||||
use Illuminate\Auth\Events\Logout;
|
||||
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
|
||||
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
|
||||
|
||||
class EventServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* The event listener mappings for the application.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $listen = [
|
||||
CreateNewUser::class => [
|
||||
LogCreatedUser::class,
|
||||
SetDefaultPermissions::class,
|
||||
],
|
||||
EditUser::class => [
|
||||
LogEditUser::class,
|
||||
|
||||
Reference in New Issue
Block a user