@fonderie/workspaces 5.3.2 → 6.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/brain/outcomes.md CHANGED
@@ -84,25 +84,25 @@ INSERT INTO fonderie_roles (name, workspace_id, is_system, description) VALUES (
84
84
  |---|---|---|
85
85
  | GET | `/workspaces` | `requireAuth → workspace.list` |
86
86
  | POST | `/workspaces` | `requireAuth → validate(createWorkspaceSchema) → workspace.create` |
87
- | PUT | `/workspaces` | `requireAuth → wsCtx → validate(updateWorkspaceSchema) → workspace.update` |
87
+ | PUT | `/workspaces` | `requireAuth → wsCtx → manager → validate(updateWorkspaceSchema) → workspace.update` |
88
88
  | GET | `/workspaces/:id` | `requireAuth → wsCtx → workspace.get` |
89
- | POST | `/workspaces/archive` | `requireAuth → wsCtx → workspace.archive` |
89
+ | POST | `/workspaces/archive` | `requireAuth → wsCtx → manager → workspace.archive` |
90
90
  | GET | `/workspaces/invitations` | `requireAuth → wsCtx → invitation.list` |
91
- | POST | `/workspaces/invitations` | `requireAuth → wsCtx → validate(createInvitationsSchema) → invitation.invite` |
92
- | DELETE | `/workspaces/invitations/:inviteId` | `requireAuth → wsCtx → invitation.cancel` |
93
- | POST | `/workspaces/invitations/accept` | `requireAuth → validate(acceptInvitationSchema) → invitation.accept` |
91
+ | POST | `/workspaces/invitations` | `requireAuth → wsCtx → manager → validate(createInvitationsSchema) → invitation.invite` |
92
+ | DELETE | `/workspaces/invitations/:inviteId` | `requireAuth → wsCtx → manager → invitation.cancel` |
93
+ | POST | `/workspaces/invitations/accept` | `acceptLimit → requireAuth → validate(acceptInvitationSchema) → invitation.accept` |
94
94
  | GET | `/workspaces/members` | `requireAuth → wsCtx → member.list` |
95
- | DELETE | `/workspaces/members/:userId` | `requireAuth → wsCtx → member.remove` |
95
+ | DELETE | `/workspaces/members/:userId` | `requireAuth → wsCtx → manager → member.remove` |
96
96
  | GET | `/workspaces/members/:userId/roles` | `requireAuth → wsCtx → member.getUserRoles` |
97
- | POST | `/workspaces/members/:userId/roles` | `requireAuth → wsCtx → validate(addMemberRoleSchema) → member.addRole` |
98
- | DELETE | `/workspaces/members/:userId/roles/:roleId` | `requireAuth → wsCtx → member.removeRole` |
99
- | POST | `/workspaces/restore` | `requireAuth → wsCtx → workspace.restore` |
97
+ | POST | `/workspaces/members/:userId/roles` | `requireAuth → wsCtx → manager → validate(addMemberRoleSchema) → member.addRole` |
98
+ | DELETE | `/workspaces/members/:userId/roles/:roleId` | `requireAuth → wsCtx → manager → member.removeRole` |
99
+ | POST | `/workspaces/restore` | `requireAuth → wsCtx → manager → workspace.restore` |
100
100
  | GET | `/workspaces/roles` | `requireAuth → wsCtx → role.list` |
101
- | POST | `/workspaces/roles` | `requireAuth → wsCtx → validate(createRoleSchema) → role.create` |
102
- | DELETE | `/workspaces/roles/:roleId` | `requireAuth → wsCtx → role.remove` |
101
+ | POST | `/workspaces/roles` | `requireAuth → wsCtx → manager → validate(createRoleSchema) → role.create` |
102
+ | DELETE | `/workspaces/roles/:roleId` | `requireAuth → wsCtx → manager → role.remove` |
103
103
  | GET | `/workspaces/roles/:roleId` | `requireAuth → wsCtx → role.get` |
104
- | PUT | `/workspaces/roles/:roleId` | `requireAuth → wsCtx → validate(updateRoleSchema) → role.update` |
104
+ | PUT | `/workspaces/roles/:roleId` | `requireAuth → wsCtx → manager → validate(updateRoleSchema) → role.update` |
105
105
  | GET | `/workspaces/roles/:roleId/permissions` | `requireAuth → wsCtx → role.getPermissions` |
106
- | POST | `/workspaces/roles/:roleId/permissions` | `requireAuth → wsCtx → validate(setRolePermissionsSchema) → role.setPermissions` |
106
+ | POST | `/workspaces/roles/:roleId/permissions` | `requireAuth → wsCtx → manager → validate(setRolePermissionsSchema) → role.setPermissions` |
107
107
  | GET | `/workspaces/settings` | `requireAuth → wsCtx → workspace.getSettings` |
108
- | PUT | `/workspaces/settings` | `requireAuth → wsCtx → validate(updateSettingsSchema) → workspace.updateSettings` |
108
+ | PUT | `/workspaces/settings` | `requireAuth → wsCtx → manager → validate(updateSettingsSchema) → workspace.updateSettings` |
@@ -14,6 +14,8 @@ new WorkspacesModule(store: IStoreAdapter, config?: IWorkspacesConfig, bus?: Eve
14
14
 
15
15
  interface IWorkspacesConfig {
16
16
  invitationTtl?: string;
17
+ management?: 'owner-or-admin' | 'any-member';
18
+ managerRoles?: string[];
17
19
  personalWorkspace?: boolean;
18
20
  routes?: Partial<Record<WorkspaceRouteId, WorkspaceRouteOverride>>;
19
21
  }
@@ -168,6 +170,8 @@ function withWorkspace(store: IStoreAdapter): Middleware
168
170
 
169
171
  function requireWorkspace(ctx: IFonderieContext, next: () => Promise<Response>): Promise<Response>
170
172
 
173
+ function requireManager(store: IStoreAdapter, config: IWorkspacesConfig): Middleware
174
+
171
175
  namespace schemas — exports: acceptInvitationSchema, addMemberRoleSchema, createInvitationsSchema, createRoleSchema, createWorkspaceSchema, setRolePermissionsSchema, updateRoleSchema, updateSettingsSchema, updateWorkspaceSchema
172
176
 
173
177
  function importWorkspace(store: IStoreAdapter, ws: IImportWorkspace): Promise<{ id: string; }>