policies = [ 'ticket' => [ 'viewAny' => URR::make('allowEveryOne'), 'view' => URR::make('allowEveryOne'), 'create' => URR::make('allowEveryOne'), 'update' => StaticRules::or([ URR::make('userIsAdmin', $user), SSR::make('userSitesHasTicket', $user, $model) ]), 'changeStatus' => URR::make('userIsAdmin', $user), 'changeInternalStatus' => URR::make('userIsAdmin', $user), 'delete' => URR::make('denyEveryOne'), 'forceDelete' => URR::make('denyEveryOne'), 'restore' => StaticRules::or([ URR::make('userIsAdmin', $user), SSR::make('userSitesHasTicket', $user, $model) ]), 'suscribeToTicket' => TicketStaticRules::make('ticketIsNotArchived', $model), 'createMessage' => TicketStaticRules::make('ticketIsNotArchived', $model), 'updateMessage' => StaticRules::or([ URR::make('userIsAdmin', $user), TicketStaticRules::make('ticketIsNotArchived', $model), ]), 'reopen' => URR::make('userIsClient', $user), 'assignTo' => StaticRules::and([ URR::make('userIsAdmin', $user), TicketStaticRules::make('ticketIsNotInProduction', $model), TicketStaticRules::make('ticketIsNotArchived', $model) ]), 'assignTickets' => URR::make('userIsAdmin', $user), 'assignLabels' => URR::make('userIsAdmin', $user), 'estimate' => StaticRules::and([ URR::make('userIsAdmin', $user), TicketStaticRules::make('ticketsBrandHasAnAccount', $model), TicketStaticRules::make('ticketDoesntHaveEstimation', $model), TicketStaticRules::make('ticketIsNotInternal', $model), TicketStaticRules::make('ticketIsNotArchived', $model) ]), 'validateEstimate' => StaticRules::and([ URR::make('userIsClient', $user), TicketStaticRules::make('ticketsBrandHasAnAccount', $model), TicketStaticRules::make('ticketDoesHaveEstimation', $model), TicketStaticRules::make('ticketIsNotInternal', $model), TicketStaticRules::make('ticketIsNotArchived', $model) ]) ] ]; } }