vr-commons 1.0.44 → 1.0.46
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/middlewares/account.middlewares.d.ts +4 -0
- package/dist/middlewares/account.middlewares.js +64 -0
- package/dist/middlewares/index.d.ts +1 -0
- package/dist/middlewares/index.js +5 -1
- package/dist/utils/account.utils.d.ts +17 -0
- package/dist/utils/account.utils.js +73 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +4 -1
- package/package.json +1 -1
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Request, Response, NextFunction } from "express";
|
|
2
|
+
export declare function checkIsUserBanned(req: Request, res: Response, next: NextFunction): Promise<void>;
|
|
3
|
+
export declare function checkIsUserSuspended(req: Request, res: Response, next: NextFunction): Promise<void>;
|
|
4
|
+
export declare function checkUserAccountStatus(req: Request, res: Response, next: NextFunction): Promise<void>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkIsUserBanned = checkIsUserBanned;
|
|
4
|
+
exports.checkIsUserSuspended = checkIsUserSuspended;
|
|
5
|
+
exports.checkUserAccountStatus = checkUserAccountStatus;
|
|
6
|
+
const account_utils_1 = require("../utils/account.utils");
|
|
7
|
+
const response_utils_1 = require("../utils/response.utils");
|
|
8
|
+
// Check if user is banned
|
|
9
|
+
async function checkIsUserBanned(req, res, next) {
|
|
10
|
+
try {
|
|
11
|
+
const userId = req.userId;
|
|
12
|
+
if (!userId) {
|
|
13
|
+
return next();
|
|
14
|
+
}
|
|
15
|
+
const { isBanned, banDetails } = await (0, account_utils_1.checkBanStatus)(userId);
|
|
16
|
+
if (isBanned && banDetails && !banDetails.revokedAt) {
|
|
17
|
+
const message = banDetails.isPermanent
|
|
18
|
+
? "Your account has been permanently banned"
|
|
19
|
+
: `Your account was banned at: ${banDetails.bannedAt.toISOString()}`;
|
|
20
|
+
return (0, response_utils_1.sendErrorResponse)(res, message, 403, banDetails);
|
|
21
|
+
}
|
|
22
|
+
next();
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
next(error);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Check if user is suspended
|
|
29
|
+
async function checkIsUserSuspended(req, res, next) {
|
|
30
|
+
try {
|
|
31
|
+
const userId = req.userId;
|
|
32
|
+
if (!userId) {
|
|
33
|
+
return next();
|
|
34
|
+
}
|
|
35
|
+
const { isSuspended, suspensionDetails } = await (0, account_utils_1.checkSuspensionStatus)(userId);
|
|
36
|
+
if (isSuspended && suspensionDetails) {
|
|
37
|
+
const daysRemaining = Math.ceil((new Date(suspensionDetails.endsAt).getTime() - new Date().getTime()) /
|
|
38
|
+
(1000 * 60 * 60 * 24));
|
|
39
|
+
const message = `Your account is suspended for ${daysRemaining} more day(s) until ${suspensionDetails.endsAt.toISOString()}`;
|
|
40
|
+
return (0, response_utils_1.sendErrorResponse)(res, message, 403, suspensionDetails);
|
|
41
|
+
}
|
|
42
|
+
next();
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
next(error);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Combined check for both ban and suspension
|
|
49
|
+
async function checkUserAccountStatus(req, res, next) {
|
|
50
|
+
try {
|
|
51
|
+
const userId = req.userId;
|
|
52
|
+
if (!userId) {
|
|
53
|
+
return next();
|
|
54
|
+
}
|
|
55
|
+
const result = await (0, account_utils_1.checkIsUserBannedOrSuspended)(userId);
|
|
56
|
+
if (result.isRestricted) {
|
|
57
|
+
return (0, response_utils_1.sendErrorResponse)(res, result.message, 403, result.details);
|
|
58
|
+
}
|
|
59
|
+
next();
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
next(error);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.checkUserAuthentication = void 0;
|
|
3
|
+
exports.checkIsUserSuspended = exports.checkIsUserBanned = exports.checkUserAccountStatus = exports.checkUserAuthentication = void 0;
|
|
4
4
|
var auth_middlewares_1 = require("./auth.middlewares");
|
|
5
5
|
Object.defineProperty(exports, "checkUserAuthentication", { enumerable: true, get: function () { return auth_middlewares_1.checkUserAuthentication; } });
|
|
6
|
+
var account_middlewares_1 = require("./account.middlewares");
|
|
7
|
+
Object.defineProperty(exports, "checkUserAccountStatus", { enumerable: true, get: function () { return account_middlewares_1.checkUserAccountStatus; } });
|
|
8
|
+
Object.defineProperty(exports, "checkIsUserBanned", { enumerable: true, get: function () { return account_middlewares_1.checkIsUserBanned; } });
|
|
9
|
+
Object.defineProperty(exports, "checkIsUserSuspended", { enumerable: true, get: function () { return account_middlewares_1.checkIsUserSuspended; } });
|
|
@@ -1,4 +1,21 @@
|
|
|
1
1
|
import { Transaction } from "sequelize";
|
|
2
|
+
import { Ban, Suspension } from "vr-models";
|
|
3
|
+
export interface BanStatus {
|
|
4
|
+
isBanned: boolean;
|
|
5
|
+
banDetails?: Ban | null;
|
|
6
|
+
}
|
|
7
|
+
export interface SuspensionStatus {
|
|
8
|
+
isSuspended: boolean;
|
|
9
|
+
suspensionDetails?: Suspension | null;
|
|
10
|
+
}
|
|
11
|
+
export declare function checkBanStatus(userId: string): Promise<BanStatus>;
|
|
12
|
+
export declare function checkSuspensionStatus(userId: string): Promise<SuspensionStatus>;
|
|
13
|
+
export declare const checkIsUserBannedOrSuspended: (userId: string) => Promise<{
|
|
14
|
+
isRestricted: boolean;
|
|
15
|
+
status?: "banned" | "suspended";
|
|
16
|
+
message?: string;
|
|
17
|
+
details?: Ban | Suspension;
|
|
18
|
+
}>;
|
|
2
19
|
export declare const checkAccountDependencies: (userId: string, transaction?: any) => Promise<{
|
|
3
20
|
hasDependencies: boolean;
|
|
4
21
|
activeDevicePlans: number;
|
|
@@ -1,8 +1,80 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hasActiveDependencies = exports.checkAccountDependencies = void 0;
|
|
3
|
+
exports.hasActiveDependencies = exports.checkAccountDependencies = exports.checkIsUserBannedOrSuspended = void 0;
|
|
4
|
+
exports.checkBanStatus = checkBanStatus;
|
|
5
|
+
exports.checkSuspensionStatus = checkSuspensionStatus;
|
|
4
6
|
const vr_models_1 = require("vr-models");
|
|
5
7
|
// Import other models as needed
|
|
8
|
+
const sequelize_1 = require("sequelize");
|
|
9
|
+
const vr_models_2 = require("vr-models");
|
|
10
|
+
// Check if user is banned
|
|
11
|
+
async function checkBanStatus(userId) {
|
|
12
|
+
const where = {
|
|
13
|
+
userId,
|
|
14
|
+
revokedAt: { [sequelize_1.Op.is]: null },
|
|
15
|
+
};
|
|
16
|
+
const activeBan = await vr_models_2.Ban.findOne({
|
|
17
|
+
where,
|
|
18
|
+
order: [["bannedAt", "DESC"]],
|
|
19
|
+
});
|
|
20
|
+
return {
|
|
21
|
+
isBanned: !!activeBan,
|
|
22
|
+
banDetails: activeBan,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
// Check if user is suspended
|
|
26
|
+
async function checkSuspensionStatus(userId) {
|
|
27
|
+
const where = {
|
|
28
|
+
userId,
|
|
29
|
+
isActive: true,
|
|
30
|
+
endsAt: { [sequelize_1.Op.gt]: new Date() },
|
|
31
|
+
revokedAt: { [sequelize_1.Op.is]: null },
|
|
32
|
+
};
|
|
33
|
+
const activeSuspension = await vr_models_2.Suspension.findOne({
|
|
34
|
+
where,
|
|
35
|
+
order: [["startedAt", "DESC"]],
|
|
36
|
+
});
|
|
37
|
+
return {
|
|
38
|
+
isSuspended: !!activeSuspension,
|
|
39
|
+
suspensionDetails: activeSuspension,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// Main function to check if user is banned/suspended
|
|
43
|
+
const checkIsUserBannedOrSuspended = async (userId) => {
|
|
44
|
+
try {
|
|
45
|
+
const [banStatus, suspensionStatus] = await Promise.all([
|
|
46
|
+
checkBanStatus(userId),
|
|
47
|
+
checkSuspensionStatus(userId),
|
|
48
|
+
]);
|
|
49
|
+
if (banStatus.isBanned && banStatus.banDetails) {
|
|
50
|
+
return {
|
|
51
|
+
isRestricted: true,
|
|
52
|
+
status: "banned",
|
|
53
|
+
message: banStatus.banDetails.isPermanent
|
|
54
|
+
? "Your account has been permanently banned"
|
|
55
|
+
: `Your account was banned at: ${banStatus.banDetails.bannedAt.toISOString()}`,
|
|
56
|
+
details: banStatus.banDetails,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
if (suspensionStatus.isSuspended && suspensionStatus.suspensionDetails) {
|
|
60
|
+
const daysRemaining = Math.ceil((new Date(suspensionStatus.suspensionDetails.endsAt).getTime() -
|
|
61
|
+
new Date().getTime()) /
|
|
62
|
+
(1000 * 60 * 60 * 24));
|
|
63
|
+
return {
|
|
64
|
+
isRestricted: true,
|
|
65
|
+
status: "suspended",
|
|
66
|
+
message: `Your account is suspended for ${daysRemaining} more day(s) until ${suspensionStatus.suspensionDetails.endsAt.toISOString()}`,
|
|
67
|
+
details: suspensionStatus.suspensionDetails,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return { isRestricted: false };
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
console.error("Error checking user status:", err);
|
|
74
|
+
throw err;
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
exports.checkIsUserBannedOrSuspended = checkIsUserBannedOrSuspended;
|
|
6
78
|
const checkAccountDependencies = async (userId, transaction) => {
|
|
7
79
|
const messages = [];
|
|
8
80
|
// 1. Check for active device payment plans
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { checkAccountDependencies, hasActiveDependencies, } from "./account.utils";
|
|
1
|
+
export { checkAccountDependencies, hasActiveDependencies, checkBanStatus, checkIsUserBannedOrSuspended, checkSuspensionStatus, } from "./account.utils";
|
|
2
2
|
export { generateAdminToken, generatePassengerToken, generateRiderToken, verifyToken, } from "./authTokens.utils";
|
|
3
3
|
export { logEvent } from "./eventLog.utils";
|
|
4
4
|
export { sendSuccessResponse, sendErrorResponse } from "./response.utils";
|
package/dist/utils/index.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.softDeleteUser = exports.hashPassword = exports.validatePassword = exports.validateUniqueFields = exports.generateJacketId = exports.getSortOrder = exports.generateEventSearchConditions = exports.generateUserSearchConditions = exports.findSecurityClearanceByRole = exports.getUsersByRole = exports.getUserById = exports.isAccountAccessible = exports.canModifyAccount = exports.hasAllPermissions = exports.hasAnyPermission = exports.hasPermission = exports.hasRole = exports.formatUserListResponse = exports.formatUserProfile = exports.sendErrorResponse = exports.sendSuccessResponse = exports.logEvent = exports.verifyToken = exports.generateRiderToken = exports.generatePassengerToken = exports.generateAdminToken = exports.hasActiveDependencies = exports.checkAccountDependencies = void 0;
|
|
3
|
+
exports.softDeleteUser = exports.hashPassword = exports.validatePassword = exports.validateUniqueFields = exports.generateJacketId = exports.getSortOrder = exports.generateEventSearchConditions = exports.generateUserSearchConditions = exports.findSecurityClearanceByRole = exports.getUsersByRole = exports.getUserById = exports.isAccountAccessible = exports.canModifyAccount = exports.hasAllPermissions = exports.hasAnyPermission = exports.hasPermission = exports.hasRole = exports.formatUserListResponse = exports.formatUserProfile = exports.sendErrorResponse = exports.sendSuccessResponse = exports.logEvent = exports.verifyToken = exports.generateRiderToken = exports.generatePassengerToken = exports.generateAdminToken = exports.checkSuspensionStatus = exports.checkIsUserBannedOrSuspended = exports.checkBanStatus = exports.hasActiveDependencies = exports.checkAccountDependencies = void 0;
|
|
4
4
|
var account_utils_1 = require("./account.utils");
|
|
5
5
|
Object.defineProperty(exports, "checkAccountDependencies", { enumerable: true, get: function () { return account_utils_1.checkAccountDependencies; } });
|
|
6
6
|
Object.defineProperty(exports, "hasActiveDependencies", { enumerable: true, get: function () { return account_utils_1.hasActiveDependencies; } });
|
|
7
|
+
Object.defineProperty(exports, "checkBanStatus", { enumerable: true, get: function () { return account_utils_1.checkBanStatus; } });
|
|
8
|
+
Object.defineProperty(exports, "checkIsUserBannedOrSuspended", { enumerable: true, get: function () { return account_utils_1.checkIsUserBannedOrSuspended; } });
|
|
9
|
+
Object.defineProperty(exports, "checkSuspensionStatus", { enumerable: true, get: function () { return account_utils_1.checkSuspensionStatus; } });
|
|
7
10
|
var authTokens_utils_1 = require("./authTokens.utils");
|
|
8
11
|
Object.defineProperty(exports, "generateAdminToken", { enumerable: true, get: function () { return authTokens_utils_1.generateAdminToken; } });
|
|
9
12
|
Object.defineProperty(exports, "generatePassengerToken", { enumerable: true, get: function () { return authTokens_utils_1.generatePassengerToken; } });
|