Inheritance: extends Illuminate\Database\Eloquent\Model, use trait IsAbility
Ejemplo n.º 1
0
 /**
  * Get the IDs of the provided abilities.
  *
  * @param  \Silber\Bouncer\Database\Ability|array|int  $abilities
  * @param  \Illuminate\Database\Eloquent\Model|string|null  $model
  * @return array
  */
 protected function getAbilityIds($abilities, $model)
 {
     if ($abilities instanceof Ability) {
         return [$abilities->getKey()];
     }
     if (!is_null($model)) {
         return [$this->getModelAbility($abilities, $model)->getKey()];
     }
     return $this->abilitiesByName($abilities)->pluck('id')->all();
 }
Ejemplo n.º 2
0
 /**
  * Setup the database schema.
  *
  * @return void
  */
 public function setUp()
 {
     Role::$userModel = User::class;
     Ability::$userModel = User::class;
     $this->schema()->create('users', function ($table) {
         $table->increments('id');
         $table->timestamps();
     });
     $this->schema()->create('abilities', function ($table) {
         $table->increments('id');
         $table->string('title');
         $table->integer('entity_id')->unsigned()->nullable();
         $table->string('entity_type')->nullable();
         $table->timestamps();
         $table->unique(['title', 'entity_id', 'entity_type']);
     });
     $this->schema()->create('roles', function ($table) {
         $table->increments('id');
         $table->string('title')->unique();
         $table->timestamps();
     });
     $this->schema()->create('user_roles', function ($table) {
         $table->integer('role_id')->unsigned();
         $table->integer('user_id')->unsigned();
     });
     $this->schema()->create('user_abilities', function ($table) {
         $table->integer('ability_id')->unsigned();
         $table->integer('user_id')->unsigned();
     });
     $this->schema()->create('role_abilities', function ($table) {
         $table->integer('ability_id')->unsigned();
         $table->integer('role_id')->unsigned();
     });
 }
Ejemplo n.º 3
0
 /**
  * Run the database seeds.
  *
  * @return void
  */
 public function run()
 {
     $abs = [['name' => 'users.view', 'title' => 'View Users', 'description' => ''], ['name' => 'users.manage', 'title' => 'Manage Users', 'description' => ''], ['name' => 'system.view', 'title' => 'View System Settings', 'description' => ''], ['name' => 'system.manage', 'title' => 'Manage System Settings', 'description' => '']];
     foreach ($abs as $ab) {
         \Silber\Bouncer\Database\Ability::create($ab);
     }
 }
Ejemplo n.º 4
0
 /**
  * Create abilities whose name is not in the given list.
  *
  * @param  \Illuminate\Database\Eloquent\Collection  $models
  * @param  array  $abilities
  * @return \Illuminate\Database\Eloquent\Collection
  */
 protected function createMissingAbilities(Collection $models, array $abilities)
 {
     $missing = array_diff($abilities, $models->pluck('name')->all());
     $created = [];
     foreach ($missing as $ability) {
         $created[] = Ability::create(['name' => $ability]);
     }
     return $created;
 }
Ejemplo n.º 5
0
 /**
  * Set the name of the user model on the role and Ability classes.
  *
  * @return void
  */
 protected function setUserModel()
 {
     $model = $this->app->make('config')->get('auth.model');
     Ability::$userModel = $model;
     Role::$userModel = $model;
 }
Ejemplo n.º 6
0
 /**
  * Get the ability IDs from the titles present in the given array.
  *
  * @param  array  $abilities
  * @return array
  */
 protected function getAbilityIdsFromStrings(array $abilities)
 {
     $titles = array_filter($abilities, 'is_string');
     if (!count($titles)) {
         return [];
     }
     return Ability::whereIn('title', $titles)->lists('id')->all();
 }
Ejemplo n.º 7
0
 /**
  * Get a list of the user's abilities.
  *
  * @param  \Illuminate\Database\Eloquent\Model  $user
  * @return \Illuminate\Database\Eloquent\Collection
  */
 public function getAbilities(Model $user)
 {
     $query = Ability::whereHas('roles', $this->getRoleUsersConstraint($user));
     return $query->orWhereHas('users', $this->getUserConstraint($user))->get();
 }
Ejemplo n.º 8
0
 /**
  * Deserialize an array of abilities into a collection of models.
  *
  * @param  array  $abilities
  * @return \Illuminate\Database\Eloquent\Collection
  */
 protected function deserializeAbilities(array $abilities)
 {
     return Ability::hydrate($abilities);
 }
Ejemplo n.º 9
0
 /**
  * Fetch a list of the user's abilities from the database.
  *
  * @param  \Illuminate\Database\Eloquent\Model  $user
  * @return stdClass[]
  */
 protected function fetchUserAbilities(Model $user)
 {
     $query = Ability::whereHas('roles', $this->getRoleUsersConstraint($user));
     $query->orWhereHas('users', $this->getUserConstraint($user));
     return $query->getQuery()->select('title', 'entity_id', 'entity_type')->get();
 }