*/ class ProjectPolicy { use HandlesAuthorization; /** * Determine whether the user can view the project. * * @param \App\Entities\Users\User $user * @param \App\Entities\Projects\Project $project * * @return mixed */ public function view(User $user, Project $project) { return $user->hasRole('admin') || ($user->hasRole('worker') && $user->projects->contains($project->id)); } /** * Determine whether the user can create projects. * * @param \App\Entities\Users\User $user * @param \App\Entities\Projects\Project $project * * @return mixed */ public function create(User $user, Project $project) { return $user->hasRole('admin'); } /** * Determine whether the user can update the project. * * @param \App\Entities\Users\User $user * @param \App\Entities\Projects\Project $project * * @return mixed */ public function update(User $user, Project $project) { return $user->hasRole('admin'); } /** * Determine whether the user can delete the project. * * @param \App\Entities\Users\User $user * @param \App\Entities\Projects\Project $project * * @return mixed */ public function delete(User $user, Project $project) { return $user->hasRole('admin'); } /** * Determine whether the user can view project jobs. * * @param \App\Entities\Users\User $user * @param \App\Entities\Projects\Project $project * * @return mixed */ public function viewJobs(User $user, Project $project) { return $user->hasRole('admin') || ($user->hasRole('worker') && $user->projects->contains($project->id)); } /** * Determine whether the user can view project payments. * * @param \App\Entities\Users\User $user * @param \App\Entities\Projects\Project $project * * @return mixed */ public function viewPayments(User $user, Project $project) { return $user->hasRole('admin'); } /** * Determine whether the user can view project subscriptions. * * @param \App\Entities\Users\User $user * @param \App\Entities\Projects\Project $project * * @return mixed */ public function viewSubscriptions(User $user, Project $project) { return $user->hasRole('admin'); } /** * Determine whether the user can view project invoices. * * @param \App\Entities\Users\User $user * @param \App\Entities\Projects\Project $project * * @return mixed */ public function viewInvoices(User $user, Project $project) { return $user->hasRole('admin'); } /** * Determine whether the user can view project files. * * @param \App\Entities\Users\User $user * @param \App\Entities\Projects\Project $project * * @return mixed */ public function viewFiles(User $user, Project $project) { return $user->hasRole('admin') || ($user->hasRole('worker') && $user->projects->contains($project->id)); } /** * Determine whether the user can see project pricings. * * @param \App\Entities\Users\User $user * @param \App\Entities\Projects\Project $project * * @return mixed */ public function seePricings(User $user, Project $project) { return $user->hasRole('admin'); } }