/** * Map a list of authorities by their class name. * * @param array $authorities * @return array */ public static function mapAuthorityByClass(array $authorities) { $map = []; foreach ($authorities as $authority) { if ($authority instanceof Model) { $map[get_class($authority)][] = $authority->getKey(); } else { $map[Models::classname(User::class)][] = $authority; } } return $map; }
/** * The roles relationship. * * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function roles() { return $this->belongsToMany(Models::classname(Role::class), Models::table('user_roles'), 'user_id'); }
/** * The Abilities relationship. * * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function abilities() { return $this->belongsToMany(Models::classname(Ability::class), 'user_abilities'); }
/** * Get the table for the given type. * * @param string $type * @return string */ protected function table($type) { $class = Models::classname($type); return (new $class())->getTable(); }
/** * The users relationship. * * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function users() { return $this->belongsToMany(Models::classname(User::class)); }
/** * The Permissions relationship. * * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function permissions() { return $this->belongsToMany(Models::classname(Permission::class)); }
/** * The roles relationship. * * @return \Illuminate\Database\Eloquent\Relations\MorphToMany */ public function roles() { return $this->morphToMany(Models::classname(Role::class), 'entity', Models::table('assigned_roles')); }
/** * The users relationship. * * @return \Illuminate\Database\Eloquent\Relations\MorphToMany */ public function users() { return $this->morphedByMany(Models::classname(User::class), 'entity', Models::table('permissions')); }
/** * The abilities relationship. * * @return \Illuminate\Database\Eloquent\Relations\MorphToMany */ public function abilities() { return $this->morphToMany(Models::classname(Ability::class), 'entity', Models::table('permissions')); }
/** * The users relationship. * * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function users() { return $this->belongsToMany(Models::classname(User::class), Models::table('user_abilities')); }