- add users policy - correct readonly handle on crud - crud readonly callback support - crud readonly for belongsTo and belongsToMany
138 lines
5.2 KiB
PHP
138 lines
5.2 KiB
PHP
<?php
|
|
|
|
namespace App\Policies;
|
|
|
|
use App\Models\User;
|
|
use App\Lib\PolicySystem\RootPolicy;
|
|
use App\Lib\PolicySystem\StaticRules as Sr;
|
|
use App\Policies\Rules\FlashStaticRules as FSR;
|
|
use App\Policies\Rules\UserStaticRules as USR;
|
|
use App\Policies\Rules\UserRoleRules as URR;
|
|
use App\Policies\Rules\SiteStaticRules as SSR;
|
|
use App\Policies\Rules\SondageStaticRules as SoSR;
|
|
use App\Policies\Rules\EmployeeStaticRules as SaSR;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
class AppPolicies extends RootPolicy
|
|
{
|
|
/**
|
|
* Init policies on call
|
|
*
|
|
* @param User $user
|
|
* @param Model $model
|
|
* @return void
|
|
*/
|
|
public function setPolicies(User $user, Model $model = null)
|
|
{
|
|
/**
|
|
* This first rule to return true in a policy action authorises the action
|
|
*/
|
|
$this->policies = [
|
|
// Admin only
|
|
'pole' => [
|
|
'viewAny' => URR::make('userIsAdmin', $user),
|
|
'view' => URR::make('userIsAdmin', $user),
|
|
'update' => [URR::make('userIsAdmin', $user)],
|
|
'create' => [URR::make('userIsAdmin', $user)],
|
|
'delete' => [URR::make('userIsAdmin', $user)]
|
|
],
|
|
// Admin only
|
|
'societe' => [
|
|
'viewAny' => URR::make('userIsAdmin', $user),
|
|
'view' => URR::make('userIsAdmin', $user),
|
|
'update' => [URR::make('userIsAdmin', $user)],
|
|
'create' => [URR::make('userIsAdmin', $user)],
|
|
'delete' => [URR::make('userIsAdmin', $user)]
|
|
],
|
|
'site' => [
|
|
'viewAny' => USR::make('everyOne'),
|
|
'view' => Sr::or([
|
|
URR::make('userIsAdmin', $user),
|
|
SSR::make('siteIsOwnedByUser', $user, $model)
|
|
]),
|
|
'update' => Sr::or([
|
|
URR::make('userIsAdmin', $user),
|
|
SSR::make('siteIsOwnedByUser', $user, $model)
|
|
]),
|
|
'create' => URR::make('userIsAdmin', $user),
|
|
'delete' => URR::make('userIsAdmin', $user)
|
|
],
|
|
'flash' => [
|
|
'viewAny' => USR::make('everyOne'),
|
|
'view' => Sr::or([
|
|
URR::make('userIsAdmin', $user),
|
|
FSR::make('flashIsOwnedByUser', $user, $model)
|
|
]),
|
|
'update' => Sr::or([
|
|
URR::make('userIsAdmin', $user),
|
|
FSR::make('flashIsOwnedByUser', $user, $model)
|
|
]),
|
|
'create' => USR::make('everyOne'),
|
|
'delete' => Sr::or([
|
|
URR::make('userIsAdmin', $user),
|
|
FSR::make('flashIsOwnedByUser', $user, $model)
|
|
])
|
|
],
|
|
'employee' => [
|
|
'viewAny' => USR::make('everyOne'),
|
|
'view' => Sr::or([
|
|
URR::make('userIsAdmin', $user),
|
|
SaSR::make('employeeIsOwnedByUser', $user, $model)
|
|
]),
|
|
'update' => Sr::or([
|
|
URR::make('userIsAdmin', $user),
|
|
SaSR::make('employeeIsOwnedByUser', $user, $model)
|
|
]),
|
|
'create' => USR::make('everyOne'),
|
|
'delete' => Sr::or([
|
|
URR::make('userIsAdmin', $user),
|
|
SaSR::make('employeeIsOwnedByUser', $user, $model)
|
|
]),
|
|
'import' => USR::make('everyOne'),
|
|
'importExit' => USR::make('everyOne')
|
|
],
|
|
'sondage' => [
|
|
'viewAny' => USR::make('everyOne'),
|
|
'view' => Sr::or([
|
|
URR::make('userIsAdmin', $user),
|
|
SoSR::make('sondageIsOwnedByUser', $user, $model)
|
|
]),
|
|
// edit
|
|
'update' => Sr::or([
|
|
URR::make('userIsAdmin', $user),
|
|
SoSR::make('sondageIsOwnedByUser', $user, $model)
|
|
]),
|
|
// update submit
|
|
'updateSondage' => Sr::or([
|
|
URR::make('userIsAdmin', $user),
|
|
SoSR::make('sondageIsOwnedByUser', $user, $model)
|
|
]),
|
|
'create' => USR::make('everyOne'),
|
|
'delete' => Sr::or([
|
|
URR::make('userIsAdmin', $user),
|
|
SoSR::make('sondageIsOwnedByUser', $user, $model)
|
|
]),
|
|
'export' => Sr::or([
|
|
URR::make('userIsAdmin', $user),
|
|
SoSR::make('sondageIsOwnedByUser', $user, $model)
|
|
]),
|
|
],
|
|
'planning' => [
|
|
'import' => USR::make('everyOne'),
|
|
],
|
|
'user' => [
|
|
'viewAny' => USR::make('everyOne'),
|
|
'view' => Sr::or([
|
|
URR::make('userIsAdmin', $user),
|
|
USR::make('usersAreTheSame', $user, $model)
|
|
]),
|
|
'update' => Sr::or([
|
|
URR::make('userIsAdmin', $user),
|
|
USR::make('usersAreTheSame', $user, $model)
|
|
]),
|
|
'create' => URR::make('userIsAdmin', $user),
|
|
'delete' => USR::make('noOne')
|
|
],
|
|
];
|
|
}
|
|
}
|