permissions()->detach(); // Remove all user associations $this->users()->detach(); // Delete the role $result = parent::delete(); return $result; } /** * Get a list of default roles. */ public static function getDefaultSlugs() { /** @var UserFrosting\Config $config */ $config = static::$ci->config; return array_map('trim', array_keys($config['site.registration.user_defaults.roles'], true)); } /** * Get a list of permissions assigned to this role. */ public function permissions() { /** @var UserFrosting\Sprinkle\Core\Util\ClassMapper $classMapper */ $classMapper = static::$ci->classMapper; return $this->belongsToMany($classMapper->getClassMapping('permission'), 'permission_roles', 'role_id', 'permission_id')->withTimestamps(); } /** * Query scope to get all roles assigned to a specific user. * * @param \Illuminate\Database\Eloquent\Builder $query * @param int $userId * @return \Illuminate\Database\Eloquent\Builder */ public function scopeForUser($query, $userId) { return $query->join('role_users', function ($join) use ($userId) { $join->on('role_users.role_id', 'roles.id') ->where('user_id', $userId); }); } /** * Get a list of users who have this role. */ public function users() { /** @var UserFrosting\Sprinkle\Core\Util\ClassMapper $classMapper */ $classMapper = static::$ci->classMapper; return $this->belongsToMany($classMapper->getClassMapping('user'), 'role_users', 'role_id', 'user_id'); } }