ldc-portsalaries/app/Policies/AppPolicies.php
Jérémy Munsch ed81e31e09 - Fix sites select on users
- add users policy
- correct readonly handle on crud
- crud readonly callback support
- crud readonly for belongsTo and belongsToMany
2021-06-07 18:29:02 +02:00

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')
],
];
}
}