vr-commons 1.0.74 → 1.0.76

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.
@@ -1,3 +1,4 @@
1
1
  import { Request, Response, NextFunction } from "express";
2
2
  import { UserRole } from "vr-models";
3
3
  export declare const checkUserAuthentication: (allowedRoles: UserRole[]) => (req: Request, res: Response, next: NextFunction) => Promise<void>;
4
+ export declare const checkAdminAuthentication: (allowedRoles: UserRole[]) => (req: Request, res: Response, next: NextFunction) => Promise<void>;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.checkUserAuthentication = void 0;
6
+ exports.checkAdminAuthentication = exports.checkUserAuthentication = void 0;
7
7
  const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
8
8
  const vr_models_1 = require("vr-models");
9
9
  const __1 = require("..");
@@ -83,3 +83,54 @@ const checkUserAuthentication = (allowedRoles) => async (req, res, next) => {
83
83
  }
84
84
  };
85
85
  exports.checkUserAuthentication = checkUserAuthentication;
86
+ const checkAdminAuthentication = (allowedRoles) => async (req, res, next) => {
87
+ try {
88
+ const token = req.cookies?.access_token;
89
+ if (!token) {
90
+ return (0, __1.sendErrorResponse)(res, "Authentication required", 401);
91
+ }
92
+ let payload;
93
+ try {
94
+ payload = jsonwebtoken_1.default.verify(token, process.env.JWT_SECRET);
95
+ }
96
+ catch (error) {
97
+ if (error instanceof jsonwebtoken_1.default.TokenExpiredError) {
98
+ return (0, __1.sendErrorResponse)(res, "Session expired. Please login again.", 401);
99
+ }
100
+ return (0, __1.sendErrorResponse)(res, "Invalid session", 401);
101
+ }
102
+ const user = await vr_models_1.User.findOne({
103
+ where: { id: payload.userId },
104
+ include: [
105
+ {
106
+ model: vr_models_1.SecurityClearance,
107
+ as: "securityClearance",
108
+ },
109
+ ],
110
+ });
111
+ if (!user || !user.securityClearance) {
112
+ return (0, __1.sendErrorResponse)(res, "User not found", 400);
113
+ }
114
+ // 🔐 Token versioning
115
+ if (user.tokenVersion !== payload.tokenVersion) {
116
+ return (0, __1.sendErrorResponse)(res, "Session expired", 401);
117
+ }
118
+ // 🧱 Role enforcement
119
+ if (!allowedRoles.includes(user.securityClearance.role)) {
120
+ return (0, __1.sendErrorResponse)(res, "Access denied", 403);
121
+ }
122
+ // Attach user to request (same as before)
123
+ req.userId = user.id;
124
+ req.firstName = user.firstName;
125
+ req.lastName = user.lastName;
126
+ req.scRole = user.securityClearance.role;
127
+ req.scLevel = user.securityClearance.level;
128
+ req.tokenVersion = user.tokenVersion;
129
+ next();
130
+ }
131
+ catch (error) {
132
+ console.error("Authentication error:", error);
133
+ next(error);
134
+ }
135
+ };
136
+ exports.checkAdminAuthentication = checkAdminAuthentication;
@@ -1,2 +1,2 @@
1
- export { checkUserAuthentication } from "./auth.middlewares";
1
+ export { checkUserAuthentication, checkAdminAuthentication, } from "./auth.middlewares";
2
2
  export { checkUserAccountStatus, checkIsUserBanned, checkIsUserSuspended, } from "./account.middlewares";
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkIsUserSuspended = exports.checkIsUserBanned = exports.checkUserAccountStatus = exports.checkUserAuthentication = void 0;
3
+ exports.checkIsUserSuspended = exports.checkIsUserBanned = exports.checkUserAccountStatus = exports.checkAdminAuthentication = 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
+ Object.defineProperty(exports, "checkAdminAuthentication", { enumerable: true, get: function () { return auth_middlewares_1.checkAdminAuthentication; } });
6
7
  var account_middlewares_1 = require("./account.middlewares");
7
8
  Object.defineProperty(exports, "checkUserAccountStatus", { enumerable: true, get: function () { return account_middlewares_1.checkUserAccountStatus; } });
8
9
  Object.defineProperty(exports, "checkIsUserBanned", { enumerable: true, get: function () { return account_middlewares_1.checkIsUserBanned; } });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vr-commons",
3
- "version": "1.0.74",
3
+ "version": "1.0.76",
4
4
  "description": "Shared functions package",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",