diff --git a/app/Http/Controllers/Projects/FeesController.php b/app/Http/Controllers/Projects/FeesController.php index 2f26ca4..e4eab9c 100644 --- a/app/Http/Controllers/Projects/FeesController.php +++ b/app/Http/Controllers/Projects/FeesController.php @@ -16,6 +16,8 @@ class FeesController extends Controller { public function create(Project $project) { + $this->authorize('create', new Payment); + $partners = User::pluck('name', 'id')->all(); return view('projects.fees.create', compact('project', 'partners')); @@ -23,6 +25,8 @@ class FeesController extends Controller public function store(Project $project) { + $this->authorize('create', new Payment); + $newPaymentData = request()->validate([ 'type_id' => 'required|numeric', 'date' => 'required|date', diff --git a/app/Http/Controllers/Projects/InvoicesController.php b/app/Http/Controllers/Projects/InvoicesController.php index 9887941..9fca613 100644 --- a/app/Http/Controllers/Projects/InvoicesController.php +++ b/app/Http/Controllers/Projects/InvoicesController.php @@ -14,6 +14,8 @@ class InvoicesController extends Controller { public function index(Project $project) { + $this->authorize('view-invoices', $project); + return view('projects.invoices', compact('project')); } } diff --git a/app/Http/Controllers/Projects/JobsController.php b/app/Http/Controllers/Projects/JobsController.php index f07f925..93d401f 100755 --- a/app/Http/Controllers/Projects/JobsController.php +++ b/app/Http/Controllers/Projects/JobsController.php @@ -29,23 +29,21 @@ class JobsController extends Controller return view('projects.jobs.index', compact('project', 'jobs')); } - public function create($projectId) + public function create(Project $project) { - $project = $this->repo->requireProjectById($projectId); $workers = $this->repo->getWorkersList(); return view('jobs.create', compact('project', 'workers')); } - public function addFromOtherProject(Request $req, $projectId) + public function addFromOtherProject(Request $request, Project $project) { $selectedProject = null; - $project = $this->repo->requireProjectById($projectId); $workers = $this->repo->getWorkersList(); $projects = $this->repo->getProjectsList(); - if ($req->has('project_id')) { - $selectedProject = $this->repo->requireProjectById($req->get('project_id')); + if ($request->has('project_id')) { + $selectedProject = $this->repo->requireProjectById($request->get('project_id')); } return view('jobs.add-from-other-project', compact('project', 'workers', 'projects', 'selectedProject')); diff --git a/app/Http/Controllers/Projects/ProjectsController.php b/app/Http/Controllers/Projects/ProjectsController.php index b592bca..4b606f5 100755 --- a/app/Http/Controllers/Projects/ProjectsController.php +++ b/app/Http/Controllers/Projects/ProjectsController.php @@ -104,11 +104,15 @@ class ProjectsController extends Controller public function subscriptions(Project $project) { + $this->authorize('view-subscriptions', $project); + return view('projects.subscriptions', compact('project')); } public function payments(Project $project) { + $this->authorize('view-payments', $project); + $project->load('payments.partner'); return view('projects.payments', compact('project')); diff --git a/app/Policies/PaymentPolicy.php b/app/Policies/PaymentPolicy.php new file mode 100644 index 0000000..d61368f --- /dev/null +++ b/app/Policies/PaymentPolicy.php @@ -0,0 +1,69 @@ + + */ +class PaymentPolicy +{ + use HandlesAuthorization; + + /** + * Determine whether the user can view the payment. + * + * @param \App\Entities\Users\User $user + * @param \App\Entities\Partners\Payment $payment + * + * @return mixed + */ + public function view(User $user, Payment $payment) + { + return $user->hasRole('admin'); + } + + /** + * Determine whether the user can create payments. + * + * @param \App\Entities\Users\User $user + * @param \App\Entities\Partners\Payment $payment + * + * @return mixed + */ + public function create(User $user, Payment $payment) + { + return $user->hasRole('admin'); + } + + /** + * Determine whether the user can update the payment. + * + * @param \App\Entities\Users\User $user + * @param \App\Entities\Partners\Payment $payment + * + * @return mixed + */ + public function update(User $user, Payment $payment) + { + return $this->view($user, $payment); + } + + /** + * Determine whether the user can delete the payment. + * + * @param \App\Entities\Users\User $user + * @param \App\Entities\Partners\Payment $payment + * + * @return mixed + */ + public function delete(User $user, Payment $payment) + { + return $this->view($user, $payment); + } +} diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index cf8e691..a51c464 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -18,6 +18,7 @@ class AuthServiceProvider extends ServiceProvider 'App\Entities\Projects\Project' => 'App\Policies\Projects\ProjectPolicy', 'App\Entities\Projects\Job' => 'App\Policies\Projects\JobPolicy', 'App\Entities\Projects\Task' => 'App\Policies\Projects\TaskPolicy', + 'App\Entities\Payments\Payment' => 'App\Policies\PaymentPolicy', 'App\Entities\Users\User' => 'App\Policies\UserPolicy', 'App\Entities\Users\Event' => 'App\Policies\EventPolicy', ]; diff --git a/resources/views/projects/partials/nav-tabs.blade.php b/resources/views/projects/partials/nav-tabs.blade.php index 830c59c..7a5a706 100644 --- a/resources/views/projects/partials/nav-tabs.blade.php +++ b/resources/views/projects/partials/nav-tabs.blade.php @@ -3,20 +3,30 @@