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(); } /** * Determine if the user may perform the given permission. * * @param Permission $permission * @return boolean */ public function hasPermission(Permission $permission) { return $this->hasRole($permission->roles); } public function hasRoles(array $roleNameArray) { return $this->roles->contains(function($key, $role) 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); }); } }