Browse Source

System admin can edit any couple data

pull/50/head
Nafies Luthfi 6 years ago
parent
commit
0b4acf04f1
  1. 2
      app/Policies/CouplePolicy.php
  2. 30
      tests/Unit/Policies/CouplePolicyTest.php

2
app/Policies/CouplePolicy.php

@ -19,6 +19,6 @@ class CouplePolicy
*/ */
public function edit(User $user, Couple $couple) public function edit(User $user, Couple $couple)
{ {
return $couple->manager_id == $user->id;
return $couple->manager_id == $user->id || is_system_admin($user);
} }
} }

30
tests/Unit/Policies/CouplePolicyTest.php

@ -3,7 +3,9 @@
namespace Tests\Unit\Policies; namespace Tests\Unit\Policies;
use App\Couple; use App\Couple;
use App\User;
use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Str;
use Tests\TestCase; use Tests\TestCase;
class CouplePolicyTest extends TestCase class CouplePolicyTest extends TestCase
@ -11,11 +13,33 @@ class CouplePolicyTest extends TestCase
use RefreshDatabase; use RefreshDatabase;
/** @test */ /** @test */
public function admin_can_edit_couple_data()
public function manager_can_edit_couples()
{ {
$couple = factory(Couple::class)->create();
$manager = $couple->manager;
$otherCoupleManagerId = Str::random();
$manager = factory(User::class)->create();
$couple = factory(Couple::class)->create(['manager_id' => $manager->id]);
$otherCouple = factory(Couple::class)->create(['manager_id' => $otherCoupleManagerId]);
$this->assertTrue($manager->can('edit', $couple)); $this->assertTrue($manager->can('edit', $couple));
$this->assertFalse($manager->can('edit', $otherCouple));
}
/** @test */
public function admins_can_edit_any_couple_data()
{
$adminEmail = 'admin@example.net';
$otherCoupleManagerId = Str::random();
config(['app.system_admin_emails' => $adminEmail]);
$manager = factory(User::class)->create();
$admin = factory(User::class)->create(['email' => $adminEmail]);
$couple = factory(Couple::class)->create(['manager_id' => $manager->id]);
$otherCouple = factory(Couple::class)->create(['manager_id' => $otherCoupleManagerId]);
$this->assertTrue($admin->can('edit', $couple));
$this->assertTrue($admin->can('edit', $otherCouple));
$this->assertTrue($manager->can('edit', $couple));
$this->assertFalse($manager->can('edit', $otherCouple));
} }
} }
Loading…
Cancel
Save