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));
+ }
}