Browse Source

Added manager_id attribute to User Model as user manager

Added UserPolicy Class with test
pull/3/head
Nafies Luthfi 9 years ago
parent
commit
31e5d56f4f
  1. 16
      app/Policies/UserPolicy.php
  2. 2
      app/Providers/AuthServiceProvider.php
  3. 5
      app/User.php
  4. 1
      database/factories/ModelFactory.php
  5. 1
      database/migrations/2014_10_12_000000_create_users_table.php
  6. 1
      routes/web.php
  7. 7
      tests/Feature/UsersProfileTest.php
  8. 21
      tests/Unit/Policies/UserPolicyTest.php

16
app/Policies/UserPolicy.php

@ -0,0 +1,16 @@
<?php
namespace App\Policies;
use App\User;
use Illuminate\Auth\Access\HandlesAuthorization;
class UserPolicy
{
use HandlesAuthorization;
public function edit(User $user, User $editableUser)
{
return $editableUser->manager_id == $user->id;
}
}

2
app/Providers/AuthServiceProvider.php

@ -13,7 +13,7 @@ class AuthServiceProvider extends ServiceProvider
* @var array
*/
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
'App\User' => 'App\Policies\UserPolicy',
];
/**

5
app/User.php

@ -155,4 +155,9 @@ class User extends Authenticatable
{
return $this->belongsTo(Couple::class);
}
public function manager()
{
return $this->belongsTo(User::class);
}
}

1
database/factories/ModelFactory.php

@ -20,6 +20,7 @@ $factory->define(User::class, function (Faker\Generator $faker) {
'name' => $name,
'nickname' => $name,
'gender_id' => rand(1, 2),
'manager_id' => 1,
];
});

1
database/migrations/2014_10_12_000000_create_users_table.php

@ -29,6 +29,7 @@ class CreateUsersTable extends Migration
$table->string('address')->nullable();
$table->string('city')->nullable();
$table->string('phone')->nullable();
$table->unsignedInteger('manager_id')->nullable();
$table->rememberToken();
$table->timestamps();
});

1
routes/web.php

@ -26,6 +26,7 @@ Route::post('family-actions/{user}/add-wife', 'FamilyActionsController@addWife')
Route::post('family-actions/{user}/add-husband', 'FamilyActionsController@addHusband')->name('family-actions.add-husband');
Route::post('family-actions/{user}/set-parent', 'FamilyActionsController@setParent')->name('family-actions.set-parent');
Route::get('profile-search', 'UsersController@index')->name('users.search');
Route::get('users/{user}', 'UsersController@show')->name('users.show');
Route::get('users/{user}/edit', 'UsersController@edit')->name('users.edit');
Route::patch('users/{user}', 'UsersController@update')->name('users.update');

7
tests/Feature/UsersProfileTest.php

@ -53,4 +53,11 @@ class UsersProfileTest extends TestCase
'password' => null,
]);
}
/** @test */
public function guest_can_search_users_profile()
{
$this->visit(route('users.search'));
$this->seePageIs(route('users.search'));
}
}

21
tests/Unit/Policies/UserPolicyTest.php

@ -0,0 +1,21 @@
<?php
namespace Tests\Unit\Policies;
use App\User;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Tests\TestCase;
class UserPolicyTest extends TestCase
{
use DatabaseMigrations;
/** @test */
public function admin_can_edit_users_profile()
{
$user = factory(User::class)->create();
$manager = $user->manager;
$this->assertTrue($manager->can('edit', $user));
}
}
Loading…
Cancel
Save