@meridianjs/meridian 1.6.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/admin/reporting/time-logs/route.d.ts.map +1 -1
- package/dist/api/admin/reporting/time-logs/route.js +25 -16
- package/dist/api/admin/reporting/time-logs/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 +9 -2
- package/dist/api/admin/users/invitations/route.js.map +1 -1
- package/dist/api/admin/users/map/route.d.ts +8 -0
- package/dist/api/admin/users/map/route.d.ts.map +1 -0
- package/dist/api/admin/users/map/route.js +23 -0
- package/dist/api/admin/users/map/route.js.map +1 -0
- package/dist/api/admin/users/route.d.ts.map +1 -1
- package/dist/api/admin/users/route.js +10 -1
- package/dist/api/admin/users/route.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/reporting/time-logs/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/reporting/time-logs/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBA+DhD,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export const GET = async (req, res) => {
|
|
2
2
|
const issueService = req.scope.resolve("issueModuleService");
|
|
3
|
-
const { user_id, project_id, workspace_id, from, to } = req.query;
|
|
3
|
+
const { user_id, project_id, workspace_id, workspace_ids, from, to } = req.query;
|
|
4
4
|
const roles = req.user?.roles ?? [];
|
|
5
5
|
const permissions = req.user?.permissions ?? [];
|
|
6
6
|
const isPrivileged = roles.includes("super-admin") || roles.includes("admin") || permissions.includes("workspace:admin");
|
|
@@ -9,8 +9,16 @@ export const GET = async (req, res) => {
|
|
|
9
9
|
filters.user_id = user_id;
|
|
10
10
|
if (project_id)
|
|
11
11
|
filters.project_id = project_id;
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
// Support both single workspace_id and comma-separated workspace_ids
|
|
13
|
+
const wsIds = workspace_ids
|
|
14
|
+
? workspace_ids.split(",").filter(Boolean)
|
|
15
|
+
: workspace_id
|
|
16
|
+
? [workspace_id]
|
|
17
|
+
: [];
|
|
18
|
+
if (wsIds.length === 1)
|
|
19
|
+
filters.workspace_id = wsIds[0];
|
|
20
|
+
else if (wsIds.length > 1)
|
|
21
|
+
filters.workspace_id = wsIds;
|
|
14
22
|
if (from || to) {
|
|
15
23
|
const dateFilter = {};
|
|
16
24
|
if (from)
|
|
@@ -19,32 +27,33 @@ export const GET = async (req, res) => {
|
|
|
19
27
|
dateFilter.$lte = new Date(to);
|
|
20
28
|
filters.logged_date = dateFilter;
|
|
21
29
|
}
|
|
22
|
-
if (!isPrivileged &&
|
|
30
|
+
if (!isPrivileged && wsIds.length > 0) {
|
|
23
31
|
const userId = req.user?.id;
|
|
24
32
|
const workspaceMemberService = req.scope.resolve("workspaceMemberModuleService");
|
|
25
|
-
const membership = await workspaceMemberService.getMembership(workspace_id, userId);
|
|
26
|
-
if (!membership) {
|
|
27
|
-
res.status(403).json({ error: { message: "Forbidden" } });
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
33
|
const teamMemberService = req.scope.resolve("teamMemberModuleService");
|
|
31
34
|
const projectMemberService = req.scope.resolve("projectMemberModuleService");
|
|
32
|
-
|
|
33
|
-
const
|
|
35
|
+
// Verify membership in each requested workspace, collect accessible projects
|
|
36
|
+
const allAccessibleProjectIds = [];
|
|
37
|
+
for (const wid of wsIds) {
|
|
38
|
+
const membership = await workspaceMemberService.getMembership(wid, userId);
|
|
39
|
+
if (!membership)
|
|
40
|
+
continue; // skip workspaces user isn't a member of
|
|
41
|
+
const userTeamIds = await teamMemberService.getUserTeamIds(userId);
|
|
42
|
+
const projectIds = await projectMemberService.getAccessibleProjectIds(userId, userTeamIds);
|
|
43
|
+
allAccessibleProjectIds.push(...projectIds);
|
|
44
|
+
}
|
|
34
45
|
if (project_id) {
|
|
35
|
-
|
|
36
|
-
if (!accessibleProjectIds.includes(project_id)) {
|
|
46
|
+
if (!allAccessibleProjectIds.includes(project_id)) {
|
|
37
47
|
res.json({ time_logs: [], total_minutes: 0 });
|
|
38
48
|
return;
|
|
39
49
|
}
|
|
40
50
|
}
|
|
41
51
|
else {
|
|
42
|
-
|
|
43
|
-
if (accessibleProjectIds.length === 0) {
|
|
52
|
+
if (allAccessibleProjectIds.length === 0) {
|
|
44
53
|
res.json({ time_logs: [], total_minutes: 0 });
|
|
45
54
|
return;
|
|
46
55
|
}
|
|
47
|
-
filters.project_id =
|
|
56
|
+
filters.project_id = allAccessibleProjectIds;
|
|
48
57
|
}
|
|
49
58
|
}
|
|
50
59
|
const time_logs = await issueService.listTimeLogsForReporting(filters);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/reporting/time-logs/route.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAuB,CAAA;IAClF,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,KAA2C,CAAA;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/reporting/time-logs/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/users/invitations/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/users/invitations/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAgDhD,CAAA"}
|
|
@@ -3,7 +3,14 @@ export const GET = async (req, res) => {
|
|
|
3
3
|
requireRoles("super-admin", "admin")(req, res, async () => {
|
|
4
4
|
const invitationService = req.scope.resolve("invitationModuleService");
|
|
5
5
|
const workspaceService = req.scope.resolve("workspaceModuleService");
|
|
6
|
-
const
|
|
6
|
+
const limit = Math.min(Number(req.query.limit) || 20, 100);
|
|
7
|
+
const offset = Number(req.query.offset) || 0;
|
|
8
|
+
const q = typeof req.query.q === "string" ? req.query.q.trim() : "";
|
|
9
|
+
const filters = { status: "pending" };
|
|
10
|
+
if (q) {
|
|
11
|
+
filters.email = { $ilike: `%${q}%` };
|
|
12
|
+
}
|
|
13
|
+
const [invitations, totalCount] = await invitationService.listAndCountInvitations(filters, { limit, offset });
|
|
7
14
|
// Enrich with workspace name where applicable
|
|
8
15
|
const workspaceCache = new Map();
|
|
9
16
|
const enriched = await Promise.all(invitations.map(async (inv) => {
|
|
@@ -32,7 +39,7 @@ export const GET = async (req, res) => {
|
|
|
32
39
|
created_at: inv.created_at,
|
|
33
40
|
};
|
|
34
41
|
}));
|
|
35
|
-
res.json({ invitations: enriched, count:
|
|
42
|
+
res.json({ invitations: enriched, count: totalCount, limit, offset });
|
|
36
43
|
});
|
|
37
44
|
};
|
|
38
45
|
//# sourceMappingURL=route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/users/invitations/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,iBAAiB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAAQ,CAAA;QAC7E,MAAM,gBAAgB,GAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAQ,CAAA;QAE5E,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,iBAAiB,CAAC,uBAAuB,CAAC,
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/users/invitations/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Response, NextFunction } from "express";
|
|
2
|
+
/**
|
|
3
|
+
* Lightweight endpoint that returns ALL users with only the fields needed
|
|
4
|
+
* for lookup maps and dropdowns. No pagination — intended for in-app
|
|
5
|
+
* reference data (user names, initials, avatars).
|
|
6
|
+
*/
|
|
7
|
+
export declare const GET: (req: any, res: Response, next: NextFunction) => Promise<void>;
|
|
8
|
+
//# sourceMappingURL=route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/users/map/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAErD;;;;GAIG;AACH,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAepE,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight endpoint that returns ALL users with only the fields needed
|
|
3
|
+
* for lookup maps and dropdowns. No pagination — intended for in-app
|
|
4
|
+
* reference data (user names, initials, avatars).
|
|
5
|
+
*/
|
|
6
|
+
export const GET = async (req, res, next) => {
|
|
7
|
+
try {
|
|
8
|
+
const userService = req.scope.resolve("userModuleService");
|
|
9
|
+
const users = await userService.listUsers({});
|
|
10
|
+
const mapped = users.map((u) => ({
|
|
11
|
+
id: u.id,
|
|
12
|
+
email: u.email,
|
|
13
|
+
first_name: u.first_name,
|
|
14
|
+
last_name: u.last_name,
|
|
15
|
+
avatar_url: u.avatar_url ?? null,
|
|
16
|
+
}));
|
|
17
|
+
res.json({ users: mapped });
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
next(err);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/users/map/route.ts"],"names":[],"mappings":"AAEA;;;;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,CAAQ,CAAA;QACjE,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAI,KAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,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;SACjC,CAAC,CAAC,CAAA;QACH,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IAC7B,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/users/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAErD,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,
|
|
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;AAErD,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAsBpE,CAAA"}
|
|
@@ -3,7 +3,16 @@ export const GET = async (req, res, next) => {
|
|
|
3
3
|
const userService = req.scope.resolve("userModuleService");
|
|
4
4
|
const limit = Math.min(Number(req.query.limit) || 20, 100);
|
|
5
5
|
const offset = Number(req.query.offset) || 0;
|
|
6
|
-
const
|
|
6
|
+
const q = typeof req.query.q === "string" ? req.query.q.trim() : "";
|
|
7
|
+
const filters = {};
|
|
8
|
+
if (q) {
|
|
9
|
+
filters.$or = [
|
|
10
|
+
{ email: { $ilike: `%${q}%` } },
|
|
11
|
+
{ first_name: { $ilike: `%${q}%` } },
|
|
12
|
+
{ last_name: { $ilike: `%${q}%` } },
|
|
13
|
+
];
|
|
14
|
+
}
|
|
15
|
+
const [users, count] = await userService.listAndCountUsers(filters, { limit, offset });
|
|
7
16
|
const safeUsers = users.map(({ password_hash: _, ...u }) => u);
|
|
8
17
|
res.json({ users: safeUsers, count, limit, offset });
|
|
9
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/users/route.ts"],"names":[],"mappings":"AAEA,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,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,WAAW,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/users/route.ts"],"names":[],"mappings":"AAEA,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,CAAC,CAAA;QACtF,MAAM,SAAS,GAAI,KAAe,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;QACzE,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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meridianjs/meridian",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"description": "Default API routes, workflows, links, and subscribers for Meridian applications",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -20,13 +20,13 @@
|
|
|
20
20
|
"prepublishOnly": "cd ../.. && npm run check:routes && cd packages/meridian && npm run build"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@meridianjs/framework": "^1.
|
|
24
|
-
"@meridianjs/framework-utils": "^1.
|
|
25
|
-
"@meridianjs/workflow-engine": "^1.
|
|
26
|
-
"@meridianjs/types": "^1.
|
|
23
|
+
"@meridianjs/framework": "^1.8.0",
|
|
24
|
+
"@meridianjs/framework-utils": "^1.8.0",
|
|
25
|
+
"@meridianjs/workflow-engine": "^1.8.0",
|
|
26
|
+
"@meridianjs/types": "^1.8.0",
|
|
27
27
|
"@meridianjs/user": "^1.0.0",
|
|
28
28
|
"@meridianjs/workspace": "^1.1.0",
|
|
29
|
-
"@meridianjs/auth": "^1.
|
|
29
|
+
"@meridianjs/auth": "^1.8.0",
|
|
30
30
|
"@meridianjs/project": "^1.0.0",
|
|
31
31
|
"@meridianjs/issue": "^1.0.0",
|
|
32
32
|
"@meridianjs/sprint": "^1.0.0",
|