'boolean', ]; } public function roles(): BelongsToMany { return $this->belongsToMany(Role::class, 'role_permissions') ->withPivot('effect') ->withTimestamps(); } public function users(): BelongsToMany { return $this->belongsToMany(User::class, 'user_permissions') ->withPivot(['effect', 'reason', 'expires_at']) ->withTimestamps(); } public function scopeActionPermissions(Builder $query): Builder { return $query->where('type', self::TYPE_ACTION); } public function scopeFieldPermissions(Builder $query): Builder { return $query->where('type', self::TYPE_FIELD); } public static function getGroupedForUi(): Collection { return self::query() ->orderBy('sort') ->orderBy('module') ->orderBy('type') ->orderBy('slug') ->get() ->groupBy('group'); } }