diff --git a/app/Policies/UserPolicy.php b/app/Policies/UserPolicy.php index 624742c..5fb41b4 100644 --- a/app/Policies/UserPolicy.php +++ b/app/Policies/UserPolicy.php @@ -64,6 +64,6 @@ class UserPolicy */ public function delete(User $user, Worker $worker) { - return $this->update($user, $worker); + return $user->hasRole('admin') && $worker->jobs->isEmpty(); } } diff --git a/resources/views/layouts/user.blade.php b/resources/views/layouts/user.blade.php index 91d5db1..c874da3 100755 --- a/resources/views/layouts/user.blade.php +++ b/resources/views/layouts/user.blade.php @@ -7,8 +7,7 @@ @section('content') @include('users.partials.breadcrumb')
- {!! link_to_route('users.edit', trans('user.edit'), [$user], ['id' => 'edit-user-' . $user->id, 'class' => 'btn btn-warning']) !!} - {!! link_to_route('users.index', trans('user.back_to_index'), [], ['class' => 'btn btn-default']) !!} + @yield('action-buttons')
@include('users.partials.nav-tabs') @yield('content-user') diff --git a/resources/views/users/delete.blade.php b/resources/views/users/delete.blade.php index 9723ff9..b3ab64b 100755 --- a/resources/views/users/delete.blade.php +++ b/resources/views/users/delete.blade.php @@ -1,8 +1,8 @@ -@extends('layouts.dashboard') +@extends('layouts.user') @section('title', trans('user.delete')) -@section('content-dashboard') +@section('content-user')
diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php index cadbf05..5c99452 100755 --- a/resources/views/users/edit.blade.php +++ b/resources/views/users/edit.blade.php @@ -3,11 +3,16 @@ @section('subtitle', trans('user.edit')) +@section('action-buttons') +{!! link_to_route('users.show', trans('user.back_to_show'), [$user->id], ['class' => 'btn btn-default']) !!} +@endsection + @section('content-user') {!! Form::model($user, ['route'=>['users.update', $user->id], 'method' => 'patch', 'autocomplete' => 'off']) !!}
-
+
+

@yield('subtitle')

{!! FormField::text('name', ['label' => trans('app.name')]) !!} {!! FormField::email('email', ['label' => trans('user.email')]) !!} @@ -26,10 +31,11 @@ {!! FormField::radios('lang', $langList, ['label' => trans('lang.lang')]) !!}
diff --git a/resources/views/users/show.blade.php b/resources/views/users/show.blade.php index ef605f5..e80a33c 100755 --- a/resources/views/users/show.blade.php +++ b/resources/views/users/show.blade.php @@ -1,5 +1,10 @@ @extends('layouts.user') +@section('action-buttons') +{!! link_to_route('users.edit', trans('user.edit'), [$user], ['id' => 'edit-user-' . $user->id, 'class' => 'btn btn-warning']) !!} +{!! link_to_route('users.index', trans('user.back_to_index'), [], ['class' => 'btn btn-default']) !!} +@endsection + @section('content-user')
diff --git a/tests/Unit/Policies/UserPolicyTest.php b/tests/Unit/Policies/UserPolicyTest.php index 430a987..ad44968 100644 --- a/tests/Unit/Policies/UserPolicyTest.php +++ b/tests/Unit/Policies/UserPolicyTest.php @@ -2,6 +2,7 @@ namespace Tests\Unit\Policies; +use App\Entities\Projects\Job; use App\Entities\Users\User; use Illuminate\Foundation\Testing\DatabaseMigrations; use Tests\TestCase as TestCase; @@ -44,4 +45,14 @@ class UserPolicyTest extends TestCase $this->assertTrue($admin->can('delete', $user)); } + + /** @test */ + public function admin_cannot_delete_a_user_if_user_has_been_involved_on_any_project() + { + $admin = $this->adminUserSigningIn(); + $user = factory(User::class)->create(); + $job = factory(Job::class)->create(['worker_id' => $user->id]); + + $this->assertFalse($admin->can('delete', $user)); + } }