5 changed files with 131 additions and 1 deletions
-
4app/Entities/Users/UsersRepository.php
-
60app/Policies/UserPolicy.php
-
1app/Providers/AuthServiceProvider.php
-
17tests/Feature/Users/ManageUsersTest.php
-
50tests/Unit/Policies/UserPolicyTest.php
@ -0,0 +1,60 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace App\Policies; |
||||
|
|
||||
|
use App\Entities\Users\User; |
||||
|
use App\Entities\Users\User as Worker; |
||||
|
use Illuminate\Auth\Access\HandlesAuthorization; |
||||
|
|
||||
|
class UserPolicy |
||||
|
{ |
||||
|
use HandlesAuthorization; |
||||
|
|
||||
|
/** |
||||
|
* Determine whether the user can view the user. |
||||
|
* |
||||
|
* @param \App\Entities\Users\User $user |
||||
|
* @param \App\Entities\Users\User $user |
||||
|
* @return mixed |
||||
|
*/ |
||||
|
public function view(User $user, Worker $worker) |
||||
|
{ |
||||
|
return $user->id == $user->id; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Determine whether the user can create users. |
||||
|
* |
||||
|
* @param \App\Entities\Users\User $user |
||||
|
* @param \App\Entities\Users\User $user |
||||
|
* @return mixed |
||||
|
*/ |
||||
|
public function create(User $user, Worker $worker) |
||||
|
{ |
||||
|
return ! ! $user->agency; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Determine whether the user can update the user. |
||||
|
* |
||||
|
* @param \App\Entities\Users\User $user |
||||
|
* @param \App\Entities\Users\User $user |
||||
|
* @return mixed |
||||
|
*/ |
||||
|
public function update(User $user, Worker $worker) |
||||
|
{ |
||||
|
return $user->agency->workers->contains($worker); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Determine whether the user can delete the user. |
||||
|
* |
||||
|
* @param \App\Entities\Users\User $user |
||||
|
* @param \App\Entities\Users\User $user |
||||
|
* @return mixed |
||||
|
*/ |
||||
|
public function delete(User $user, Worker $worker) |
||||
|
{ |
||||
|
return $this->update($user, $worker); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,50 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace Tests\Unit\Policies; |
||||
|
|
||||
|
use App\Entities\Users\User; |
||||
|
use Illuminate\Foundation\Testing\DatabaseMigrations; |
||||
|
use Tests\TestCase as TestCase; |
||||
|
|
||||
|
class UserPolicyTest extends TestCase |
||||
|
{ |
||||
|
use DatabaseMigrations; |
||||
|
|
||||
|
/** @test */ |
||||
|
public function admin_can_create_user() |
||||
|
{ |
||||
|
$admin = $this->adminUserSigningIn(); |
||||
|
|
||||
|
$this->assertTrue($admin->can('create', new User)); |
||||
|
} |
||||
|
|
||||
|
/** @test */ |
||||
|
public function admin_can_view_user() |
||||
|
{ |
||||
|
$admin = $this->adminUserSigningIn(); |
||||
|
$user = factory(User::class)->create(); |
||||
|
$admin->agency->addWorker($user); |
||||
|
|
||||
|
$this->assertTrue($admin->can('view', $user)); |
||||
|
} |
||||
|
|
||||
|
/** @test */ |
||||
|
public function admin_can_update_user() |
||||
|
{ |
||||
|
$admin = $this->adminUserSigningIn(); |
||||
|
$user = factory(User::class)->create(); |
||||
|
$admin->agency->addWorker($user); |
||||
|
|
||||
|
$this->assertTrue($admin->can('update', $user)); |
||||
|
} |
||||
|
|
||||
|
/** @test */ |
||||
|
public function admin_can_delete_user() |
||||
|
{ |
||||
|
$admin = $this->adminUserSigningIn(); |
||||
|
$user = factory(User::class)->create(); |
||||
|
$admin->agency->addWorker($user); |
||||
|
|
||||
|
$this->assertTrue($admin->can('delete', $user)); |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue