@meridianjs/meridian 2.6.0 → 2.7.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/dist/api/admin/api-tokens/[id]/route.d.ts +3 -0
- package/dist/api/admin/api-tokens/[id]/route.d.ts.map +1 -0
- package/dist/api/admin/api-tokens/[id]/route.js +20 -0
- package/dist/api/admin/api-tokens/[id]/route.js.map +1 -0
- package/dist/api/admin/api-tokens/route.d.ts +15 -0
- package/dist/api/admin/api-tokens/route.d.ts.map +1 -0
- package/dist/api/admin/api-tokens/route.js +63 -0
- package/dist/api/admin/api-tokens/route.js.map +1 -0
- package/dist/api/admin/issues/[id]/activities/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/activities/route.js +4 -15
- package/dist/api/admin/issues/[id]/activities/route.js.map +1 -1
- package/dist/api/admin/issues/[id]/attachments/[attachmentId]/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/attachments/[attachmentId]/route.js +6 -1
- package/dist/api/admin/issues/[id]/attachments/[attachmentId]/route.js.map +1 -1
- package/dist/api/admin/issues/[id]/attachments/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/attachments/route.js +2 -19
- package/dist/api/admin/issues/[id]/attachments/route.js.map +1 -1
- package/dist/api/admin/issues/[id]/comments/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/comments/route.js +4 -20
- package/dist/api/admin/issues/[id]/comments/route.js.map +1 -1
- package/dist/api/admin/issues/[id]/related/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/related/route.js +4 -5
- package/dist/api/admin/issues/[id]/related/route.js.map +1 -1
- package/dist/api/admin/issues/[id]/relations/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/relations/route.js +4 -5
- package/dist/api/admin/issues/[id]/relations/route.js.map +1 -1
- package/dist/api/admin/issues/[id]/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/route.js +12 -12
- package/dist/api/admin/issues/[id]/route.js.map +1 -1
- package/dist/api/admin/issues/[id]/time-logs/[logId]/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/time-logs/[logId]/route.js +7 -2
- package/dist/api/admin/issues/[id]/time-logs/[logId]/route.js.map +1 -1
- package/dist/api/admin/issues/[id]/time-logs/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/time-logs/route.js +1 -18
- package/dist/api/admin/issues/[id]/time-logs/route.js.map +1 -1
- package/dist/api/admin/issues/[id]/time-logs/timer/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/time-logs/timer/route.js +1 -18
- package/dist/api/admin/issues/[id]/time-logs/timer/route.js.map +1 -1
- package/dist/api/admin/issues/route.d.ts.map +1 -1
- package/dist/api/admin/issues/route.js +20 -4
- package/dist/api/admin/issues/route.js.map +1 -1
- package/dist/api/admin/my/tasks/route.d.ts.map +1 -1
- package/dist/api/admin/my/tasks/route.js +22 -5
- package/dist/api/admin/my/tasks/route.js.map +1 -1
- package/dist/api/admin/org/calendar/route.d.ts.map +1 -1
- package/dist/api/admin/org/calendar/route.js +2 -1
- package/dist/api/admin/org/calendar/route.js.map +1 -1
- package/dist/api/admin/org/holidays/[holidayId]/route.d.ts.map +1 -1
- package/dist/api/admin/org/holidays/[holidayId]/route.js +3 -2
- package/dist/api/admin/org/holidays/[holidayId]/route.js.map +1 -1
- package/dist/api/admin/org/holidays/route.d.ts.map +1 -1
- package/dist/api/admin/org/holidays/route.js +2 -1
- package/dist/api/admin/org/holidays/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/access/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/access/route.js +14 -11
- package/dist/api/admin/projects/[id]/access/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/access-requests/[requestId]/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/access-requests/[requestId]/route.js +3 -2
- package/dist/api/admin/projects/[id]/access-requests/[requestId]/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/access-requests/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/access-requests/route.js +18 -19
- package/dist/api/admin/projects/[id]/access-requests/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/activities/route.js +1 -1
- package/dist/api/admin/projects/[id]/activities/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/health/[updateId]/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/health/[updateId]/route.js +3 -3
- package/dist/api/admin/projects/[id]/health/[updateId]/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/health/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/health/route.js +3 -3
- package/dist/api/admin/projects/[id]/health/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/members/batch/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/members/batch/route.js +3 -2
- package/dist/api/admin/projects/[id]/members/batch/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/members/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/members/route.js +4 -3
- package/dist/api/admin/projects/[id]/members/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/share/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/share/route.js +5 -4
- package/dist/api/admin/projects/[id]/share/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/statuses/route.js +1 -1
- package/dist/api/admin/projects/[id]/statuses/route.js.map +1 -1
- package/dist/api/admin/projects/by-identifier/[identifier]/access-requests/route.d.ts.map +1 -1
- package/dist/api/admin/projects/by-identifier/[identifier]/access-requests/route.js +4 -3
- package/dist/api/admin/projects/by-identifier/[identifier]/access-requests/route.js.map +1 -1
- package/dist/api/admin/projects/route.d.ts.map +1 -1
- package/dist/api/admin/projects/route.js +7 -5
- package/dist/api/admin/projects/route.js.map +1 -1
- package/dist/api/admin/reporting/members/route.d.ts.map +1 -1
- package/dist/api/admin/reporting/members/route.js +6 -5
- package/dist/api/admin/reporting/members/route.js.map +1 -1
- package/dist/api/admin/reporting/time-logs/route.d.ts.map +1 -1
- package/dist/api/admin/reporting/time-logs/route.js +31 -9
- package/dist/api/admin/reporting/time-logs/route.js.map +1 -1
- package/dist/api/admin/team/tasks/route.d.ts.map +1 -1
- package/dist/api/admin/team/tasks/route.js +29 -13
- package/dist/api/admin/team/tasks/route.js.map +1 -1
- package/dist/api/admin/users/[id]/reactivate/route.d.ts.map +1 -1
- package/dist/api/admin/users/[id]/reactivate/route.js +2 -1
- package/dist/api/admin/users/[id]/reactivate/route.js.map +1 -1
- package/dist/api/admin/users/[id]/route.d.ts.map +1 -1
- package/dist/api/admin/users/[id]/route.js +6 -5
- package/dist/api/admin/users/[id]/route.js.map +1 -1
- package/dist/api/admin/users/[id]/sessions/route.d.ts.map +1 -1
- package/dist/api/admin/users/[id]/sessions/route.js +6 -5
- package/dist/api/admin/users/[id]/sessions/route.js.map +1 -1
- package/dist/api/admin/users/invitations/[inviteId]/resend/route.d.ts.map +1 -1
- package/dist/api/admin/users/invitations/[inviteId]/resend/route.js +3 -2
- package/dist/api/admin/users/invitations/[inviteId]/resend/route.js.map +1 -1
- package/dist/api/admin/users/invitations/[inviteId]/route.d.ts.map +1 -1
- package/dist/api/admin/users/invitations/[inviteId]/route.js +2 -1
- package/dist/api/admin/users/invitations/[inviteId]/route.js.map +1 -1
- package/dist/api/admin/users/invitations/route.d.ts.map +1 -1
- package/dist/api/admin/users/invitations/route.js +2 -1
- package/dist/api/admin/users/invitations/route.js.map +1 -1
- package/dist/api/admin/users/invite/route.d.ts.map +1 -1
- package/dist/api/admin/users/invite/route.js +5 -4
- package/dist/api/admin/users/invite/route.js.map +1 -1
- package/dist/api/admin/users/map/route.d.ts.map +1 -1
- package/dist/api/admin/users/map/route.js +8 -5
- package/dist/api/admin/users/map/route.js.map +1 -1
- package/dist/api/admin/users/me/avatar/route.js +1 -1
- package/dist/api/admin/users/me/avatar/route.js.map +1 -1
- package/dist/api/admin/users/me/google/route.js +1 -1
- package/dist/api/admin/users/me/google/route.js.map +1 -1
- package/dist/api/admin/users/me/password/send-otp/route.d.ts.map +1 -1
- package/dist/api/admin/users/me/password/send-otp/route.js +2 -1
- package/dist/api/admin/users/me/password/send-otp/route.js.map +1 -1
- package/dist/api/admin/users/route.d.ts.map +1 -1
- package/dist/api/admin/users/route.js +8 -1
- package/dist/api/admin/users/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/access-requests/[requestId]/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/access-requests/[requestId]/route.js +4 -3
- package/dist/api/admin/workspaces/[id]/access-requests/[requestId]/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/access-requests/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/access-requests/route.js +3 -2
- package/dist/api/admin/workspaces/[id]/access-requests/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/invitations/[inviteId]/resend/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/invitations/[inviteId]/resend/route.js +4 -3
- package/dist/api/admin/workspaces/[id]/invitations/[inviteId]/resend/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/invitations/[inviteId]/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/invitations/[inviteId]/route.js +2 -2
- package/dist/api/admin/workspaces/[id]/invitations/[inviteId]/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/invitations/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/invitations/route.js +6 -5
- package/dist/api/admin/workspaces/[id]/invitations/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/members/[userId]/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/members/[userId]/route.js +5 -4
- package/dist/api/admin/workspaces/[id]/members/[userId]/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/members/batch/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/members/batch/route.js +3 -2
- package/dist/api/admin/workspaces/[id]/members/batch/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/members/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/members/route.js +3 -2
- package/dist/api/admin/workspaces/[id]/members/route.js.map +1 -1
- package/dist/api/admin/workspaces/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/route.js +5 -3
- package/dist/api/admin/workspaces/route.js.map +1 -1
- package/dist/api/admin/workspaces/search/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/search/route.js +25 -16
- package/dist/api/admin/workspaces/search/route.js.map +1 -1
- package/dist/api/auth/_apply-pending-invites.d.ts.map +1 -1
- package/dist/api/auth/_apply-pending-invites.js +6 -5
- package/dist/api/auth/_apply-pending-invites.js.map +1 -1
- package/dist/api/auth/forgot-password/route.d.ts.map +1 -1
- package/dist/api/auth/forgot-password/route.js +2 -1
- package/dist/api/auth/forgot-password/route.js.map +1 -1
- package/dist/api/auth/invite/[token]/route.d.ts.map +1 -1
- package/dist/api/auth/invite/[token]/route.js +15 -5
- package/dist/api/auth/invite/[token]/route.js.map +1 -1
- package/dist/api/auth/register/send-otp/route.d.ts.map +1 -1
- package/dist/api/auth/register/send-otp/route.js +2 -1
- package/dist/api/auth/register/send-otp/route.js.map +1 -1
- package/dist/api/utils/issue-access.d.ts +16 -0
- package/dist/api/utils/issue-access.d.ts.map +1 -0
- package/dist/api/utils/issue-access.js +38 -0
- package/dist/api/utils/issue-access.js.map +1 -0
- package/dist/api/utils/project-access.d.ts +2 -0
- package/dist/api/utils/project-access.d.ts.map +1 -1
- package/dist/api/utils/project-access.js +11 -8
- package/dist/api/utils/project-access.js.map +1 -1
- package/dist/api/utils/request.d.ts +30 -0
- package/dist/api/utils/request.d.ts.map +1 -0
- package/dist/api/utils/request.js +11 -0
- package/dist/api/utils/request.js.map +1 -0
- package/dist/api/utils/workspace-access.d.ts.map +1 -1
- package/dist/api/utils/workspace-access.js +6 -7
- package/dist/api/utils/workspace-access.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/subscribers/comment-created.d.ts.map +1 -1
- package/dist/subscribers/comment-created.js +3 -1
- package/dist/subscribers/comment-created.js.map +1 -1
- package/dist/subscribers/issue-assigned.d.ts.map +1 -1
- package/dist/subscribers/issue-assigned.js +3 -1
- package/dist/subscribers/issue-assigned.js.map +1 -1
- package/dist/subscribers/issue-created.d.ts.map +1 -1
- package/dist/subscribers/issue-created.js +2 -1
- package/dist/subscribers/issue-created.js.map +1 -1
- package/dist/subscribers/issue-mentioned.d.ts.map +1 -1
- package/dist/subscribers/issue-mentioned.js +2 -1
- package/dist/subscribers/issue-mentioned.js.map +1 -1
- package/dist/subscribers/issue-status-changed.d.ts +1 -0
- package/dist/subscribers/issue-status-changed.d.ts.map +1 -1
- package/dist/subscribers/issue-status-changed.js +3 -1
- package/dist/subscribers/issue-status-changed.js.map +1 -1
- package/dist/subscribers/password-otp-requested.d.ts.map +1 -1
- package/dist/subscribers/password-otp-requested.js +2 -1
- package/dist/subscribers/password-otp-requested.js.map +1 -1
- package/dist/subscribers/password-reset-requested.d.ts.map +1 -1
- package/dist/subscribers/password-reset-requested.js +2 -1
- package/dist/subscribers/password-reset-requested.js.map +1 -1
- package/dist/subscribers/project-access-request-cancelled.d.ts.map +1 -1
- package/dist/subscribers/project-access-request-cancelled.js +2 -1
- package/dist/subscribers/project-access-request-cancelled.js.map +1 -1
- package/dist/subscribers/project-access-request-resolved.d.ts.map +1 -1
- package/dist/subscribers/project-access-request-resolved.js +2 -1
- package/dist/subscribers/project-access-request-resolved.js.map +1 -1
- package/dist/subscribers/project-access-requested.d.ts.map +1 -1
- package/dist/subscribers/project-access-requested.js +2 -1
- package/dist/subscribers/project-access-requested.js.map +1 -1
- package/dist/subscribers/project-member-added.d.ts.map +1 -1
- package/dist/subscribers/project-member-added.js +2 -1
- package/dist/subscribers/project-member-added.js.map +1 -1
- package/dist/subscribers/registration-otp-requested.d.ts.map +1 -1
- package/dist/subscribers/registration-otp-requested.js +2 -1
- package/dist/subscribers/registration-otp-requested.js.map +1 -1
- package/dist/subscribers/workspace-access-request-cancelled.d.ts.map +1 -1
- package/dist/subscribers/workspace-access-request-cancelled.js +2 -1
- package/dist/subscribers/workspace-access-request-cancelled.js.map +1 -1
- package/dist/subscribers/workspace-access-request-resolved.d.ts.map +1 -1
- package/dist/subscribers/workspace-access-request-resolved.js +2 -1
- package/dist/subscribers/workspace-access-request-resolved.js.map +1 -1
- package/dist/subscribers/workspace-access-requested.d.ts.map +1 -1
- package/dist/subscribers/workspace-access-requested.js +2 -1
- package/dist/subscribers/workspace-access-requested.js.map +1 -1
- package/dist/subscribers/workspace-member-added.d.ts.map +1 -1
- package/dist/subscribers/workspace-member-added.js +2 -1
- package/dist/subscribers/workspace-member-added.js.map +1 -1
- package/dist/subscribers/workspace-member-invited.d.ts.map +1 -1
- package/dist/subscribers/workspace-member-invited.js +2 -1
- package/dist/subscribers/workspace-member-invited.js.map +1 -1
- package/dist/workflows/assign-issue.d.ts.map +1 -1
- package/dist/workflows/assign-issue.js +2 -1
- package/dist/workflows/assign-issue.js.map +1 -1
- package/dist/workflows/complete-sprint.d.ts.map +1 -1
- package/dist/workflows/complete-sprint.js +2 -1
- package/dist/workflows/complete-sprint.js.map +1 -1
- package/dist/workflows/create-invitation.d.ts.map +1 -1
- package/dist/workflows/create-invitation.js +2 -1
- package/dist/workflows/create-invitation.js.map +1 -1
- package/dist/workflows/create-issue.d.ts.map +1 -1
- package/dist/workflows/create-issue.js +2 -1
- package/dist/workflows/create-issue.js.map +1 -1
- package/dist/workflows/create-project.d.ts.map +1 -1
- package/dist/workflows/create-project.js +2 -1
- package/dist/workflows/create-project.js.map +1 -1
- package/dist/workflows/transfer-project.d.ts.map +1 -1
- package/dist/workflows/transfer-project.js +28 -17
- package/dist/workflows/transfer-project.js.map +1 -1
- package/dist/workflows/update-issue-status.d.ts.map +1 -1
- package/dist/workflows/update-issue-status.js +3 -2
- package/dist/workflows/update-issue-status.js.map +1 -1
- package/package.json +7 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/users/map/route.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/users/map/route.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAA;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACvE,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAsB,CAAA;QAC/E,MAAM,WAAW,GAAa,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAA;QACzD,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAA;QAElF,IAAI,KAAY,CAAA;QAEhB,IAAI,YAAY,EAAE,CAAC;YACjB,KAAK,GAAG,MAAO,WAAmB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAClD,CAAC;aAAM,CAAC;YACN,MAAM,sBAAsB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAiC,CAAA;YAChH,MAAM,eAAe,GAAG,MAAM,sBAAsB,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;YACzF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;gBACjC,OAAM;YACR,CAAC;YACD,MAAM,SAAS,GAAG,MAAO,sBAA8B,CAAC,oBAAoB,CAC1E,EAAE,YAAY,EAAE,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CACtF,CAAA;YACD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAE,SAAmB,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAC7E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;gBACjC,OAAM;YACR,CAAC;YACD,MAAM,OAAO,GAAG,MAAO,WAAmB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;YAClE,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QAC/B,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YACpC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;YAChC,qEAAqE;YACrE,iEAAiE;YACjE,SAAS,EAAE,CAAC,CAAC,SAAS,KAAK,KAAK;SACjC,CAAC,CAAC,CAAA;QACH,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -46,6 +46,6 @@ export const DELETE = async (req, res) => {
|
|
|
46
46
|
if (existing.avatar_url)
|
|
47
47
|
await deleteUpload(req, existing.avatar_url);
|
|
48
48
|
await userService.updateUser(userId, { avatar_url: null });
|
|
49
|
-
res.
|
|
49
|
+
res.status(204).end();
|
|
50
50
|
};
|
|
51
51
|
//# sourceMappingURL=route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/users/me/avatar/route.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/users/me/avatar/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,6 @@ export const DELETE = async (req, res) => {
|
|
|
10
10
|
}
|
|
11
11
|
const userService = req.scope.resolve("userModuleService");
|
|
12
12
|
await userService.updateUser(userId, { google_id: null });
|
|
13
|
-
res.
|
|
13
|
+
res.status(204).end();
|
|
14
14
|
};
|
|
15
15
|
//# sourceMappingURL=route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/users/me/google/route.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACtD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,EAAY,CAAA;IACrC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAA;QACjE,OAAM;IACR,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAQ,CAAA;IACjE,MAAM,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACzD,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/users/me/google/route.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACtD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,EAAY,CAAA;IACrC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAA;QACjE,OAAM;IACR,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAQ,CAAA;IACjE,MAAM,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACzD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;AACvB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/admin/users/me/password/send-otp/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/admin/users/me/password/send-otp/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAIvC;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBA0BjD,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { generateAndStoreOtp } from "../_otp-store.js";
|
|
2
|
+
import { EVENTS } from "@meridianjs/types";
|
|
2
3
|
/**
|
|
3
4
|
* POST /admin/users/me/password/send-otp
|
|
4
5
|
* Send a 6-digit OTP to the authenticated user's email for password create/change.
|
|
@@ -22,7 +23,7 @@ export const POST = async (req, res) => {
|
|
|
22
23
|
const user = await userService.retrieveUser(userId);
|
|
23
24
|
const eventBus = req.scope.resolve("eventBus");
|
|
24
25
|
await eventBus.emit({
|
|
25
|
-
name:
|
|
26
|
+
name: EVENTS.PASSWORD_OTP_REQUESTED,
|
|
26
27
|
data: { user_id: userId, email: user.email, otp },
|
|
27
28
|
});
|
|
28
29
|
res.json({ ok: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/admin/users/me/password/send-otp/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/admin/users/me/password/send-otp/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACpD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,EAAY,CAAA;IACrC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAA;QACjE,OAAM;IACR,CAAC;IAED,IAAI,GAAW,CAAA;IACf,IAAI,CAAC;QACH,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IACnC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,+DAA+D;QAC/D,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;QACtB,OAAM;IACR,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAQ,CAAA;IACjE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;IAEnD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAQ,CAAA;IACrD,MAAM,QAAQ,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC,sBAAsB;QACnC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;KAClD,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;AACxB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/admin/users/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/admin/users/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAMrD,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBA6BpE,CAAA"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { isGlobalAdmin } from "../../utils/project-access.js";
|
|
2
|
+
/** Fields exposed to non-admin members — enough for assignee/mention pickers. */
|
|
3
|
+
const MEMBER_VISIBLE_FIELDS = ["id", "email", "first_name", "last_name", "avatar_url", "designation"];
|
|
1
4
|
export const GET = async (req, res, next) => {
|
|
2
5
|
try {
|
|
3
6
|
const userService = req.scope.resolve("userModuleService");
|
|
@@ -13,7 +16,11 @@ export const GET = async (req, res, next) => {
|
|
|
13
16
|
];
|
|
14
17
|
}
|
|
15
18
|
const [users, count] = await userService.listAndCountUsers(filters, { limit, offset, orderBy: { created_at: "DESC" } });
|
|
16
|
-
|
|
19
|
+
// Admins get full records (sans hash); members get only picker fields —
|
|
20
|
+
// no phone numbers, OAuth ids, roles, metadata, or login timestamps.
|
|
21
|
+
const safeUsers = isGlobalAdmin(req)
|
|
22
|
+
? users.map(({ password_hash: _, ...u }) => u)
|
|
23
|
+
: users.map((u) => Object.fromEntries(MEMBER_VISIBLE_FIELDS.map((f) => [f, u[f] ?? null])));
|
|
17
24
|
res.json({ users: safeUsers, count, limit, offset });
|
|
18
25
|
}
|
|
19
26
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/users/route.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/users/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAE7D,iFAAiF;AACjF,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,CAAU,CAAA;AAE9G,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACvE,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAQ,CAAA;QACjE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;QAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC5C,MAAM,CAAC,GAAG,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAEnE,MAAM,OAAO,GAA4B,EAAE,CAAA;QAC3C,IAAI,CAAC,EAAE,CAAC;YACN,OAAO,CAAC,GAAG,GAAG;gBACZ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;gBAC/B,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;gBACpC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;aACpC,CAAA;QACH,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,WAAW,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;QAEvH,wEAAwE;QACxE,qEAAqE;QACrE,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC;YAClC,CAAC,CAAE,KAAe,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACzD,CAAC,CAAE,KAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACzB,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CACxE,CAAA;QACL,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/access-requests/[requestId]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/access-requests/[requestId]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAMrD,eAAO,MAAM,MAAM,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBA8BvE,CAAA;AAED,eAAO,MAAM,KAAK,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBA+DlD,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { assertWorkspaceAdmin } from "../../../../../utils/workspace-access.js";
|
|
2
2
|
import { assignDefaultUserRole } from "../../../../../utils/assign-default-role.js";
|
|
3
|
+
import { EVENTS, ROLES } from "@meridianjs/types";
|
|
3
4
|
// Owner cancels their own pending request
|
|
4
5
|
export const DELETE = async (req, res, next) => {
|
|
5
6
|
try {
|
|
@@ -20,7 +21,7 @@ export const DELETE = async (req, res, next) => {
|
|
|
20
21
|
await workspaceMemberService.deleteAccessRequest(req.params.requestId);
|
|
21
22
|
const eventBus = req.scope.resolve("eventBus");
|
|
22
23
|
eventBus.emit({
|
|
23
|
-
name:
|
|
24
|
+
name: EVENTS.WORKSPACE_ACCESS_REQUEST_CANCELLED,
|
|
24
25
|
data: { workspace_id: req.params.id, user_id: accessRequest.user_id, request_id: req.params.requestId },
|
|
25
26
|
}).catch(() => { });
|
|
26
27
|
res.status(204).end();
|
|
@@ -51,7 +52,7 @@ export const PATCH = async (req, res) => {
|
|
|
51
52
|
return;
|
|
52
53
|
}
|
|
53
54
|
if (action === "approve") {
|
|
54
|
-
await workspaceMemberService.ensureMember(req.params.id, accessRequest.user_id,
|
|
55
|
+
await workspaceMemberService.ensureMember(req.params.id, accessRequest.user_id, ROLES.MEMBER);
|
|
55
56
|
await assignDefaultUserRole(req, accessRequest.user_id);
|
|
56
57
|
}
|
|
57
58
|
const updated = await workspaceMemberService.updateAccessRequestStatus(req.params.requestId, action === "approve" ? "approved" : "denied");
|
|
@@ -69,7 +70,7 @@ export const PATCH = async (req, res) => {
|
|
|
69
70
|
}).catch(() => { });
|
|
70
71
|
const eventBus = req.scope.resolve("eventBus");
|
|
71
72
|
eventBus.emit({
|
|
72
|
-
name:
|
|
73
|
+
name: EVENTS.WORKSPACE_ACCESS_REQUEST_RESOLVED,
|
|
73
74
|
data: {
|
|
74
75
|
workspace_id: workspace.id,
|
|
75
76
|
workspace_name: workspace.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/access-requests/[requestId]/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAA;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/access-requests/[requestId]/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/access-requests/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/access-requests/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAIvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAyBhD,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBA2FjD,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { assertWorkspaceAdmin } from "../../../../utils/workspace-access.js";
|
|
2
|
+
import { EVENTS, ROLES } from "@meridianjs/types";
|
|
2
3
|
export const GET = async (req, res) => {
|
|
3
4
|
if (!await assertWorkspaceAdmin(req, res))
|
|
4
5
|
return;
|
|
@@ -59,7 +60,7 @@ export const POST = async (req, res) => {
|
|
|
59
60
|
message: message ?? null,
|
|
60
61
|
});
|
|
61
62
|
// Notify workspace admins
|
|
62
|
-
const [wsMembers] = await workspaceMemberService.listAndCountWorkspaceMembers({ workspace_id: req.params.id, role:
|
|
63
|
+
const [wsMembers] = await workspaceMemberService.listAndCountWorkspaceMembers({ workspace_id: req.params.id, role: ROLES.ADMIN }, { limit: 100 });
|
|
63
64
|
const requestingUser = await userService.retrieveUser(userId).catch(() => null);
|
|
64
65
|
const requesterName = requestingUser
|
|
65
66
|
? `${requestingUser.first_name ?? ""} ${requestingUser.last_name ?? ""}`.trim() || requestingUser.email
|
|
@@ -82,7 +83,7 @@ export const POST = async (req, res) => {
|
|
|
82
83
|
// Emit event for subscriber (email + SSE broadcast)
|
|
83
84
|
const eventBus = req.scope.resolve("eventBus");
|
|
84
85
|
eventBus.emit({
|
|
85
|
-
name:
|
|
86
|
+
name: EVENTS.WORKSPACE_ACCESS_REQUESTED,
|
|
86
87
|
data: {
|
|
87
88
|
access_request_id: accessRequest.id,
|
|
88
89
|
workspace_id: req.params.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/access-requests/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/access-requests/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../../src/api/admin/workspaces/[id]/invitations/[inviteId]/resend/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../../src/api/admin/workspaces/[id]/invitations/[inviteId]/resend/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAKvC,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBA8CjD,CAAA"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { assertWorkspaceAccess } from "../../../../../../utils/workspace-access.js";
|
|
2
|
+
import { isGlobalAdmin } from "../../../../../../utils/project-access.js";
|
|
3
|
+
import { EVENTS } from "@meridianjs/types";
|
|
2
4
|
export const POST = async (req, res) => {
|
|
3
5
|
if (!await assertWorkspaceAccess(req, res))
|
|
4
6
|
return;
|
|
5
|
-
const roles = req.user?.roles ?? [];
|
|
6
7
|
const permissions = req.user?.permissions ?? [];
|
|
7
|
-
const isPrivileged =
|
|
8
|
+
const isPrivileged = isGlobalAdmin(req);
|
|
8
9
|
if (!isPrivileged && !permissions.includes("member:invite")) {
|
|
9
10
|
res.status(403).json({ error: { message: "Forbidden — requires member:invite permission" } });
|
|
10
11
|
return;
|
|
@@ -29,7 +30,7 @@ export const POST = async (req, res) => {
|
|
|
29
30
|
}
|
|
30
31
|
const eventBus = req.scope.resolve("eventBus");
|
|
31
32
|
await eventBus.emit({
|
|
32
|
-
name:
|
|
33
|
+
name: EVENTS.WORKSPACE_MEMBER_INVITED,
|
|
33
34
|
data: {
|
|
34
35
|
invitation_id: invitation.id,
|
|
35
36
|
workspace_id: invitation.workspace_id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../../src/api/admin/workspaces/[id]/invitations/[inviteId]/resend/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../../src/api/admin/workspaces/[id]/invitations/[inviteId]/resend/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACpD,IAAI,CAAC,MAAM,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC;QAAE,OAAM;IAElD,MAAM,WAAW,GAAa,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAA;IACzD,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IACvC,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,+CAA+C,EAAE,EAAE,CAAC,CAAA;QAC7F,OAAM;IACR,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAAQ,CAAA;IAC/D,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAEtF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE,CAAC,CAAA;QACpE,OAAM;IACR,CAAC;IAED,IAAI,UAAU,CAAC,YAAY,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;QACzD,OAAM;IACR,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,wCAAwC,EAAE,EAAE,CAAC,CAAA;QACtF,OAAM;IACR,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACtB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,gEAAgE,EAAE,EAAE,CAAC,CAAA;QAC9G,OAAM;IACR,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAQ,CAAA;IACrD,MAAM,QAAQ,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC,wBAAwB;QACrC,IAAI,EAAE;YACJ,aAAa,EAAE,UAAU,CAAC,EAAE;YAC5B,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,QAAQ;SACrC;KACF,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAElB,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AAC7B,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/invitations/[inviteId]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/invitations/[inviteId]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAIvC,eAAO,MAAM,MAAM,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBA2BnD,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { assertWorkspaceAccess } from "../../../../../utils/workspace-access.js";
|
|
2
|
+
import { isGlobalAdmin } from "../../../../../utils/project-access.js";
|
|
2
3
|
export const DELETE = async (req, res) => {
|
|
3
4
|
if (!await assertWorkspaceAccess(req, res))
|
|
4
5
|
return;
|
|
@@ -14,9 +15,8 @@ export const DELETE = async (req, res) => {
|
|
|
14
15
|
return;
|
|
15
16
|
}
|
|
16
17
|
// Caller must have member:invite permission or be admin/super-admin
|
|
17
|
-
const roles = req.user?.roles ?? [];
|
|
18
18
|
const permissions = req.user?.permissions ?? [];
|
|
19
|
-
const isPrivileged =
|
|
19
|
+
const isPrivileged = isGlobalAdmin(req);
|
|
20
20
|
if (!isPrivileged && !permissions.includes("member:invite")) {
|
|
21
21
|
res.status(403).json({ error: { message: "Forbidden — requires member:invite permission" } });
|
|
22
22
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/invitations/[inviteId]/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAA;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/invitations/[inviteId]/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAA;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AAEtE,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACtD,IAAI,CAAC,MAAM,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC;QAAE,OAAM;IAElD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAAQ,CAAA;IAE/D,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IACtF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE,CAAC,CAAA;QACpE,OAAM;IACR,CAAC;IAED,4DAA4D;IAC5D,IAAI,UAAU,CAAC,YAAY,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;QACzD,OAAM;IACR,CAAC;IAED,oEAAoE;IACpE,MAAM,WAAW,GAAa,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAA;IACzD,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IACvC,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,+CAA+C,EAAE,EAAE,CAAC,CAAA;QAC7F,OAAM;IACR,CAAC;IAED,MAAM,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC/C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;AACxB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/invitations/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/invitations/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAMvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAQhD,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBA+DjD,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { requirePermission } from "@meridianjs/auth";
|
|
2
2
|
import { createInvitationWorkflow } from "../../../../../workflows/create-invitation.js";
|
|
3
3
|
import { assertWorkspaceAccess } from "../../../../utils/workspace-access.js";
|
|
4
|
+
import { ROLES } from "@meridianjs/types";
|
|
4
5
|
export const GET = async (req, res) => {
|
|
5
6
|
if (!await assertWorkspaceAccess(req, res))
|
|
6
7
|
return;
|
|
@@ -13,20 +14,20 @@ export const POST = async (req, res) => {
|
|
|
13
14
|
if (!await assertWorkspaceAccess(req, res))
|
|
14
15
|
return;
|
|
15
16
|
const { email, role, app_role_id } = req.body;
|
|
16
|
-
if (!role || ![
|
|
17
|
+
if (!role || ![ROLES.SUPER_ADMIN, ROLES.ADMIN, ROLES.MEMBER].includes(role)) {
|
|
17
18
|
res.status(400).json({ error: { message: "role must be 'super-admin', 'admin', or 'member'" } });
|
|
18
19
|
return;
|
|
19
20
|
}
|
|
20
21
|
// Privilege check: only admins/super-admins can invite admins; only super-admins can invite super-admins
|
|
21
22
|
const callerRoles = req.user?.roles ?? [];
|
|
22
|
-
if (role ===
|
|
23
|
-
if (!callerRoles.includes(
|
|
23
|
+
if (role === ROLES.SUPER_ADMIN) {
|
|
24
|
+
if (!callerRoles.includes(ROLES.SUPER_ADMIN)) {
|
|
24
25
|
res.status(403).json({ error: { message: "Only super-admins can invite users with the super-admin role" } });
|
|
25
26
|
return;
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
|
-
else if (role !==
|
|
29
|
-
if (!callerRoles.includes(
|
|
29
|
+
else if (role !== ROLES.MEMBER) {
|
|
30
|
+
if (!callerRoles.includes(ROLES.SUPER_ADMIN) && !callerRoles.includes(ROLES.ADMIN)) {
|
|
30
31
|
res.status(403).json({ error: { message: "Only admins can invite users with elevated roles" } });
|
|
31
32
|
return;
|
|
32
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/invitations/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAA;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/invitations/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/members/[userId]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/members/[userId]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAkBrD,eAAO,MAAM,KAAK,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAsCtE,CAAA;AAED,eAAO,MAAM,MAAM,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBA6CvE,CAAA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { requirePermission } from "@meridianjs/auth";
|
|
2
|
+
import { ROLES } from "@meridianjs/types";
|
|
2
3
|
const ROLE_RANK = {
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
[ROLES.SUPER_ADMIN]: 3,
|
|
5
|
+
[ROLES.ADMIN]: 2,
|
|
5
6
|
"moderator": 1,
|
|
6
|
-
|
|
7
|
+
[ROLES.MEMBER]: 0,
|
|
7
8
|
};
|
|
8
9
|
function actorRank(req) {
|
|
9
10
|
const roles = req.user?.roles ?? [];
|
|
@@ -17,7 +18,7 @@ export const PATCH = async (req, res, next) => {
|
|
|
17
18
|
return;
|
|
18
19
|
const workspaceMemberService = req.scope.resolve("workspaceMemberModuleService");
|
|
19
20
|
const { role } = req.body;
|
|
20
|
-
if (!role || ![
|
|
21
|
+
if (!role || ![ROLES.ADMIN, ROLES.MEMBER].includes(role)) {
|
|
21
22
|
res.status(400).json({ error: { message: "role must be 'admin' or 'member'" } });
|
|
22
23
|
return;
|
|
23
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/members/[userId]/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/members/[userId]/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzC,MAAM,SAAS,GAA2B;IACxC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;IACtB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IAChB,WAAW,EAAE,CAAC;IACd,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;CAClB,CAAA;AAED,SAAS,SAAS,CAAC,GAAQ;IACzB,MAAM,KAAK,GAAa,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAA;IAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAC5D,CAAC;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAA;AAEhF,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QAC3D,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC;gBAAE,OAAM;YAElD,MAAM,sBAAsB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAQ,CAAA;YACvF,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;YAEzB,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,kCAAkC,EAAE,EAAE,CAAC,CAAA;gBAChF,OAAM;YACR,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC/F,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAA;gBAChE,OAAM;YACR,CAAC;YAED,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;YAC5B,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAElD,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;gBACxB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,+DAA+D,EAAE,EAAE,CAAC,CAAA;gBAC7G,OAAM;YACR,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;gBACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,qDAAqD,EAAE,EAAE,CAAC,CAAA;gBACnG,OAAM;YACR,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3F,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IAC1E,iBAAiB,CAAC,eAAe,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QACtD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC;gBAAE,OAAM;YAElD,MAAM,sBAAsB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAQ,CAAA;YACvF,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;YACvE,MAAM,oBAAoB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,4BAA4B,CAAQ,CAAA;YAEnF,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC/F,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAA;gBAChE,OAAM;YACR,CAAC;YAED,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;gBACvC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,4BAA4B,EAAE,EAAE,CAAC,CAAA;gBAC1E,OAAM;YACR,CAAC;YAED,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;YAC5B,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAElD,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;gBACxB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,mDAAmD,EAAE,EAAE,CAAC,CAAA;gBACjG,OAAM;YACR,CAAC;YAED,6CAA6C;YAC7C,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,cAAc,CAAC,oBAAoB,CAC1D,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAC/B,EAAE,KAAK,EAAE,IAAI,EAAE,CAChB,CAAA;YACD,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CACtB,oBAAoB,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAClF,CACF,CAAA;YAED,MAAM,sBAAsB,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACjE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/members/batch/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/members/batch/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAMrD,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBA+DrE,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { requirePermission } from "@meridianjs/auth";
|
|
2
2
|
import { assertWorkspaceAccess } from "../../../../../utils/workspace-access.js";
|
|
3
3
|
import { assignDefaultUserRole } from "../../../../../utils/assign-default-role.js";
|
|
4
|
+
import { EVENTS, ROLES } from "@meridianjs/types";
|
|
4
5
|
export const POST = async (req, res, next) => {
|
|
5
6
|
requirePermission("member:invite")(req, res, async () => {
|
|
6
7
|
try {
|
|
@@ -12,7 +13,7 @@ export const POST = async (req, res, next) => {
|
|
|
12
13
|
res.status(400).json({ error: { message: "user_ids must be a non-empty array" } });
|
|
13
14
|
return;
|
|
14
15
|
}
|
|
15
|
-
const wsRole = role ===
|
|
16
|
+
const wsRole = role === ROLES.MEMBER ? ROLES.MEMBER : ROLES.ADMIN;
|
|
16
17
|
// Validate all user IDs exist before creating memberships
|
|
17
18
|
const userService = req.scope.resolve("userModuleService");
|
|
18
19
|
const userMap = await userService.listUsersByIds(user_ids);
|
|
@@ -37,7 +38,7 @@ export const POST = async (req, res, next) => {
|
|
|
37
38
|
added++;
|
|
38
39
|
const eventBus = req.scope.resolve("eventBus");
|
|
39
40
|
eventBus.emit({
|
|
40
|
-
name:
|
|
41
|
+
name: EVENTS.WORKSPACE_MEMBER_ADDED,
|
|
41
42
|
data: {
|
|
42
43
|
workspace_id: req.params.id,
|
|
43
44
|
user_id: userId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/members/batch/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAA;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/members/batch/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/members/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/members/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAMrD,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBA2BhD,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAqDrE,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { requirePermission } from "@meridianjs/auth";
|
|
2
2
|
import { assertWorkspaceAccess } from "../../../../utils/workspace-access.js";
|
|
3
3
|
import { assignDefaultUserRole } from "../../../../utils/assign-default-role.js";
|
|
4
|
+
import { EVENTS, ROLES } from "@meridianjs/types";
|
|
4
5
|
export const GET = async (req, res) => {
|
|
5
6
|
if (!await assertWorkspaceAccess(req, res))
|
|
6
7
|
return;
|
|
@@ -46,7 +47,7 @@ export const POST = async (req, res, next) => {
|
|
|
46
47
|
return;
|
|
47
48
|
}
|
|
48
49
|
// workspace_member.role only supports "admin" | "member" — map super-admin → admin
|
|
49
|
-
const wsRole = role ===
|
|
50
|
+
const wsRole = role === ROLES.MEMBER ? ROLES.MEMBER : ROLES.ADMIN;
|
|
50
51
|
const member = await workspaceMemberService.createWorkspaceMember({
|
|
51
52
|
workspace_id: req.params.id,
|
|
52
53
|
user_id,
|
|
@@ -55,7 +56,7 @@ export const POST = async (req, res, next) => {
|
|
|
55
56
|
await assignDefaultUserRole(req, user_id, app_role_id);
|
|
56
57
|
const eventBus = req.scope.resolve("eventBus");
|
|
57
58
|
eventBus.emit({
|
|
58
|
-
name:
|
|
59
|
+
name: EVENTS.WORKSPACE_MEMBER_ADDED,
|
|
59
60
|
data: {
|
|
60
61
|
workspace_id: req.params.id,
|
|
61
62
|
user_id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/members/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAA;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/members/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/admin/workspaces/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/admin/workspaces/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAKrD,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAuChD,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAwDrE,CAAA"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { requirePermission } from "@meridianjs/auth";
|
|
2
|
+
import { ROLES } from "@meridianjs/types";
|
|
3
|
+
import { isGlobalAdmin } from "../../utils/project-access.js";
|
|
2
4
|
export const GET = async (req, res) => {
|
|
3
5
|
const workspaceService = req.scope.resolve("workspaceModuleService");
|
|
4
6
|
const workspaceMemberService = req.scope.resolve("workspaceMemberModuleService");
|
|
5
7
|
const limit = Number(req.query.limit) || 200;
|
|
6
8
|
const offset = Number(req.query.offset) || 0;
|
|
7
9
|
const roles = req.user?.roles ?? [];
|
|
8
|
-
const isPrivileged =
|
|
10
|
+
const isPrivileged = isGlobalAdmin(req);
|
|
9
11
|
// Always fetch the user's workspace memberships (needed for private workspace filtering)
|
|
10
12
|
const userWorkspaceIds = await workspaceMemberService.getWorkspaceIdsForUser(req.user.id);
|
|
11
13
|
if (isPrivileged) {
|
|
12
14
|
const [workspaces, count] = await workspaceService.listAndCountWorkspaces({}, { limit, offset });
|
|
13
15
|
// Super-admin org-scope bypass: return all workspaces unfiltered
|
|
14
|
-
if (roles.includes(
|
|
16
|
+
if (roles.includes(ROLES.SUPER_ADMIN) && req.query.org_scope === "true") {
|
|
15
17
|
res.json({ workspaces, count, limit, offset });
|
|
16
18
|
return;
|
|
17
19
|
}
|
|
@@ -60,7 +62,7 @@ export const POST = async (req, res, next) => {
|
|
|
60
62
|
});
|
|
61
63
|
// Auto-create workspace membership for the creator (admin role)
|
|
62
64
|
if (req.user?.id) {
|
|
63
|
-
await workspaceMemberService.ensureMember(workspace.id, req.user.id,
|
|
65
|
+
await workspaceMemberService.ensureMember(workspace.id, req.user.id, ROLES.ADMIN);
|
|
64
66
|
// Assign "Workspace Admin" app role to the creator
|
|
65
67
|
try {
|
|
66
68
|
const appRoleService = req.scope.resolve("appRoleModuleService");
|