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