feat: members permissions update
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user