Ejemplo n.º 1
0
Archivo: Can.php Proyecto: jjharr/can
 /**
  * Detach a role from the user
  *
  * @param $roleSlug
  *
  * @return bool
  * @throws CanException
  */
 public function detachRole($roleSlug)
 {
     // todo - does this weed out wildcards?
     SlugContainer::validateOrDie($roleSlug, 'slug');
     // make sure the role to detach is among the attached roles
     $allRoleSlugs = $this->slugsFor($this->getRoles());
     if (!in_array($roleSlug, $allRoleSlugs, TRUE)) {
         return false;
     }
     $this->doDetachRole($roleSlug);
     $this->detachRolePermissions($roleSlug);
     return true;
 }
Ejemplo n.º 2
0
 private static function description($item)
 {
     if (isset($item['description'])) {
         $description = $item['description'];
     } else {
         $description = static::name($item);
     }
     SlugContainer::validateOrDie($description, 'description');
     return $description;
 }
Ejemplo n.º 3
0
Archivo: Role.php Proyecto: jjharr/can
 public function detachPermissions(array $permissionSlugs)
 {
     SlugContainer::validateOrDie($this->slug, 'slug', 'The Role slug');
     if (count($permissionSlugs) === 0) {
         return true;
     }
     $first = array_shift($permissionSlugs);
     SlugContainer::validateOrDie($first, 'slug', 'The Permission slug');
     $query = DB::table(Config::get('can.role_permission_table'))->where('roles_slug', $this->slug)->where('permissions_slug', $first);
     foreach ($permissionSlugs as $slug) {
         SlugContainer::validateOrDie($slug, 'slug', 'The Permission slug');
         $roleSlug = $this->slug;
         $query->orWhere(function ($q) use($roleSlug, $slug) {
             $q->where('roles_slug', $roleSlug)->where('permissions_slug', $slug);
         });
     }
     try {
         $query->delete();
     } catch (\Exception $e) {
         throw new \Exception('Failed to detach permissions: ' . $e->getMessage());
     }
     return true;
 }