@fonderie/workspaces 5.3.1 → 6.0.0

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,7 @@ 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';
17
18
  personalWorkspace?: boolean;
18
19
  routes?: Partial<Record<WorkspaceRouteId, WorkspaceRouteOverride>>;
19
20
  }
@@ -168,6 +169,8 @@ function withWorkspace(store: IStoreAdapter): Middleware
168
169
 
169
170
  function requireWorkspace(ctx: IFonderieContext, next: () => Promise<Response>): Promise<Response>
170
171
 
172
+ function requireManager(store: IStoreAdapter, config: IWorkspacesConfig): Middleware
173
+
171
174
  namespace schemas — exports: acceptInvitationSchema, addMemberRoleSchema, createInvitationsSchema, createRoleSchema, createWorkspaceSchema, setRolePermissionsSchema, updateRoleSchema, updateSettingsSchema, updateWorkspaceSchema
172
175
 
173
176
  function importWorkspace(store: IStoreAdapter, ws: IImportWorkspace): Promise<{ id: string; }>