mbkauthe 1.1.17 → 1.2.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.
@@ -28,14 +28,14 @@ async function validateSession(req, res, next) {
28
28
  };
29
29
  }
30
30
  } catch (err) {
31
- console.error("Session validation error:", err);
31
+ console.error("[mbkauthe] Session validation error:", err);
32
32
  return res.status(500).json({ success: false, message: "Internal Server Error" });
33
33
  }
34
34
  }
35
35
 
36
36
  if (!req.session.user) {
37
- console.log("User not authenticated");
38
- console.log(req.session.user);
37
+ console.log("[mbkauthe] User not authenticated");
38
+ console.log("[mbkauthe]: ", req.session.user);
39
39
  return res.render("Error/dError.handlebars", {
40
40
  layout: false,
41
41
  code: 401,
@@ -53,7 +53,7 @@ async function validateSession(req, res, next) {
53
53
  const userResult = result.rows[0];
54
54
 
55
55
  if (result.rows.length === 0 || userResult.SessionId !== sessionId) {
56
- console.log(`Session invalidated for user "${req.session.user.username}"`);
56
+ console.log(`[mbkauthe] Session invalidated for user "${req.session.user.username}"`);
57
57
  req.session.destroy();
58
58
  const cookieOptions = getCookieOptions();
59
59
  res.clearCookie("mbkauthe.sid", cookieOptions);
@@ -70,7 +70,7 @@ async function validateSession(req, res, next) {
70
70
  }
71
71
 
72
72
  if (!userResult.Active) {
73
- console.log(`Account is inactive for user "${req.session.user.username}"`);
73
+ console.log(`[mbkauthe] Account is inactive for user "${req.session.user.username}"`);
74
74
  req.session.destroy();
75
75
  const cookieOptions = getCookieOptions();
76
76
  res.clearCookie("mbkauthe.sid", cookieOptions);
@@ -89,7 +89,7 @@ async function validateSession(req, res, next) {
89
89
  if (userResult.Role !== "SuperAdmin") {
90
90
  const allowedApps = userResult.AllowedApps;
91
91
  if (!allowedApps || !allowedApps.some(app => app.toLowerCase() === mbkautheVar.APP_NAME.toLowerCase())) {
92
- console.warn(`User \"${req.session.user.username}\" is not authorized to use the application \"${mbkautheVar.APP_NAME}\"`);
92
+ console.warn(`[mbkauthe] User \"${req.session.user.username}\" is not authorized to use the application \"${mbkautheVar.APP_NAME}\"`);
93
93
  req.session.destroy();
94
94
  const cookieOptions = getCookieOptions();
95
95
  res.clearCookie("mbkauthe.sid", cookieOptions);
@@ -108,7 +108,7 @@ async function validateSession(req, res, next) {
108
108
 
109
109
  next();
110
110
  } catch (err) {
111
- console.error("Session validation error:", err);
111
+ console.error("[mbkauthe] Session validation error:", err);
112
112
  res.status(500).json({ success: false, message: "Internal Server Error" });
113
113
  }
114
114
  }
@@ -117,8 +117,8 @@ const checkRolePermission = (requiredRole) => {
117
117
  return async (req, res, next) => {
118
118
  try {
119
119
  if (!req.session || !req.session.user || !req.session.user.id) {
120
- console.log("User not authenticated");
121
- console.log(req.session);
120
+ console.log("[mbkauthe] User not authenticated");
121
+ console.log("[mbkauthe]: ", req.session);
122
122
  return res.render("Error/dError.handlebars", {
123
123
  layout: false,
124
124
  code: 401,
@@ -156,7 +156,7 @@ const checkRolePermission = (requiredRole) => {
156
156
 
157
157
  next();
158
158
  } catch (err) {
159
- console.error("Permission check error:", err);
159
+ console.error("[mbkauthe] Permission check error:", err);
160
160
  res.status(500).json({ success: false, message: "Internal Server Error" });
161
161
  }
162
162
  };
@@ -215,7 +215,7 @@ async function getUserData(UserName, parameters) {
215
215
  const combinedResult = { ...userResult, ...profileResult };
216
216
  return combinedResult;
217
217
  } catch (err) {
218
- console.error("Error fetching user data:", err.message);
218
+ console.error("[mbkauthe] Error fetching user data:", err.message);
219
219
  throw err;
220
220
  }
221
221
  }
@@ -223,12 +223,12 @@ async function getUserData(UserName, parameters) {
223
223
  const authenticate = (authentication) => {
224
224
  return (req, res, next) => {
225
225
  const token = req.headers["authorization"];
226
- console.log(`Received token: ${token}`);
226
+ console.log(`[mbkauthe] Received token: ${token}`);
227
227
  if (token === authentication) {
228
- console.log("Authentication successful");
228
+ console.log("[mbkauthe] Authentication successful");
229
229
  next();
230
230
  } else {
231
- console.log("Authentication failed");
231
+ console.log("[mbkauthe] Authentication failed");
232
232
  res.status(401).send("Unauthorized");
233
233
  }
234
234
  };
@@ -239,24 +239,24 @@ const authapi = (requiredRole = []) => {
239
239
  const token = req.headers["authorization"];
240
240
 
241
241
  if (typeof token === 'string') {
242
- console.log("[authapi] Received request with token:", token[0] + token[1] + token[2], ".....", token[63]);
242
+ console.log("[mbkauthe] [authapi] Received request with token:", token[0] + token[1] + token[2], ".....", token[63]);
243
243
  } else {
244
- console.log("[authapi] Token is not a valid string:", token);
244
+ console.log("[mbkauthe] [authapi] Token is not a valid string:", token);
245
245
  }
246
246
 
247
247
  if (!token) {
248
- console.log("[authapi] No token provided in the request headers");
248
+ console.log("[mbkauthe] [authapi] No token provided in the request headers");
249
249
  return res.status(401).json({
250
250
  success: false,
251
251
  message: "Authorization token is required"
252
252
  });
253
253
  }
254
254
 
255
- console.log("[authapi] Querying database to validate token");
255
+ console.log("[mbkauthe] [authapi] Querying database to validate token");
256
256
  const tokenQuery = 'SELECT * FROM "UserAuthApiKey" WHERE "key" = $1';
257
257
  pool.query(tokenQuery, [token], (err, result) => {
258
258
  if (err) {
259
- console.error("[authapi] Database query error while validating token:", err);
259
+ console.error("[mbkauthe] [authapi] Database query error while validating token:", err);
260
260
  return res.status(500).json({
261
261
  success: false,
262
262
  message: "Internal Server Error"
@@ -264,7 +264,7 @@ const authapi = (requiredRole = []) => {
264
264
  }
265
265
 
266
266
  if (result.rows.length === 0) {
267
- console.log("[authapi] Invalid token provided:", token);
267
+ console.log("[mbkauthe] [authapi] Invalid token provided:", token);
268
268
  return res.status(401).json({
269
269
  success: false,
270
270
  message: "The AuthApiToken Is Invalid"
@@ -272,9 +272,9 @@ const authapi = (requiredRole = []) => {
272
272
  }
273
273
 
274
274
  const username = result.rows[0].username;
275
- console.log("[authapi] Token is valid. Associated username:", username);
275
+ console.log("[mbkauthe] [authapi] Token is valid. Associated username:", username);
276
276
 
277
- console.log("[authapi] Querying database to validate user and role");
277
+ console.log("[mbkauthe] [authapi] Querying database to validate user and role");
278
278
  const userQuery = `
279
279
  SELECT id, "UserName", "Active", "Role" FROM "Users"
280
280
  WHERE "UserName" = $1 AND "Active" = true
@@ -282,7 +282,7 @@ const authapi = (requiredRole = []) => {
282
282
 
283
283
  pool.query(userQuery, [username], (err, userResult) => {
284
284
  if (err) {
285
- console.error("[authapi] Database query error while validating user:", err);
285
+ console.error("[mbkauthe] [authapi] Database query error while validating user:", err);
286
286
  return res.status(500).json({
287
287
  success: false,
288
288
  message: "Internal Server Error"
@@ -290,7 +290,7 @@ const authapi = (requiredRole = []) => {
290
290
  }
291
291
 
292
292
  if (userResult.rows.length === 0) {
293
- console.log("[authapi] User does not exist or is not active. Username:", username);
293
+ console.log("[mbkauthe] [authapi] User does not exist or is not active. Username:", username);
294
294
  return res.status(401).json({
295
295
  success: false,
296
296
  message: "User does not exist or is not active",
@@ -298,7 +298,7 @@ const authapi = (requiredRole = []) => {
298
298
  }
299
299
 
300
300
  if (username === "demo") {
301
- console.log("[authapi] Demo user attempted to access an endpoint. Access denied.");
301
+ console.log("[mbkauthe] [authapi] Demo user attempted to access an endpoint. Access denied.");
302
302
  return res.status(401).json({
303
303
  success: false,
304
304
  message: "Demo user is not allowed to access endpoints",
@@ -306,25 +306,25 @@ const authapi = (requiredRole = []) => {
306
306
  }
307
307
 
308
308
  const user = userResult.rows[0];
309
- console.log("[authapi] User is valid. User details:", user);
309
+ console.log("[mbkauthe] [authapi] User is valid. User details:", user);
310
310
 
311
311
  // Check if role is required and if user has it
312
312
  if ((requiredRole && user.Role !== requiredRole) && user.Role !== "SuperAdmin") {
313
- console.log(`[authapi] User does not have the required role. Required: ${requiredRole}, User's role: ${user.Role}`);
313
+ console.log(`[mbkauthe] [authapi] User does not have the required role. Required: ${requiredRole}, User's role: ${user.Role}`);
314
314
  return res.status(403).json({
315
315
  success: false,
316
316
  message: `Access denied. Required role: ${requiredRole}`,
317
317
  });
318
318
  }
319
319
 
320
- console.log("[authapi] User has the required role or no specific role is required. Proceeding to next middleware.");
320
+ console.log("[mbkauthe] [authapi] User has the required role or no specific role is required. Proceeding to next middleware.");
321
321
  req.user = {
322
322
  username: user.UserName,
323
323
  role: user.Role,
324
324
  // Add other user properties you might need
325
325
  };
326
326
 
327
- console.log("[authapi] Token and user validation successful. Passing control to next middleware.");
327
+ console.log("[mbkauthe] [authapi] Token and user validation successful. Passing control to next middleware.");
328
328
  next();
329
329
  });
330
330
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mbkauthe",
3
- "version": "1.1.17",
3
+ "version": "1.2.0",
4
4
  "description": "MBKTechStudio's reusable authentication system for Node.js applications.",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -30,6 +30,7 @@
30
30
  "cheerio": "^1.0.0",
31
31
  "connect-pg-simple": "^10.0.0",
32
32
  "cookie-parser": "^1.4.7",
33
+ "csurf": "^1.11.0",
33
34
  "dotenv": "^16.4.7",
34
35
  "express": "^5.1.0",
35
36
  "express-handlebars": "^8.0.1",