Compare commits
No commits in common. "0220f468aceec91203474cf1e2422b29702fe988" and "d8309af3137ea6a98a1b275ec1463b3518b33402" have entirely different histories.
0220f468ac
...
d8309af313
5 changed files with 11 additions and 40 deletions
|
@ -1,11 +1,9 @@
|
||||||
import { Request, Response } from "express";
|
import { Request, Response } from "express";
|
||||||
import MissionService from "../../../service/operation/missionService";
|
import MissionService from "../../../service/operation/missionService";
|
||||||
import MissionFactory from "../../../factory/admin/operation/mission";
|
import MissionFactory from "../../../factory/admin/operation/mission";
|
||||||
import { DeleteMissionCommand } from "../../../command/operation/mission/missionCommand";
|
import { DeleteMissionCommand, SyncMissionCommand } from "../../../command/operation/mission/missionCommand";
|
||||||
import MissionCommandHandler from "../../../command/operation/mission/missionCommandHandler";
|
import MissionCommandHandler from "../../../command/operation/mission/missionCommandHandler";
|
||||||
import SocketServer from "../../../websocket";
|
import SocketServer from "../../../websocket";
|
||||||
import PermissionHelper from "../../../helpers/permissionHelper";
|
|
||||||
import moment from "moment";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description get all missions
|
* @description get all missions
|
||||||
|
@ -18,15 +16,7 @@ export async function getAllMissions(req: Request, res: Response): Promise<any>
|
||||||
let count = parseInt((req.query.count as string) ?? "25");
|
let count = parseInt((req.query.count as string) ?? "25");
|
||||||
let noLimit = req.query.noLimit === "true";
|
let noLimit = req.query.noLimit === "true";
|
||||||
|
|
||||||
let maxVisInDays = PermissionHelper.canValue(req.permissions, "maxVisInDays", true);
|
let [missions, total] = await MissionService.getAll({ offset, count, noLimit });
|
||||||
let maxVisByMissions = PermissionHelper.canValue(req.permissions, "maxVisByMissions", true);
|
|
||||||
|
|
||||||
let [missions, total] = await MissionService.getAll({
|
|
||||||
offset: maxVisByMissions != "" && parseInt(maxVisByMissions) <= 25 ? 0 : offset,
|
|
||||||
count: maxVisByMissions != "" ? Math.min(parseInt(maxVisByMissions), (offset + 1) * count) : count,
|
|
||||||
noLimit: maxVisByMissions != "" ? false : noLimit,
|
|
||||||
laterThan: maxVisInDays != "" ? moment().subtract(parseInt(maxVisInDays), "days").toDate() : undefined,
|
|
||||||
});
|
|
||||||
|
|
||||||
res.json({
|
res.json({
|
||||||
missions: MissionFactory.mapToBaseShort(missions),
|
missions: MissionFactory.mapToBaseShort(missions),
|
||||||
|
|
|
@ -55,10 +55,7 @@ export abstract class JWTHelper {
|
||||||
let rolePermissions =
|
let rolePermissions =
|
||||||
userRoles.length != 0 ? await RolePermissionService.getByRoles(userRoles.map((e) => e.id)) : [];
|
userRoles.length != 0 ? await RolePermissionService.getByRoles(userRoles.map((e) => e.id)) : [];
|
||||||
let rolePermissionStrings = rolePermissions.map((e) => e.permission);
|
let rolePermissionStrings = rolePermissions.map((e) => e.permission);
|
||||||
let permissionObject = PermissionHelper.convertToObject(
|
let permissionObject = PermissionHelper.convertToObject([...userPermissionStrings, ...rolePermissionStrings]);
|
||||||
[...userPermissionStrings, ...rolePermissionStrings],
|
|
||||||
isOwner
|
|
||||||
);
|
|
||||||
|
|
||||||
let jwtData: JWTToken = {
|
let jwtData: JWTToken = {
|
||||||
userId: id,
|
userId: id,
|
||||||
|
|
|
@ -19,8 +19,8 @@ export default class PermissionHelper {
|
||||||
section: PermissionSection,
|
section: PermissionSection,
|
||||||
module?: PermissionModule
|
module?: PermissionModule
|
||||||
) {
|
) {
|
||||||
if (type == "admin") return permissions?.admin ?? permissions?.adminByOwner ?? false;
|
if (type == "admin") return permissions?.admin ?? false;
|
||||||
if (permissions?.admin || permissions?.adminByOwner) return true;
|
if (permissions?.admin) return true;
|
||||||
if (
|
if (
|
||||||
(!module &&
|
(!module &&
|
||||||
permissions[section] != undefined &&
|
permissions[section] != undefined &&
|
||||||
|
@ -52,8 +52,8 @@ export default class PermissionHelper {
|
||||||
type: PermissionType | "admin",
|
type: PermissionType | "admin",
|
||||||
section: PermissionSection
|
section: PermissionSection
|
||||||
): boolean {
|
): boolean {
|
||||||
if (type == "admin") return permissions?.admin ?? permissions?.adminByOwner ?? false;
|
if (type == "admin") return permissions?.admin ?? false;
|
||||||
if (permissions?.admin || permissions?.adminByOwner) return true;
|
if (permissions?.admin) return true;
|
||||||
if (
|
if (
|
||||||
permissions[section]?.all == "*" ||
|
permissions[section]?.all == "*" ||
|
||||||
permissions[section]?.all?.includes(type) ||
|
permissions[section]?.all?.includes(type) ||
|
||||||
|
@ -76,7 +76,7 @@ export default class PermissionHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
static canValue(permissions: PermissionObject, key: string, emptyIfAdmin: boolean = false): string {
|
static canValue(permissions: PermissionObject, key: string, emptyIfAdmin: boolean = false): string {
|
||||||
if (emptyIfAdmin && (permissions.admin || permissions.adminByOwner)) return "";
|
if (emptyIfAdmin && permissions.admin) return "";
|
||||||
return permissions?.additional?.[key] ?? "";
|
return permissions?.additional?.[key] ?? "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ export default class PermissionHelper {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
static convertToObject(permissions: Array<PermissionString>, isOwner: boolean = false): PermissionObject {
|
static convertToObject(permissions: Array<PermissionString>): PermissionObject {
|
||||||
let isAdmin = permissions.includes("*");
|
let isAdmin = permissions.includes("*");
|
||||||
|
|
||||||
let additional: { [key: string]: string } = {};
|
let additional: { [key: string]: string } = {};
|
||||||
|
@ -181,7 +181,6 @@ export default class PermissionHelper {
|
||||||
if (isAdmin) {
|
if (isAdmin) {
|
||||||
return {
|
return {
|
||||||
admin: true,
|
admin: true,
|
||||||
adminByOwner: isOwner,
|
|
||||||
...(Object.keys(additional).length > 0 && { additional }),
|
...(Object.keys(additional).length > 0 && { additional }),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -231,7 +230,6 @@ export default class PermissionHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
adminByOwner: isOwner,
|
|
||||||
...output,
|
...output,
|
||||||
...(Object.keys(additional).length > 0 && { additional }),
|
...(Object.keys(additional).length > 0 && { additional }),
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import { Brackets, IsNull, MoreThanOrEqual } from "typeorm";
|
|
||||||
import { dataSource } from "../../data-source";
|
import { dataSource } from "../../data-source";
|
||||||
import { mission } from "../../entity/operation/mission";
|
import { mission } from "../../entity/operation/mission";
|
||||||
import DatabaseActionException from "../../exceptions/databaseActionException";
|
import DatabaseActionException from "../../exceptions/databaseActionException";
|
||||||
|
@ -12,32 +11,20 @@ export default abstract class MissionService {
|
||||||
offset = 0,
|
offset = 0,
|
||||||
count = 25,
|
count = 25,
|
||||||
noLimit = false,
|
noLimit = false,
|
||||||
laterThan = undefined,
|
|
||||||
}: {
|
}: {
|
||||||
offset?: number;
|
offset?: number;
|
||||||
count?: number;
|
count?: number;
|
||||||
noLimit?: boolean;
|
noLimit?: boolean;
|
||||||
laterThan?: Date;
|
|
||||||
}): Promise<[Array<mission>, number]> {
|
}): Promise<[Array<mission>, number]> {
|
||||||
let query = dataSource.getRepository(mission).createQueryBuilder("mission");
|
let query = dataSource.getRepository(mission).createQueryBuilder("mission");
|
||||||
|
|
||||||
if (laterThan != undefined) {
|
|
||||||
query = query
|
|
||||||
.where(
|
|
||||||
new Brackets((qb) => {
|
|
||||||
qb.where({ mission_start: IsNull() }).andWhere({ createdAt: MoreThanOrEqual(laterThan) });
|
|
||||||
})
|
|
||||||
)
|
|
||||||
.orWhere({ mission_start: MoreThanOrEqual(laterThan) });
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!noLimit) {
|
if (!noLimit) {
|
||||||
query = query.offset(offset).limit(count);
|
query = query.offset(offset).limit(count);
|
||||||
}
|
}
|
||||||
|
|
||||||
return await query
|
return await query
|
||||||
.orderBy("mission.mission_start", "DESC")
|
.orderBy("mission.mission_start")
|
||||||
.addOrderBy("mission.createdAt", "DESC")
|
.addOrderBy("mission.createdAt")
|
||||||
.getManyAndCount()
|
.getManyAndCount()
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
return res;
|
return res;
|
||||||
|
|
|
@ -18,7 +18,6 @@ export type PermissionObject = {
|
||||||
} & { all?: Array<PermissionType> | "*" };
|
} & { all?: Array<PermissionType> | "*" };
|
||||||
} & {
|
} & {
|
||||||
admin?: boolean;
|
admin?: boolean;
|
||||||
adminByOwner?: boolean;
|
|
||||||
} & {
|
} & {
|
||||||
additional?: { [key: string]: string };
|
additional?: { [key: string]: string };
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue