From 22b63a6e8f0d0c96c0e9f4e1b216b90d99ecf4cf Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Fri, 23 Feb 2018 08:19:28 +0800 Subject: [PATCH] Update job policy for see job pricings --- app/Policies/Projects/JobPolicy.php | 13 +++++++++++++ resources/views/jobs/partials/job-show.blade.php | 2 +- resources/views/jobs/unfinished.blade.php | 12 +++++++----- tests/Unit/Policies/JobPolicyTest.php | 11 +++++++++++ 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/app/Policies/Projects/JobPolicy.php b/app/Policies/Projects/JobPolicy.php index 08a0e51..b5262d9 100644 --- a/app/Policies/Projects/JobPolicy.php +++ b/app/Policies/Projects/JobPolicy.php @@ -67,4 +67,17 @@ class JobPolicy { return $user->hasRole('admin'); } + + /** + * Determine whether the user can see job pricings. + * + * @param \App\Entities\Users\User $user + * @param \App\Entities\Projects\Job $job + * + * @return mixed + */ + public function seePricings(User $user, Job $job) + { + return $user->hasRole('admin'); + } } diff --git a/resources/views/jobs/partials/job-show.blade.php b/resources/views/jobs/partials/job-show.blade.php index 811b548..aceee15 100644 --- a/resources/views/jobs/partials/job-show.blade.php +++ b/resources/views/jobs/partials/job-show.blade.php @@ -4,7 +4,7 @@ {{ trans('job.name') }}{{ $job->name }} {{ trans('job.type') }}{{ $job->type() }} - @can('see-pricings', $job->project) + @can('see-pricings', $job) {{ trans('job.price') }}{{ formatRp($job->price) }} @endcan {{ trans('job.progress') }}{{ formatDecimal($job->tasks->avg('progress')) }}% diff --git a/resources/views/jobs/unfinished.blade.php b/resources/views/jobs/unfinished.blade.php index df5c0d0..10962ce 100755 --- a/resources/views/jobs/unfinished.blade.php +++ b/resources/views/jobs/unfinished.blade.php @@ -13,9 +13,9 @@ {{ trans('job.name') }} {{ trans('job.tasks_count') }} {{ trans('job.progress') }} - @if(auth()->user()->hasRole('admin')) + @can('see-pricings', new App\Entities\Projects\Job) {{ trans('job.price') }} - @endauth + @endcan {{ trans('job.worker') }} {{ trans('app.action') }} @@ -39,16 +39,16 @@ {{ $job->tasks_count = $job->tasks->count() }} {{ formatDecimal($job->progress) }} % - @if(auth()->user()->hasRole('admin')) + @can('see-pricings', $job) {{ formatRp($job->price) }} - @endif + @endcan {{ $job->worker->name }} {!! link_to_route('jobs.show', trans('app.show'),[$job->id],['class' => 'btn btn-info btn-xs']) !!} @empty - {{ trans('job.empty') }} + {{ trans('job.empty') }} @endforelse @@ -56,7 +56,9 @@ Total {{ $jobs->sum('tasks_count') }} {{ formatDecimal($jobs->avg('progress')) }} % + @can('see-pricings', new App\Entities\Projects\Job) {{ formatRp($jobs->sum('price')) }} + @endcan diff --git a/tests/Unit/Policies/JobPolicyTest.php b/tests/Unit/Policies/JobPolicyTest.php index 3650d95..6b985a1 100644 --- a/tests/Unit/Policies/JobPolicyTest.php +++ b/tests/Unit/Policies/JobPolicyTest.php @@ -70,4 +70,15 @@ class JobPolicyTest extends TestCase $this->assertTrue($admin->can('update', $job)); $this->assertFalse($worker->can('update', $job)); } + + /** @test */ + public function only_admin_can_see_job_pricings() + { + $admin = $this->createUser('admin'); + $worker = $this->createUser('worker'); + $job = factory(Job::class)->create(['worker_id' => $worker->id]); + + $this->assertTrue($admin->can('see-pricings', $job)); + $this->assertFalse($worker->can('see-pricings', $job)); + } }