feat: members permissions update

This commit is contained in:
ivannoskov
2026-02-11 18:46:16 +03:00
parent 77a41d6c2a
commit 9b509df12f
2 changed files with 23 additions and 28 deletions

View File

@@ -310,11 +310,8 @@ export const WorkspaceProvider: React.FC<WorkspaceProviderProps> = ({
);
setProjects(activeProjects);
// Load current user's permissions
const me = await authApi.me();
const membersResponse = await membersApi.list(workspaceId, { size: 100 });
// Find member by user.id (not by member record id)
const currentMember = membersResponse.items.find((m) => m.user.id === me.id);
// Load current user's permissions using the dedicated endpoint
const currentMember = await membersApi.getCurrentMember(workspaceId);
if (currentMember) {
// If member found but no permissions, they're likely the creator - grant admin
@@ -324,13 +321,8 @@ export const WorkspaceProvider: React.FC<WorkspaceProviderProps> = ({
setPermissions(currentMember.permissions);
}
} else {
// User not in members list - might be creator, check if only workspace
// Grant admin access by default for workspace creators
if (membersResponse.items.length === 0) {
setPermissions([{ key: "admin_full" }]);
} else {
setPermissions([]);
}
// User is not a member of this workspace - no permissions
setPermissions([]);
}
// Restore selected projects from localStorage
@@ -473,20 +465,15 @@ export const WorkspaceProvider: React.FC<WorkspaceProviderProps> = ({
// Load permissions for the target workspace
try {
const me = await authApi.me();
const membersResponse = await membersApi.list(workspaceId, { size: 100 });
const member = membersResponse.items.find((m) => m.user.id === me.id);
const currentMember = await membersApi.getCurrentMember(workspaceId);
if (!member) {
// Check if user is creator (members list is empty or this is first member)
if (membersResponse.items.length === 0) {
return true;
}
if (!currentMember) {
// User is not a member of this workspace
return false;
}
// Check if has admin_full permission
return member.permissions.some((p) => p.key === "admin_full");
return currentMember.permissions.some((p) => p.key === "admin_full");
} catch (err) {
console.error("Failed to check workspace permissions:", err);
return false;