@meridianjs/meridian 0.1.13 → 0.1.14
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/issues/[id]/activities/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/activities/route.js +15 -0
- 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 +27 -2
- package/dist/api/admin/issues/[id]/attachments/[attachmentId]/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 +22 -0
- package/dist/api/admin/issues/[id]/comments/route.js.map +1 -1
- package/dist/api/admin/issues/[id]/route.d.ts +3 -3
- package/dist/api/admin/issues/[id]/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/route.js +75 -56
- 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 +12 -2
- package/dist/api/admin/issues/[id]/time-logs/[logId]/route.js.map +1 -1
- package/dist/api/admin/issues/route.d.ts +2 -2
- package/dist/api/admin/issues/route.d.ts.map +1 -1
- package/dist/api/admin/issues/route.js +28 -23
- package/dist/api/admin/issues/route.js.map +1 -1
- package/dist/api/admin/notifications/[id]/read/route.d.ts.map +1 -1
- package/dist/api/admin/notifications/[id]/read/route.js +11 -2
- package/dist/api/admin/notifications/[id]/read/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 +5 -0
- package/dist/api/admin/projects/[id]/access/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/members/[userId]/route.d.ts +2 -2
- package/dist/api/admin/projects/[id]/members/[userId]/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/members/[userId]/route.js +16 -11
- package/dist/api/admin/projects/[id]/members/[userId]/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/members/route.d.ts +2 -2
- package/dist/api/admin/projects/[id]/members/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/members/route.js +31 -26
- package/dist/api/admin/projects/[id]/members/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/route.d.ts +3 -3
- package/dist/api/admin/projects/[id]/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/route.js +40 -30
- package/dist/api/admin/projects/[id]/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/statuses/[statusId]/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/statuses/[statusId]/route.js +19 -0
- package/dist/api/admin/projects/[id]/statuses/[statusId]/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/statuses/reorder/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/statuses/reorder/route.js +10 -0
- package/dist/api/admin/projects/[id]/statuses/reorder/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/statuses/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/statuses/route.js +9 -0
- package/dist/api/admin/projects/[id]/statuses/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/task-lists/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/task-lists/route.js +21 -0
- package/dist/api/admin/projects/[id]/task-lists/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/teams/[teamId]/route.d.ts +2 -2
- package/dist/api/admin/projects/[id]/teams/[teamId]/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/teams/[teamId]/route.js +16 -11
- package/dist/api/admin/projects/[id]/teams/[teamId]/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/teams/route.d.ts +2 -2
- package/dist/api/admin/projects/[id]/teams/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/teams/route.js +20 -15
- package/dist/api/admin/projects/[id]/teams/route.js.map +1 -1
- package/dist/api/admin/projects/route.d.ts +2 -2
- package/dist/api/admin/projects/route.d.ts.map +1 -1
- package/dist/api/admin/projects/route.js +29 -24
- package/dist/api/admin/projects/route.js.map +1 -1
- package/dist/api/admin/roles/[id]/route.d.ts +3 -3
- package/dist/api/admin/roles/[id]/route.d.ts.map +1 -1
- package/dist/api/admin/roles/[id]/route.js +30 -20
- package/dist/api/admin/roles/[id]/route.js.map +1 -1
- package/dist/api/admin/roles/route.d.ts +2 -2
- package/dist/api/admin/roles/route.d.ts.map +1 -1
- package/dist/api/admin/roles/route.js +18 -13
- package/dist/api/admin/roles/route.js.map +1 -1
- package/dist/api/admin/sprints/[id]/route.d.ts +3 -3
- package/dist/api/admin/sprints/[id]/route.d.ts.map +1 -1
- package/dist/api/admin/sprints/[id]/route.js +64 -34
- package/dist/api/admin/sprints/[id]/route.js.map +1 -1
- package/dist/api/admin/sprints/route.d.ts +2 -2
- package/dist/api/admin/sprints/route.d.ts.map +1 -1
- package/dist/api/admin/sprints/route.js +18 -13
- package/dist/api/admin/sprints/route.js.map +1 -1
- package/dist/api/admin/task-lists/[id]/route.d.ts.map +1 -1
- package/dist/api/admin/task-lists/[id]/route.js +35 -2
- package/dist/api/admin/task-lists/[id]/route.js.map +1 -1
- package/dist/api/admin/users/[id]/role/route.d.ts +2 -2
- package/dist/api/admin/users/[id]/role/route.d.ts.map +1 -1
- package/dist/api/admin/users/[id]/role/route.js +22 -17
- package/dist/api/admin/users/[id]/role/route.js.map +1 -1
- package/dist/api/admin/users/[id]/sessions/route.d.ts +2 -2
- package/dist/api/admin/users/[id]/sessions/route.d.ts.map +1 -1
- package/dist/api/admin/users/[id]/sessions/route.js +9 -4
- package/dist/api/admin/users/[id]/sessions/route.js.map +1 -1
- package/dist/api/admin/users/route.d.ts +2 -2
- package/dist/api/admin/users/route.d.ts.map +1 -1
- package/dist/api/admin/users/route.js +15 -7
- package/dist/api/admin/users/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 +18 -0
- 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 +16 -0
- package/dist/api/admin/workspaces/[id]/invitations/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/members/[userId]/route.d.ts +3 -3
- package/dist/api/admin/workspaces/[id]/members/[userId]/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/members/[userId]/route.js +30 -20
- package/dist/api/admin/workspaces/[id]/members/[userId]/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/members/route.d.ts +2 -2
- package/dist/api/admin/workspaces/[id]/members/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/members/route.js +21 -16
- package/dist/api/admin/workspaces/[id]/members/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/route.d.ts +2 -2
- package/dist/api/admin/workspaces/[id]/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/route.js +23 -8
- package/dist/api/admin/workspaces/[id]/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/members/[userId]/route.d.ts +2 -2
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/members/[userId]/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/members/[userId]/route.js +9 -4
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/members/[userId]/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/members/route.d.ts +2 -2
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/members/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/members/route.js +19 -14
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/members/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/route.d.ts +3 -3
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/route.js +28 -18
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/teams/route.d.ts +2 -2
- package/dist/api/admin/workspaces/[id]/teams/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/teams/route.js +18 -13
- package/dist/api/admin/workspaces/[id]/teams/route.js.map +1 -1
- package/dist/api/admin/workspaces/route.d.ts +2 -2
- package/dist/api/admin/workspaces/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/route.js +22 -17
- package/dist/api/admin/workspaces/route.js.map +1 -1
- package/dist/workflows/create-invitation.d.ts.map +1 -1
- package/dist/workflows/create-invitation.js +0 -1
- package/dist/workflows/create-invitation.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/projects/route.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/projects/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Response } from "express";
|
|
1
|
+
import type { Response, NextFunction } from "express";
|
|
2
2
|
export declare const GET: (req: any, res: Response) => Promise<void>;
|
|
3
|
-
export declare const PUT: (req: any, res: Response) => Promise<void>;
|
|
4
|
-
export declare const DELETE: (req: any, res: Response) => Promise<void>;
|
|
3
|
+
export declare const PUT: (req: any, res: Response, next: NextFunction) => Promise<void>;
|
|
4
|
+
export declare const DELETE: (req: any, res: Response, next: NextFunction) => Promise<void>;
|
|
5
5
|
//# sourceMappingURL=route.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/roles/[id]/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/roles/[id]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAGrD,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAIhD,CAAA;AAED,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAgBpE,CAAA;AAED,eAAO,MAAM,MAAM,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAiBvE,CAAA"}
|
|
@@ -4,31 +4,41 @@ export const GET = async (req, res) => {
|
|
|
4
4
|
const role = await appRoleService.retrieveAppRole(req.params.id);
|
|
5
5
|
res.json({ role });
|
|
6
6
|
};
|
|
7
|
-
export const PUT = async (req, res) => {
|
|
7
|
+
export const PUT = async (req, res, next) => {
|
|
8
8
|
requirePermission("role:update")(req, res, async () => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
9
|
+
try {
|
|
10
|
+
const appRoleService = req.scope.resolve("appRoleModuleService");
|
|
11
|
+
const { name, description, permissions } = req.body;
|
|
12
|
+
const updates = {};
|
|
13
|
+
if (name !== undefined)
|
|
14
|
+
updates.name = name.trim();
|
|
15
|
+
if (description !== undefined)
|
|
16
|
+
updates.description = description;
|
|
17
|
+
if (permissions !== undefined)
|
|
18
|
+
updates.permissions = Array.isArray(permissions) ? permissions : [];
|
|
19
|
+
const role = await appRoleService.updateAppRole(req.params.id, updates);
|
|
20
|
+
res.json({ role });
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
next(err);
|
|
24
|
+
}
|
|
20
25
|
});
|
|
21
26
|
};
|
|
22
|
-
export const DELETE = async (req, res) => {
|
|
27
|
+
export const DELETE = async (req, res, next) => {
|
|
23
28
|
requirePermission("role:delete")(req, res, async () => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
try {
|
|
30
|
+
const appRoleService = req.scope.resolve("appRoleModuleService");
|
|
31
|
+
const role = await appRoleService.retrieveAppRole(req.params.id);
|
|
32
|
+
if (role.is_system) {
|
|
33
|
+
res.status(400).json({ error: { message: "Cannot delete a system role" } });
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
await appRoleService.deleteAppRole(req.params.id);
|
|
37
|
+
res.status(204).send();
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
next(err);
|
|
29
41
|
}
|
|
30
|
-
await appRoleService.deleteAppRole(req.params.id);
|
|
31
|
-
res.status(204).send();
|
|
32
42
|
});
|
|
33
43
|
};
|
|
34
44
|
//# sourceMappingURL=route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/roles/[id]/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;IACvE,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAChE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;AACpB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/roles/[id]/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;IACvE,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAChE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;AACpB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACvE,iBAAiB,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QACpD,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;YACvE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;YACnD,MAAM,OAAO,GAA4B,EAAE,CAAA;YAC3C,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YAClD,IAAI,WAAW,KAAK,SAAS;gBAAE,OAAO,CAAC,WAAW,GAAG,WAAW,CAAA;YAChE,IAAI,WAAW,KAAK,SAAS;gBAAE,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;YAElG,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;YACvE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QACpB,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,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QACpD,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;YACvE,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAEhE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,6BAA6B,EAAE,EAAE,CAAC,CAAA;gBAC3E,OAAM;YACR,CAAC;YAED,MAAM,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACjD,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,4 +1,4 @@
|
|
|
1
|
-
import type { Response } from "express";
|
|
1
|
+
import type { Response, NextFunction } from "express";
|
|
2
2
|
export declare const GET: (req: any, res: Response) => Promise<void>;
|
|
3
|
-
export declare const POST: (req: any, res: Response) => Promise<void>;
|
|
3
|
+
export declare const POST: (req: any, res: Response, next: NextFunction) => Promise<void>;
|
|
4
4
|
//# sourceMappingURL=route.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/admin/roles/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/roles/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAGrD,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAIhD,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAsBrE,CAAA"}
|
|
@@ -4,21 +4,26 @@ export const GET = async (req, res) => {
|
|
|
4
4
|
const [roles, count] = await appRoleService.listAndCountAppRoles({}, { limit: 100 });
|
|
5
5
|
res.json({ roles, count });
|
|
6
6
|
};
|
|
7
|
-
export const POST = async (req, res) => {
|
|
7
|
+
export const POST = async (req, res, next) => {
|
|
8
8
|
requirePermission("role:create")(req, res, async () => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
try {
|
|
10
|
+
const appRoleService = req.scope.resolve("appRoleModuleService");
|
|
11
|
+
const { name, description, permissions } = req.body;
|
|
12
|
+
if (!name || typeof name !== "string" || name.trim().length === 0) {
|
|
13
|
+
res.status(400).json({ error: { message: "name is required" } });
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const role = await appRoleService.createAppRole({
|
|
17
|
+
name: name.trim(),
|
|
18
|
+
description: description ?? null,
|
|
19
|
+
is_system: false,
|
|
20
|
+
permissions: Array.isArray(permissions) ? permissions : [],
|
|
21
|
+
});
|
|
22
|
+
res.status(201).json({ role });
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
next(err);
|
|
14
26
|
}
|
|
15
|
-
const role = await appRoleService.createAppRole({
|
|
16
|
-
name: name.trim(),
|
|
17
|
-
description: description ?? null,
|
|
18
|
-
is_system: false,
|
|
19
|
-
permissions: Array.isArray(permissions) ? permissions : [],
|
|
20
|
-
});
|
|
21
|
-
res.status(201).json({ role });
|
|
22
27
|
});
|
|
23
28
|
};
|
|
24
29
|
//# sourceMappingURL=route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/roles/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;IACvE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,cAAc,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;IACpF,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;AAC5B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/roles/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;IACvE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,cAAc,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;IACpF,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;AAC5B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxE,iBAAiB,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QACpD,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;YACvE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;YAEnD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClE,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,IAAI,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC;gBAC9C,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;gBACjB,WAAW,EAAE,WAAW,IAAI,IAAI;gBAChC,SAAS,EAAE,KAAK;gBAChB,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;aAC3D,CAAC,CAAA;YACF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Response } from "express";
|
|
1
|
+
import type { Response, NextFunction } from "express";
|
|
2
2
|
export declare const GET: (req: any, res: Response) => Promise<void>;
|
|
3
|
-
export declare const PUT: (req: any, res: Response) => Promise<void>;
|
|
4
|
-
export declare const DELETE: (req: any, res: Response) => Promise<void>;
|
|
3
|
+
export declare const PUT: (req: any, res: Response, next: NextFunction) => Promise<void>;
|
|
4
|
+
export declare const DELETE: (req: any, res: Response, next: NextFunction) => Promise<void>;
|
|
5
5
|
//# sourceMappingURL=route.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/sprints/[id]/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/sprints/[id]/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,kBAYhD,CAAA;AAED,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAsDpE,CAAA;AAED,eAAO,MAAM,MAAM,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAUvE,CAAA"}
|
|
@@ -1,59 +1,89 @@
|
|
|
1
1
|
import { requirePermission } from "@meridianjs/auth";
|
|
2
2
|
import { completeSprintWorkflow } from "../../../../workflows/complete-sprint.js";
|
|
3
|
+
import { hasProjectAccess } from "../../../utils/project-access.js";
|
|
3
4
|
export const GET = async (req, res) => {
|
|
4
5
|
const sprintService = req.scope.resolve("sprintModuleService");
|
|
5
6
|
const sprint = await sprintService.retrieveSprint(req.params.id);
|
|
7
|
+
if (sprint?.project_id) {
|
|
8
|
+
const projectService = req.scope.resolve("projectModuleService");
|
|
9
|
+
const project = await projectService.retrieveProject(sprint.project_id).catch(() => null);
|
|
10
|
+
if (project && !await hasProjectAccess(req, project)) {
|
|
11
|
+
res.status(403).json({ error: { message: "Forbidden" } });
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
6
15
|
res.json({ sprint });
|
|
7
16
|
};
|
|
8
|
-
export const PUT = async (req, res) => {
|
|
17
|
+
export const PUT = async (req, res, next) => {
|
|
9
18
|
const { status } = req.body;
|
|
10
19
|
// Sprint start/complete require specific permissions checked inside the handler
|
|
11
20
|
if (status === "active") {
|
|
12
21
|
requirePermission("sprint:start")(req, res, async () => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
22
|
+
try {
|
|
23
|
+
const sprintService = req.scope.resolve("sprintModuleService");
|
|
24
|
+
const sprint = await sprintService.updateSprint(req.params.id, { status: "active" });
|
|
25
|
+
res.json({ sprint });
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
next(err);
|
|
29
|
+
}
|
|
16
30
|
});
|
|
17
31
|
return;
|
|
18
32
|
}
|
|
19
33
|
if (status === "completed") {
|
|
20
34
|
requirePermission("sprint:complete")(req, res, async () => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
35
|
+
try {
|
|
36
|
+
const { result: sprint, errors, transaction_status } = await completeSprintWorkflow(req.scope).run({
|
|
37
|
+
input: { sprintId: req.params.id, moveIncompleteToSprintId: req.body.moveIncompleteToSprintId ?? null, actor_id: req.user?.id ?? null },
|
|
38
|
+
});
|
|
39
|
+
if (transaction_status === "reverted") {
|
|
40
|
+
const err = errors[0];
|
|
41
|
+
res.status(err.status ?? 500).json({ error: { message: err.message } });
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
res.json({ sprint });
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
next(err);
|
|
28
48
|
}
|
|
29
|
-
res.json({ sprint });
|
|
30
49
|
});
|
|
31
50
|
return;
|
|
32
51
|
}
|
|
33
|
-
// Non-status updates (name, goal, dates, metadata) —
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
52
|
+
// Non-status updates (name, goal, dates, metadata) — require sprint:update permission
|
|
53
|
+
requirePermission("sprint:update")(req, res, async () => {
|
|
54
|
+
try {
|
|
55
|
+
const sprintService = req.scope.resolve("sprintModuleService");
|
|
56
|
+
const { name, goal, start_date, end_date, metadata } = req.body;
|
|
57
|
+
const updates = {};
|
|
58
|
+
if (name !== undefined)
|
|
59
|
+
updates.name = name;
|
|
60
|
+
if (goal !== undefined)
|
|
61
|
+
updates.goal = goal;
|
|
62
|
+
if (start_date !== undefined)
|
|
63
|
+
updates.start_date = new Date(start_date);
|
|
64
|
+
if (end_date !== undefined)
|
|
65
|
+
updates.end_date = new Date(end_date);
|
|
66
|
+
// status is intentionally excluded — status changes go through dedicated branches above
|
|
67
|
+
if (metadata !== undefined)
|
|
68
|
+
updates.metadata = metadata;
|
|
69
|
+
const sprint = await sprintService.updateSprint(req.params.id, updates);
|
|
70
|
+
res.json({ sprint });
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
next(err);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
51
76
|
};
|
|
52
|
-
export const DELETE = async (req, res) => {
|
|
77
|
+
export const DELETE = async (req, res, next) => {
|
|
53
78
|
requirePermission("sprint:delete")(req, res, async () => {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
79
|
+
try {
|
|
80
|
+
const sprintService = req.scope.resolve("sprintModuleService");
|
|
81
|
+
await sprintService.deleteSprint(req.params.id);
|
|
82
|
+
res.status(204).send();
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
next(err);
|
|
86
|
+
}
|
|
57
87
|
});
|
|
58
88
|
};
|
|
59
89
|
//# sourceMappingURL=route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/sprints/[id]/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAA;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/sprints/[id]/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Response } from "express";
|
|
1
|
+
import type { Response, NextFunction } from "express";
|
|
2
2
|
export declare const GET: (req: any, res: Response) => Promise<void>;
|
|
3
|
-
export declare const POST: (req: any, res: Response) => Promise<void>;
|
|
3
|
+
export declare const POST: (req: any, res: Response, next: NextFunction) => Promise<void>;
|
|
4
4
|
//# sourceMappingURL=route.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/admin/sprints/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/sprints/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAIrD,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAkBhD,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAiBrE,CAAA"}
|
|
@@ -22,21 +22,26 @@ export const GET = async (req, res) => {
|
|
|
22
22
|
const [sprints, count] = await sprintService.listAndCountSprints(filters);
|
|
23
23
|
res.json({ sprints, count });
|
|
24
24
|
};
|
|
25
|
-
export const POST = async (req, res) => {
|
|
25
|
+
export const POST = async (req, res, next) => {
|
|
26
26
|
requirePermission("sprint:create")(req, res, async () => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
try {
|
|
28
|
+
const sprintService = req.scope.resolve("sprintModuleService");
|
|
29
|
+
const { name, goal, project_id, start_date, end_date, metadata } = req.body;
|
|
30
|
+
if (!name || !project_id) {
|
|
31
|
+
res.status(400).json({ error: { message: "name and project_id are required" } });
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const sprint = await sprintService.createSprint({
|
|
35
|
+
name, goal: goal ?? null, project_id, status: "planned",
|
|
36
|
+
start_date: start_date ? new Date(start_date) : null,
|
|
37
|
+
end_date: end_date ? new Date(end_date) : null,
|
|
38
|
+
metadata: metadata ?? null,
|
|
39
|
+
});
|
|
40
|
+
res.status(201).json({ sprint });
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
next(err);
|
|
32
44
|
}
|
|
33
|
-
const sprint = await sprintService.createSprint({
|
|
34
|
-
name, goal: goal ?? null, project_id, status: "planned",
|
|
35
|
-
start_date: start_date ? new Date(start_date) : null,
|
|
36
|
-
end_date: end_date ? new Date(end_date) : null,
|
|
37
|
-
metadata: metadata ?? null,
|
|
38
|
-
});
|
|
39
|
-
res.status(201).json({ sprint });
|
|
40
45
|
});
|
|
41
46
|
};
|
|
42
47
|
//# sourceMappingURL=route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/sprints/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAEhE,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAQ,CAAA;IACrE,MAAM,OAAO,GAA4B,EAAE,CAAA;IAC3C,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU;QAAE,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAA;IACnE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAA;IAEvD,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACzB,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;QACvE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;QAC5F,IAAI,CAAC,OAAO,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QAC3F,IAAI,CAAC,MAAM,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;YACzD,OAAM;QACR,CAAC;IACH,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;IACzE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;AAC9B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/sprints/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/task-lists/[id]/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/task-lists/[id]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAehD,CAAA;AAED,eAAO,MAAM,MAAM,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAcnD,CAAA"}
|
|
@@ -1,11 +1,44 @@
|
|
|
1
|
+
import { hasProjectAccess } from "../../../utils/project-access.js";
|
|
1
2
|
export const PUT = async (req, res) => {
|
|
2
3
|
const { name, description } = req.body;
|
|
3
4
|
const issueService = req.scope.resolve("issueModuleService");
|
|
4
|
-
const
|
|
5
|
-
|
|
5
|
+
const taskListRepo = req.scope.resolve("taskListRepository");
|
|
6
|
+
const taskList = await taskListRepo.findOne({ id: req.params.id });
|
|
7
|
+
if (!taskList) {
|
|
8
|
+
res.status(404).json({ error: { message: "Task list not found" } });
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const projectService = req.scope.resolve("projectModuleService");
|
|
12
|
+
const project = await projectService.retrieveProject(taskList.project_id).catch(() => null);
|
|
13
|
+
if (!project) {
|
|
14
|
+
res.status(404).json({ error: { message: "Project not found" } });
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (!await hasProjectAccess(req, project)) {
|
|
18
|
+
res.status(403).json({ error: { message: "Forbidden" } });
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const updated = await issueService.updateTaskList(req.params.id, { name, description });
|
|
22
|
+
res.json({ task_list: updated });
|
|
6
23
|
};
|
|
7
24
|
export const DELETE = async (req, res) => {
|
|
8
25
|
const issueService = req.scope.resolve("issueModuleService");
|
|
26
|
+
const taskListRepo = req.scope.resolve("taskListRepository");
|
|
27
|
+
const taskList = await taskListRepo.findOne({ id: req.params.id });
|
|
28
|
+
if (!taskList) {
|
|
29
|
+
res.status(404).json({ error: { message: "Task list not found" } });
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const projectService = req.scope.resolve("projectModuleService");
|
|
33
|
+
const project = await projectService.retrieveProject(taskList.project_id).catch(() => null);
|
|
34
|
+
if (!project) {
|
|
35
|
+
res.status(404).json({ error: { message: "Project not found" } });
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (!await hasProjectAccess(req, project)) {
|
|
39
|
+
res.status(403).json({ error: { message: "Forbidden" } });
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
9
42
|
await issueService.deleteTaskList(req.params.id);
|
|
10
43
|
res.status(204).end();
|
|
11
44
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/task-lists/[id]/route.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/task-lists/[id]/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { Response } from "express";
|
|
2
|
-
export declare const PATCH: (req: any, res: Response) => Promise<void>;
|
|
1
|
+
import type { Response, NextFunction } from "express";
|
|
2
|
+
export declare const PATCH: (req: any, res: Response, next: NextFunction) => Promise<void>;
|
|
3
3
|
//# sourceMappingURL=route.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/admin/users/[id]/role/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/[id]/role/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAGrD,eAAO,MAAM,KAAK,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAyBtE,CAAA"}
|
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
import { requirePermission } from "@meridianjs/auth";
|
|
2
|
-
export const PATCH = async (req, res) => {
|
|
2
|
+
export const PATCH = async (req, res, next) => {
|
|
3
3
|
requirePermission("role:assign")(req, res, async () => {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
4
|
+
try {
|
|
5
|
+
const userService = req.scope.resolve("userModuleService");
|
|
6
|
+
const { app_role_id } = req.body;
|
|
7
|
+
// Allow null to clear the role assignment
|
|
8
|
+
const updates = {
|
|
9
|
+
app_role_id: app_role_id ?? null,
|
|
10
|
+
};
|
|
11
|
+
const user = await userService.updateUser(req.params.id, updates);
|
|
12
|
+
res.json({
|
|
13
|
+
user: {
|
|
14
|
+
id: user.id,
|
|
15
|
+
email: user.email,
|
|
16
|
+
first_name: user.first_name,
|
|
17
|
+
last_name: user.last_name,
|
|
18
|
+
app_role_id: user.app_role_id,
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
next(err);
|
|
24
|
+
}
|
|
20
25
|
});
|
|
21
26
|
};
|
|
22
27
|
//# sourceMappingURL=route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/users/[id]/role/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/users/[id]/role/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzE,iBAAiB,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QACpD,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAQ,CAAA;YACjE,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;YAEhC,0CAA0C;YAC1C,MAAM,OAAO,GAA4B;gBACvC,WAAW,EAAE,WAAW,IAAI,IAAI;aACjC,CAAA;YAED,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;YACjE,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE;oBACJ,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B;aACF,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Response } from "express";
|
|
1
|
+
import type { Response, NextFunction } from "express";
|
|
2
2
|
/** DELETE /admin/users/:id/sessions — revoke all active sessions for a user (admin action). */
|
|
3
|
-
export declare const DELETE: (req: any, res: Response) => Promise<void>;
|
|
3
|
+
export declare const DELETE: (req: any, res: Response, next: NextFunction) => Promise<void>;
|
|
4
4
|
//# sourceMappingURL=route.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/admin/users/[id]/sessions/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/[id]/sessions/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAGrD,+FAA+F;AAC/F,eAAO,MAAM,MAAM,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAUvE,CAAA"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { requirePermission } from "@meridianjs/auth";
|
|
2
2
|
/** DELETE /admin/users/:id/sessions — revoke all active sessions for a user (admin action). */
|
|
3
|
-
export const DELETE = async (req, res) => {
|
|
3
|
+
export const DELETE = async (req, res, next) => {
|
|
4
4
|
requirePermission("member:remove")(req, res, async () => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
try {
|
|
6
|
+
const userService = req.scope.resolve("userModuleService");
|
|
7
|
+
await userService.revokeAllUserSessions(req.params.id);
|
|
8
|
+
res.json({ ok: true });
|
|
9
|
+
}
|
|
10
|
+
catch (err) {
|
|
11
|
+
next(err);
|
|
12
|
+
}
|
|
8
13
|
});
|
|
9
14
|
};
|
|
10
15
|
//# sourceMappingURL=route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/users/[id]/sessions/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,+FAA+F;AAC/F,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/users/[id]/sessions/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,+FAA+F;AAC/F,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,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAQ,CAAA;YACjE,MAAM,WAAW,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACtD,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { Response } from "express";
|
|
2
|
-
export declare const GET: (req: any, res: Response) => Promise<void>;
|
|
1
|
+
import type { Response, NextFunction } from "express";
|
|
2
|
+
export declare const GET: (req: any, res: Response, next: NextFunction) => Promise<void>;
|
|
3
3
|
//# sourceMappingURL=route.d.ts.map
|
|
@@ -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,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;AAGrD,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAapE,CAAA"}
|