setConnection($connection); $this->setTable(config('tenancy.database.roles_table')); parent::__construct($attributes); } /** * A role belongs to many users. * * @return BelongsToMany */ public function administrators(): BelongsToMany { $pivotTable = config('tenancy.database.role_users_table'); $relatedModel = config('tenancy.database.users_model'); return $this->belongsToMany($relatedModel, $pivotTable, 'role_id', 'user_id'); } /** * A role belongs to many permissions. * * @return BelongsToMany */ public function permissions(): BelongsToMany { $pivotTable = config('tenancy.database.role_permissions_table'); $relatedModel = config('tenancy.database.permissions_model'); return $this->belongsToMany($relatedModel, $pivotTable, 'role_id', 'permission_id'); } /** * A role belongs to many menus. * * @return BelongsToMany */ public function menus(): BelongsToMany { $pivotTable = config('tenancy.database.role_menu_table'); $relatedModel = config('tenancy.database.menu_model'); return $this->belongsToMany($relatedModel, $pivotTable, 'role_id', 'menu_id'); } /** * Check user has permission. * * @param $permission * * @return bool */ public function can(string $permission): bool { return $this->permissions()->where('slug', $permission)->exists(); } /** * Check user has no permission. * * @param $permission * * @return bool */ public function cannot(string $permission): bool { return !$this->can($permission); } /** * Detach models from the relationship. * * @return void */ protected static function boot() { parent::boot(); static::deleting(function ($model) { $model->administrators()->detach(); $model->permissions()->detach(); }); } public function organization() { return $this->hasOne(Organization::class,'id','org_id'); } }