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