Browse Source
Add name link method to Project and User model
Add name link method to Project and User model
Move HasRoles trait methods to User Modelpull/1/head
6 changed files with 93 additions and 62 deletions
-
5app/Entities/Projects/Project.php
-
59app/Entities/Users/HasRoles.php
-
59app/Entities/Users/User.php
-
4resources/views/projects/index.blade.php
-
9tests/Unit/Models/ProjectTest.php
-
19tests/Unit/Models/UserTest.php
@ -1,59 +0,0 @@ |
|||||
<?php |
|
||||
|
|
||||
namespace App\Entities\Users; |
|
||||
|
|
||||
trait HasRoles |
|
||||
{ |
|
||||
|
|
||||
/** |
|
||||
* A user may have multiple roles. |
|
||||
* |
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany |
|
||||
*/ |
|
||||
public function roles() |
|
||||
{ |
|
||||
return $this->belongsToMany(Role::class); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* Assign the given role to the user. |
|
||||
* |
|
||||
* @param string $role |
|
||||
* @return mixed |
|
||||
*/ |
|
||||
public function assignRole($role) |
|
||||
{ |
|
||||
return $this->roles()->save( |
|
||||
Role::whereName($role)->firstOrFail() |
|
||||
); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* Determine if the user has the given role. |
|
||||
* |
|
||||
* @param mixed $role |
|
||||
* @return boolean |
|
||||
*/ |
|
||||
public function hasRole($role) |
|
||||
{ |
|
||||
if (is_string($role)) { |
|
||||
return $this->roles->contains('name', $role); |
|
||||
} |
|
||||
|
|
||||
return !! $role->intersect($this->roles)->count(); |
|
||||
} |
|
||||
|
|
||||
public function hasRoles(array $roleNameArray) |
|
||||
{ |
|
||||
return $this->roles->contains(function($role, $key) use ($roleNameArray) { |
|
||||
return in_array($role->name, $roleNameArray); |
|
||||
}); |
|
||||
} |
|
||||
|
|
||||
public function scopeHasRoles($query, array $roleNameArray) |
|
||||
{ |
|
||||
return $query->whereHas('roles', function($q) use ($roleNameArray) { |
|
||||
$q->whereIn('name',$roleNameArray); |
|
||||
}); |
|
||||
} |
|
||||
} |
|
||||
@ -0,0 +1,19 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace Tests\Unit\Models; |
||||
|
|
||||
|
use App\Entities\Users\User; |
||||
|
use Tests\TestCase; |
||||
|
|
||||
|
class UserTest extends TestCase |
||||
|
{ |
||||
|
/** @test */ |
||||
|
public function it_has_name_link_method() |
||||
|
{ |
||||
|
$user = factory(User::class)->create(); |
||||
|
|
||||
|
$this->assertEquals(link_to_route('users.show', $user->name, [$user->id], [ |
||||
|
'target' => '_blank' |
||||
|
]), $user->nameLink()); |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue