Address RBAC review feedback

This commit is contained in:
2026-04-18 01:39:54 +05:30
parent abc6dc2860
commit 5a926ab6cf
12 changed files with 105 additions and 74 deletions
+12 -16
View File
@@ -152,11 +152,14 @@ import {checkRelayHasLivekit} from "$lib/livekit"
import {readFeed} from "@lib/feeds"
import {
parseRoomMembers,
deriveRoomMembers as deriveRoomMembersByRole,
deriveRoomAdmins as deriveRoomAdminsByRole,
deriveUserIsSpaceAdmin as deriveUserIsSpaceAdminByRole,
deriveUserIsRoomAdmin as deriveUserIsRoomAdminByRole,
deriveRoomMembers,
deriveUserIsSpaceAdmin,
deriveUserIsRoomAdmin,
deriveUserSpacePermissions,
ROOM_PERMISSION_ADD_MEMBER,
ROOM_PERMISSION_REMOVE_MEMBER,
ROOM_PERMISSION_DELETE_EVENT,
ROOM_PERMISSION_BAN_USER,
} from "@app/core/roles"
import type {RoomMember} from "@app/core/roles"
@@ -820,8 +823,6 @@ export const deriveSpaceMembers = (url: string) =>
uniq(getTagValues("member", event?.tags ?? [])),
)
export const deriveRoomMembers = deriveRoomMembersByRole
export type BannedPubkeyItem = {
pubkey: string
reason: string
@@ -840,8 +841,6 @@ export const deriveSpaceBannedPubkeyItems = (url: string) => {
return store
}
export const deriveRoomAdmins = deriveRoomAdminsByRole
const getRoomMembers = (_url: string, h: string, events: TrustedEvent[]) => {
const members = new Set<string>()
@@ -901,11 +900,12 @@ export const deriveSpaceActionItems = (url: string) =>
getTagValue(e.kind === ROOM_MEMBERS ? "d" : "h", e.tags)
const reports = $events.filter(e => e.kind === REPORT)
const pendingJoins: TrustedEvent[] = []
const canReviewReports = $permissions.has(9005) || $permissions.size === 0
const canReviewReports =
$permissions.has(ROOM_PERMISSION_DELETE_EVENT) || $permissions.size === 0
const canReviewJoins =
$permissions.has(9000) ||
$permissions.has(9001) ||
$permissions.has(9009) ||
$permissions.has(ROOM_PERMISSION_ADD_MEMBER) ||
$permissions.has(ROOM_PERMISSION_REMOVE_MEMBER) ||
$permissions.has(ROOM_PERMISSION_BAN_USER) ||
$permissions.size === 0
// Room-level join requests — most recent per pubkey+h
@@ -978,8 +978,6 @@ export enum MembershipStatus {
Granted,
}
export const deriveUserIsSpaceAdmin = deriveUserIsSpaceAdminByRole
export const deriveUserSpaceMembershipStatus = (url: string) => {
// Fetch member list and user add/remove events directly in this derivation.
const memberListFilters: Filter[] = [{kinds: [RELAY_MEMBERS]}]
@@ -1042,8 +1040,6 @@ export const deriveUserSpaceMembershipStatus = (url: string) => {
)
}
export const deriveUserIsRoomAdmin = deriveUserIsRoomAdminByRole
export const deriveUserRoomMembershipStatus = (url: string, h: string) => {
// Fetch the room member list and the current user's add/remove events.
const userEventFilters: Filter[] = [{kinds: [ROOM_ADD_MEMBER, ROOM_REMOVE_MEMBER], "#h": [h]}]