@siriux/auth 1.0.0 → 1.0.1
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/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/middleware/auth.d.ts +1 -1
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/mock/index.d.ts +7 -0
- package/dist/mock/index.d.ts.map +1 -0
- package/dist/mock/index.js +33 -0
- package/dist/mock/index.js.map +1 -0
- package/dist/mock/mockAuthConfig.d.ts +19 -0
- package/dist/mock/mockAuthConfig.d.ts.map +1 -0
- package/dist/mock/mockAuthConfig.js +54 -0
- package/dist/mock/mockAuthConfig.js.map +1 -0
- package/dist/mock/mockAuthMiddleware.d.ts +49 -0
- package/dist/mock/mockAuthMiddleware.d.ts.map +1 -0
- package/dist/mock/mockAuthMiddleware.js +336 -0
- package/dist/mock/mockAuthMiddleware.js.map +1 -0
- package/dist/mock/mockAuthService.d.ts +62 -0
- package/dist/mock/mockAuthService.d.ts.map +1 -0
- package/dist/mock/mockAuthService.js +344 -0
- package/dist/mock/mockAuthService.js.map +1 -0
- package/package.json +11 -10
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export * from './types';
|
|
2
2
|
export * from './middleware';
|
|
3
|
+
export * from './mock';
|
|
3
4
|
export { AuthenticationError, AuthMiddleware, createAuthMiddleware } from './middleware/auth';
|
|
4
5
|
export { UserRole, JwtPayload, AuthenticatedUser, AuthTokens, AuthConfig } from './types';
|
|
6
|
+
export { createMockAuthConfig, defaultMockAuthConfig, isMockMode, createSmartAuthConfig, MockAuthService, MockAuthMiddleware, createMockAuthMiddleware } from './mock';
|
|
5
7
|
export declare const SIRIUX_AUTH_VERSION = "1.0.0";
|
|
6
8
|
import { AuthConfig } from './types';
|
|
7
9
|
export declare const createDefaultAuthConfig: (overrides: Partial<AuthConfig>) => AuthConfig;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AAGvB,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1F,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,UAAU,EACV,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,QAAQ,CAAC;AAGhB,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAG3C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,eAAO,MAAM,uBAAuB,GAAI,WAAW,OAAO,CAAC,UAAU,CAAC,KAAG,UAWxE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,10 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.createDefaultAuthConfig = exports.SIRIUX_AUTH_VERSION = exports.UserRole = exports.createAuthMiddleware = exports.AuthMiddleware = exports.AuthenticationError = void 0;
|
|
17
|
+
exports.createDefaultAuthConfig = exports.SIRIUX_AUTH_VERSION = exports.createMockAuthMiddleware = exports.MockAuthMiddleware = exports.MockAuthService = exports.createSmartAuthConfig = exports.isMockMode = exports.defaultMockAuthConfig = exports.createMockAuthConfig = exports.UserRole = exports.createAuthMiddleware = exports.AuthMiddleware = exports.AuthenticationError = void 0;
|
|
18
18
|
// Core exports
|
|
19
19
|
__exportStar(require("./types"), exports);
|
|
20
20
|
__exportStar(require("./middleware"), exports);
|
|
21
|
+
__exportStar(require("./mock"), exports);
|
|
21
22
|
// Re-export commonly used classes and functions
|
|
22
23
|
var auth_1 = require("./middleware/auth");
|
|
23
24
|
Object.defineProperty(exports, "AuthenticationError", { enumerable: true, get: function () { return auth_1.AuthenticationError; } });
|
|
@@ -25,6 +26,15 @@ Object.defineProperty(exports, "AuthMiddleware", { enumerable: true, get: functi
|
|
|
25
26
|
Object.defineProperty(exports, "createAuthMiddleware", { enumerable: true, get: function () { return auth_1.createAuthMiddleware; } });
|
|
26
27
|
var types_1 = require("./types");
|
|
27
28
|
Object.defineProperty(exports, "UserRole", { enumerable: true, get: function () { return types_1.UserRole; } });
|
|
29
|
+
// Mock exports for development
|
|
30
|
+
var mock_1 = require("./mock");
|
|
31
|
+
Object.defineProperty(exports, "createMockAuthConfig", { enumerable: true, get: function () { return mock_1.createMockAuthConfig; } });
|
|
32
|
+
Object.defineProperty(exports, "defaultMockAuthConfig", { enumerable: true, get: function () { return mock_1.defaultMockAuthConfig; } });
|
|
33
|
+
Object.defineProperty(exports, "isMockMode", { enumerable: true, get: function () { return mock_1.isMockMode; } });
|
|
34
|
+
Object.defineProperty(exports, "createSmartAuthConfig", { enumerable: true, get: function () { return mock_1.createSmartAuthConfig; } });
|
|
35
|
+
Object.defineProperty(exports, "MockAuthService", { enumerable: true, get: function () { return mock_1.MockAuthService; } });
|
|
36
|
+
Object.defineProperty(exports, "MockAuthMiddleware", { enumerable: true, get: function () { return mock_1.MockAuthMiddleware; } });
|
|
37
|
+
Object.defineProperty(exports, "createMockAuthMiddleware", { enumerable: true, get: function () { return mock_1.createMockAuthMiddleware; } });
|
|
28
38
|
// Version information
|
|
29
39
|
exports.SIRIUX_AUTH_VERSION = '1.0.0';
|
|
30
40
|
const createDefaultAuthConfig = (overrides) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,eAAe;AACf,0CAAwB;AACxB,+CAA6B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,eAAe;AACf,0CAAwB;AACxB,+CAA6B;AAC7B,yCAAuB;AAEvB,gDAAgD;AAChD,0CAA8F;AAArF,2GAAA,mBAAmB,OAAA;AAAE,sGAAA,cAAc,OAAA;AAAE,4GAAA,oBAAoB,OAAA;AAClE,iCAA0F;AAAjF,iGAAA,QAAQ,OAAA;AAEjB,+BAA+B;AAC/B,+BAQgB;AAPd,4GAAA,oBAAoB,OAAA;AACpB,6GAAA,qBAAqB,OAAA;AACrB,kGAAA,UAAU,OAAA;AACV,6GAAA,qBAAqB,OAAA;AACrB,uGAAA,eAAe,OAAA;AACf,0GAAA,kBAAkB,OAAA;AAClB,gHAAA,wBAAwB,OAAA;AAG1B,sBAAsB;AACT,QAAA,mBAAmB,GAAG,OAAO,CAAC;AAKpC,MAAM,uBAAuB,GAAG,CAAC,SAA8B,EAAc,EAAE;IACpF,MAAM,aAAa,GAAe;QAChC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,2BAA2B;QAChE,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,+BAA+B;QACnF,WAAW,EAAE,KAAK;QAClB,aAAa,EAAE,IAAI;QACnB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,cAAc;KACzB,CAAC;IAEF,OAAO,EAAE,GAAG,aAAa,EAAE,GAAG,SAAS,EAAE,CAAC;AAC5C,CAAC,CAAC;AAXW,QAAA,uBAAuB,2BAWlC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Request, Response, NextFunction } from 'express';
|
|
2
2
|
import { JwtPayload } from 'jsonwebtoken';
|
|
3
3
|
import { UserRole, AuthenticatedUser, AuthConfig } from '../types';
|
|
4
|
-
export interface AuthenticatedRequest extends Request {
|
|
4
|
+
export interface AuthenticatedRequest extends Omit<Request, 'user'> {
|
|
5
5
|
user?: JwtPayload;
|
|
6
6
|
authenticatedUser?: AuthenticatedUser;
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEnE,MAAM,WAAW,oBAAqB,SAAQ,OAAO;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEnE,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;IACjE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IACR,IAAI,EAAE,MAAM;gBAApC,OAAO,EAAE,MAAM,EAAS,IAAI,EAAE,MAAM;CAIjD;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,UAAU;IAQ9B;;OAEG;IACI,SAAS,GAAI,KAAK,oBAAoB,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,GAAG,QAAQ,CAuDhG;IAEF;;OAEG;IACI,SAAS,GAAI,KAAK,oBAAoB,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,GAAG,QAAQ,CAShG;IAEF;;OAEG;IACI,QAAQ,GAAI,cAAc,QAAQ,MAC/B,KAAK,oBAAoB,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,GAAG,QAAQ,CAUtF;IAEF;;OAEG;IACI,YAAY,GAAI,KAAK,oBAAoB,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,UAcjF;IAEF;;OAEG;IACI,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,MAAM;IAQ5E;;OAEG;IACI,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAQnD;;OAEG;IACI,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAI1E;;OAEG;IACI,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE;CAYjG;AAGD,eAAO,MAAM,oBAAoB,GAAI,QAAQ,UAAU,KAAG,cAEzD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './mockAuthConfig';
|
|
2
|
+
export * from './mockAuthService';
|
|
3
|
+
export * from './mockAuthMiddleware';
|
|
4
|
+
export { createMockAuthConfig, defaultMockAuthConfig, isMockMode, createSmartAuthConfig } from './mockAuthConfig';
|
|
5
|
+
export { MockAuthService } from './mockAuthService';
|
|
6
|
+
export { MockAuthMiddleware, createMockAuthMiddleware } from './mockAuthMiddleware';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mock/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AAGrC,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAClH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.createMockAuthMiddleware = exports.MockAuthMiddleware = exports.MockAuthService = exports.createSmartAuthConfig = exports.isMockMode = exports.defaultMockAuthConfig = exports.createMockAuthConfig = void 0;
|
|
18
|
+
// Mock authentication system for development and testing
|
|
19
|
+
__exportStar(require("./mockAuthConfig"), exports);
|
|
20
|
+
__exportStar(require("./mockAuthService"), exports);
|
|
21
|
+
__exportStar(require("./mockAuthMiddleware"), exports);
|
|
22
|
+
// Quick setup helpers
|
|
23
|
+
var mockAuthConfig_1 = require("./mockAuthConfig");
|
|
24
|
+
Object.defineProperty(exports, "createMockAuthConfig", { enumerable: true, get: function () { return mockAuthConfig_1.createMockAuthConfig; } });
|
|
25
|
+
Object.defineProperty(exports, "defaultMockAuthConfig", { enumerable: true, get: function () { return mockAuthConfig_1.defaultMockAuthConfig; } });
|
|
26
|
+
Object.defineProperty(exports, "isMockMode", { enumerable: true, get: function () { return mockAuthConfig_1.isMockMode; } });
|
|
27
|
+
Object.defineProperty(exports, "createSmartAuthConfig", { enumerable: true, get: function () { return mockAuthConfig_1.createSmartAuthConfig; } });
|
|
28
|
+
var mockAuthService_1 = require("./mockAuthService");
|
|
29
|
+
Object.defineProperty(exports, "MockAuthService", { enumerable: true, get: function () { return mockAuthService_1.MockAuthService; } });
|
|
30
|
+
var mockAuthMiddleware_1 = require("./mockAuthMiddleware");
|
|
31
|
+
Object.defineProperty(exports, "MockAuthMiddleware", { enumerable: true, get: function () { return mockAuthMiddleware_1.MockAuthMiddleware; } });
|
|
32
|
+
Object.defineProperty(exports, "createMockAuthMiddleware", { enumerable: true, get: function () { return mockAuthMiddleware_1.createMockAuthMiddleware; } });
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mock/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,yDAAyD;AACzD,mDAAiC;AACjC,oDAAkC;AAClC,uDAAqC;AAErC,sBAAsB;AACtB,mDAAkH;AAAzG,sHAAA,oBAAoB,OAAA;AAAE,uHAAA,qBAAqB,OAAA;AAAE,4GAAA,UAAU,OAAA;AAAE,uHAAA,qBAAqB,OAAA;AACvF,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,2DAAoF;AAA3E,wHAAA,kBAAkB,OAAA;AAAE,8HAAA,wBAAwB,OAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AuthConfig } from '../types';
|
|
2
|
+
interface MockDatabase {
|
|
3
|
+
initialize(): Promise<void>;
|
|
4
|
+
getUserByEmail(email: string): Promise<any>;
|
|
5
|
+
createSession(data: any): Promise<any>;
|
|
6
|
+
getSessionByToken(token: string): Promise<any>;
|
|
7
|
+
deleteSession(token: string): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
export interface MockAuthConfig extends AuthConfig {
|
|
10
|
+
mockMode: boolean;
|
|
11
|
+
mockDatabase?: MockDatabase;
|
|
12
|
+
autoInitialize?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const createMockAuthConfig: (overrides?: Partial<MockAuthConfig>) => MockAuthConfig;
|
|
15
|
+
export declare const defaultMockAuthConfig: MockAuthConfig;
|
|
16
|
+
export declare const isMockMode: () => boolean;
|
|
17
|
+
export declare const createSmartAuthConfig: (userConfig?: Partial<AuthConfig>) => AuthConfig;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=mockAuthConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockAuthConfig.d.ts","sourceRoot":"","sources":["../../src/mock/mockAuthConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,UAAU,YAAY;IACpB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5C,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,oBAAoB,GAAI,YAAW,OAAO,CAAC,cAAc,CAAM,KAAG,cAyB9E,CAAC;AAGF,eAAO,MAAM,qBAAqB,gBAAyB,CAAC;AAG5D,eAAO,MAAM,UAAU,QAAO,OAQ7B,CAAC;AAGF,eAAO,MAAM,qBAAqB,GAAI,aAAY,OAAO,CAAC,UAAU,CAAM,KAAG,UAc5E,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSmartAuthConfig = exports.isMockMode = exports.defaultMockAuthConfig = exports.createMockAuthConfig = void 0;
|
|
4
|
+
const createMockAuthConfig = (overrides = {}) => {
|
|
5
|
+
const config = {
|
|
6
|
+
// Basic auth config
|
|
7
|
+
jwtSecret: 'mock-jwt-secret-change-in-production',
|
|
8
|
+
jwtRefreshSecret: 'mock-refresh-secret-change-in-production',
|
|
9
|
+
tokenExpiry: '24h',
|
|
10
|
+
refreshExpiry: '7d',
|
|
11
|
+
// Mock-specific config
|
|
12
|
+
mockMode: true,
|
|
13
|
+
mockDatabase: undefined, // Will be set later
|
|
14
|
+
autoInitialize: true,
|
|
15
|
+
// Override with provided options
|
|
16
|
+
...overrides
|
|
17
|
+
};
|
|
18
|
+
// Auto-initialize mock database if enabled
|
|
19
|
+
if (config.autoInitialize && config.mockDatabase) {
|
|
20
|
+
config.mockDatabase.initialize().catch((error) => {
|
|
21
|
+
console.error('Failed to initialize mock database:', error);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return config;
|
|
25
|
+
};
|
|
26
|
+
exports.createMockAuthConfig = createMockAuthConfig;
|
|
27
|
+
// Default mock config
|
|
28
|
+
exports.defaultMockAuthConfig = (0, exports.createMockAuthConfig)();
|
|
29
|
+
// Environment detection
|
|
30
|
+
const isMockMode = () => {
|
|
31
|
+
return (process.env.NODE_ENV === 'development' ||
|
|
32
|
+
process.env.SIRIUX_MOCK_MODE === 'true' ||
|
|
33
|
+
(typeof globalThis !== 'undefined' &&
|
|
34
|
+
'location' in globalThis &&
|
|
35
|
+
globalThis.location.pathname.includes('/demo')));
|
|
36
|
+
};
|
|
37
|
+
exports.isMockMode = isMockMode;
|
|
38
|
+
// Smart config creation
|
|
39
|
+
const createSmartAuthConfig = (userConfig = {}) => {
|
|
40
|
+
if ((0, exports.isMockMode)()) {
|
|
41
|
+
console.log('🎭 Using mock authentication mode');
|
|
42
|
+
return (0, exports.createMockAuthConfig)(userConfig);
|
|
43
|
+
}
|
|
44
|
+
console.log('🔐 Using production authentication mode');
|
|
45
|
+
return {
|
|
46
|
+
jwtSecret: process.env.JWT_SECRET || 'change-me-in-production',
|
|
47
|
+
jwtRefreshSecret: process.env.JWT_REFRESH_SECRET || 'change-me-in-production',
|
|
48
|
+
tokenExpiry: process.env.JWT_EXPIRY || '24h',
|
|
49
|
+
refreshExpiry: process.env.JWT_REFRESH_EXPIRY || '7d',
|
|
50
|
+
...userConfig
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
exports.createSmartAuthConfig = createSmartAuthConfig;
|
|
54
|
+
//# sourceMappingURL=mockAuthConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockAuthConfig.js","sourceRoot":"","sources":["../../src/mock/mockAuthConfig.ts"],"names":[],"mappings":";;;AAiBO,MAAM,oBAAoB,GAAG,CAAC,YAAqC,EAAE,EAAkB,EAAE;IAC9F,MAAM,MAAM,GAAmB;QAC7B,oBAAoB;QACpB,SAAS,EAAE,sCAAsC;QACjD,gBAAgB,EAAE,0CAA0C;QAC5D,WAAW,EAAE,KAAK;QAClB,aAAa,EAAE,IAAI;QAEnB,uBAAuB;QACvB,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,SAAS,EAAE,oBAAoB;QAC7C,cAAc,EAAE,IAAI;QAEpB,iCAAiC;QACjC,GAAG,SAAS;KACb,CAAC;IAEF,2CAA2C;IAC3C,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACjD,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,KAAU,EAAE,EAAE;YACpD,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAzBW,QAAA,oBAAoB,wBAyB/B;AAEF,sBAAsB;AACT,QAAA,qBAAqB,GAAG,IAAA,4BAAoB,GAAE,CAAC;AAE5D,wBAAwB;AACjB,MAAM,UAAU,GAAG,GAAY,EAAE;IACtC,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;QACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,MAAM;QACvC,CAAC,OAAO,UAAU,KAAK,WAAW;YACjC,UAAU,IAAI,UAAU;YACvB,UAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAC1D,CAAC;AACJ,CAAC,CAAC;AARW,QAAA,UAAU,cAQrB;AAEF,wBAAwB;AACjB,MAAM,qBAAqB,GAAG,CAAC,aAAkC,EAAE,EAAc,EAAE;IACxF,IAAI,IAAA,kBAAU,GAAE,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO,IAAA,4BAAoB,EAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,yBAAyB;QAC9D,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,yBAAyB;QAC7E,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,KAAK;QAC5C,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI;QACrD,GAAG,UAAU;KACd,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,qBAAqB,yBAchC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Request, Response, NextFunction } from 'express';
|
|
2
|
+
import { MockAuthService } from './mockAuthService';
|
|
3
|
+
interface MockDatabase {
|
|
4
|
+
initialize(): Promise<void>;
|
|
5
|
+
getUserByEmail(email: string): Promise<any>;
|
|
6
|
+
getUserById(id: string): Promise<any>;
|
|
7
|
+
createUser(userData: any): Promise<any>;
|
|
8
|
+
createSession(data: any): Promise<any>;
|
|
9
|
+
getSessionByToken(token: string): Promise<any>;
|
|
10
|
+
deleteSession(token: string): Promise<void>;
|
|
11
|
+
logAudit(entry: any): Promise<void>;
|
|
12
|
+
getStats(): Promise<any>;
|
|
13
|
+
getAuditLogs(userId?: string): Promise<any[]>;
|
|
14
|
+
reset(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
declare global {
|
|
17
|
+
namespace Express {
|
|
18
|
+
interface Request {
|
|
19
|
+
user?: {
|
|
20
|
+
id: string;
|
|
21
|
+
email: string;
|
|
22
|
+
role: string;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export declare class MockAuthMiddleware {
|
|
28
|
+
private authService;
|
|
29
|
+
constructor(database?: MockDatabase);
|
|
30
|
+
tokenAuth: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
31
|
+
roleAuth: (allowedRoles: string[]) => (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
32
|
+
adminAuth: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
33
|
+
userAuth: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
34
|
+
managerAuth: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
35
|
+
getAuthService(): MockAuthService;
|
|
36
|
+
getMockRoutes(): {
|
|
37
|
+
'POST /api/auth/login': (req: Request, res: Response) => Promise<void>;
|
|
38
|
+
'POST /api/auth/register': (req: Request, res: Response) => Promise<void>;
|
|
39
|
+
'POST /api/auth/refresh': (req: Request, res: Response) => Promise<void>;
|
|
40
|
+
'POST /api/auth/logout': (req: Request, res: Response) => Promise<void>;
|
|
41
|
+
'GET /api/auth/profile': (req: Request, res: Response) => Promise<void>;
|
|
42
|
+
'GET /api/auth/stats': (req: Request, res: Response) => Promise<void>;
|
|
43
|
+
'GET /api/auth/audit-logs': (req: Request, res: Response) => Promise<void>;
|
|
44
|
+
};
|
|
45
|
+
applyMockRoutes(app: any): void;
|
|
46
|
+
}
|
|
47
|
+
export declare const createMockAuthMiddleware: (database?: MockDatabase) => MockAuthMiddleware;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=mockAuthMiddleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockAuthMiddleware.d.ts","sourceRoot":"","sources":["../../src/mock/mockAuthMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,UAAU,YAAY;IACpB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAqID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,OAAO,CAAC;QAChB,UAAU,OAAO;YACf,IAAI,CAAC,EAAE;gBACL,EAAE,EAAE,MAAM,CAAC;gBACX,KAAK,EAAE,MAAM,CAAC;gBACd,IAAI,EAAE,MAAM,CAAC;aACd,CAAC;SACH;KACF;CACF;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,WAAW,CAAkB;gBAEzB,QAAQ,CAAC,EAAE,YAAY;IAOnC,SAAS,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,OAAO,CAAC,IAAI,CAAC,CAiChF;IAGF,QAAQ,GAAI,cAAc,MAAM,EAAE,MAClB,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,OAAO,CAAC,IAAI,CAAC,CAoB7E;IAGF,SAAS,QAvBY,OAAO,OAAO,QAAQ,QAAQ,YAAY,KAAG,OAAO,CAAC,IAAI,CAAC,CAuB1C;IAGrC,QAAQ,QA1Ba,OAAO,OAAO,QAAQ,QAAQ,YAAY,KAAG,OAAO,CAAC,IAAI,CAAC,CA0BnC;IAG5C,WAAW,QA7BU,OAAO,OAAO,QAAQ,QAAQ,YAAY,KAAG,OAAO,CAAC,IAAI,CAAC,CA6B7B;IAGlD,cAAc,IAAI,eAAe;IAKjC,aAAa;sCAK2B,OAAO,OAAO,QAAQ;yCAgBnB,OAAO,OAAO,QAAQ;wCAgBvB,OAAO,OAAO,QAAQ;uCAgBvB,OAAO,OAAO,QAAQ;uCAgBtB,OAAO,OAAO,QAAQ;qCAoBxB,OAAO,OAAO,QAAQ;0CAejB,OAAO,OAAO,QAAQ;;IAkBlE,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;CAwBhC;AAGD,eAAO,MAAM,wBAAwB,GAAI,WAAW,YAAY,uBAE/D,CAAC"}
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMockAuthMiddleware = exports.MockAuthMiddleware = void 0;
|
|
4
|
+
const mockAuthService_1 = require("./mockAuthService");
|
|
5
|
+
// Simple in-memory database implementation
|
|
6
|
+
class SimpleMockDatabase {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.users = new Map();
|
|
9
|
+
this.sessions = new Map();
|
|
10
|
+
this.auditLogs = [];
|
|
11
|
+
this.initialized = false;
|
|
12
|
+
}
|
|
13
|
+
async initialize() {
|
|
14
|
+
if (this.initialized)
|
|
15
|
+
return;
|
|
16
|
+
// Seed demo users
|
|
17
|
+
this.users.set('admin@siriux.dev', {
|
|
18
|
+
id: '1',
|
|
19
|
+
email: 'admin@siriux.dev',
|
|
20
|
+
password: 'admin123',
|
|
21
|
+
firstName: 'Admin',
|
|
22
|
+
lastName: 'User',
|
|
23
|
+
role: 'admin',
|
|
24
|
+
createdAt: new Date().toISOString(),
|
|
25
|
+
updatedAt: new Date().toISOString()
|
|
26
|
+
});
|
|
27
|
+
this.users.set('user@siriux.dev', {
|
|
28
|
+
id: '2',
|
|
29
|
+
email: 'user@siriux.dev',
|
|
30
|
+
password: 'user123',
|
|
31
|
+
firstName: 'Demo',
|
|
32
|
+
lastName: 'User',
|
|
33
|
+
role: 'user',
|
|
34
|
+
createdAt: new Date().toISOString(),
|
|
35
|
+
updatedAt: new Date().toISOString()
|
|
36
|
+
});
|
|
37
|
+
this.users.set('manager@siriux.dev', {
|
|
38
|
+
id: '3',
|
|
39
|
+
email: 'manager@siriux.dev',
|
|
40
|
+
password: 'manager123',
|
|
41
|
+
firstName: 'Manager',
|
|
42
|
+
lastName: 'User',
|
|
43
|
+
role: 'manager',
|
|
44
|
+
createdAt: new Date().toISOString(),
|
|
45
|
+
updatedAt: new Date().toISOString()
|
|
46
|
+
});
|
|
47
|
+
this.initialized = true;
|
|
48
|
+
}
|
|
49
|
+
async getUserByEmail(email) {
|
|
50
|
+
await this.initialize();
|
|
51
|
+
return this.users.get(email) || null;
|
|
52
|
+
}
|
|
53
|
+
async getUserById(id) {
|
|
54
|
+
await this.initialize();
|
|
55
|
+
for (const user of this.users.values()) {
|
|
56
|
+
if (user.id === id)
|
|
57
|
+
return user;
|
|
58
|
+
}
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
async createUser(userData) {
|
|
62
|
+
await this.initialize();
|
|
63
|
+
const user = {
|
|
64
|
+
id: Date.now().toString(),
|
|
65
|
+
...userData,
|
|
66
|
+
createdAt: new Date().toISOString(),
|
|
67
|
+
updatedAt: new Date().toISOString()
|
|
68
|
+
};
|
|
69
|
+
this.users.set(user.email, user);
|
|
70
|
+
return user;
|
|
71
|
+
}
|
|
72
|
+
async createSession(data) {
|
|
73
|
+
await this.initialize();
|
|
74
|
+
const session = { id: Date.now().toString(), ...data };
|
|
75
|
+
this.sessions.set(data.accessToken, session);
|
|
76
|
+
return session;
|
|
77
|
+
}
|
|
78
|
+
async getSessionByToken(token) {
|
|
79
|
+
await this.initialize();
|
|
80
|
+
return this.sessions.get(token) || null;
|
|
81
|
+
}
|
|
82
|
+
async deleteSession(token) {
|
|
83
|
+
await this.initialize();
|
|
84
|
+
this.sessions.delete(token);
|
|
85
|
+
}
|
|
86
|
+
async logAudit(entry) {
|
|
87
|
+
await this.initialize();
|
|
88
|
+
this.auditLogs.push({
|
|
89
|
+
id: Date.now().toString(),
|
|
90
|
+
timestamp: new Date().toISOString(),
|
|
91
|
+
...entry
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
async getStats() {
|
|
95
|
+
await this.initialize();
|
|
96
|
+
const usersByRole = {};
|
|
97
|
+
for (const user of this.users.values()) {
|
|
98
|
+
usersByRole[user.role] = (usersByRole[user.role] || 0) + 1;
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
totalUsers: this.users.size,
|
|
102
|
+
totalSessions: this.sessions.size,
|
|
103
|
+
totalAuditLogs: this.auditLogs.length,
|
|
104
|
+
usersByRole
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
async getAuditLogs(userId) {
|
|
108
|
+
await this.initialize();
|
|
109
|
+
let logs = this.auditLogs;
|
|
110
|
+
if (userId) {
|
|
111
|
+
logs = logs.filter(log => log.userId === userId);
|
|
112
|
+
}
|
|
113
|
+
return logs.slice(-50).reverse(); // Last 50 logs, newest first
|
|
114
|
+
}
|
|
115
|
+
async reset() {
|
|
116
|
+
this.users.clear();
|
|
117
|
+
this.sessions.clear();
|
|
118
|
+
this.auditLogs = [];
|
|
119
|
+
this.initialized = false;
|
|
120
|
+
await this.initialize();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
class MockAuthMiddleware {
|
|
124
|
+
constructor(database) {
|
|
125
|
+
// Express middleware for token authentication
|
|
126
|
+
this.tokenAuth = async (req, res, next) => {
|
|
127
|
+
try {
|
|
128
|
+
const authHeader = req.headers.authorization;
|
|
129
|
+
if (!authHeader || !authHeader.startsWith('Bearer ')) {
|
|
130
|
+
res.status(401).json({ error: 'No token provided' });
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const token = authHeader.substring(7); // Remove 'Bearer ' prefix
|
|
134
|
+
// Validate token
|
|
135
|
+
const validation = await this.authService.validateToken(token);
|
|
136
|
+
if (!validation.valid) {
|
|
137
|
+
res.status(401).json({ error: validation.error || 'Invalid token' });
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
// Attach user to request
|
|
141
|
+
if (validation.user) {
|
|
142
|
+
req.user = {
|
|
143
|
+
id: validation.user.id,
|
|
144
|
+
email: validation.user.email,
|
|
145
|
+
role: validation.user.role
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
next();
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
console.error('Auth middleware error:', error);
|
|
152
|
+
res.status(500).json({ error: 'Authentication failed' });
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
// Role-based access control middleware
|
|
156
|
+
this.roleAuth = (allowedRoles) => {
|
|
157
|
+
return async (req, res, next) => {
|
|
158
|
+
try {
|
|
159
|
+
// First check if user is authenticated
|
|
160
|
+
if (!req.user) {
|
|
161
|
+
res.status(401).json({ error: 'Authentication required' });
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
// Check if user has required role
|
|
165
|
+
if (!allowedRoles.includes(req.user.role)) {
|
|
166
|
+
res.status(403).json({ error: 'Insufficient permissions' });
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
next();
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
console.error('Role auth middleware error:', error);
|
|
173
|
+
res.status(500).json({ error: 'Authorization failed' });
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
// Admin-only middleware
|
|
178
|
+
this.adminAuth = this.roleAuth(['admin']);
|
|
179
|
+
// User or admin middleware
|
|
180
|
+
this.userAuth = this.roleAuth(['user', 'admin']);
|
|
181
|
+
// Manager or admin middleware
|
|
182
|
+
this.managerAuth = this.roleAuth(['manager', 'admin']);
|
|
183
|
+
// Use provided database or create a new one
|
|
184
|
+
const db = database || new SimpleMockDatabase();
|
|
185
|
+
this.authService = new mockAuthService_1.MockAuthService(db);
|
|
186
|
+
}
|
|
187
|
+
// Get auth service instance
|
|
188
|
+
getAuthService() {
|
|
189
|
+
return this.authService;
|
|
190
|
+
}
|
|
191
|
+
// Mock API routes (for development/demo)
|
|
192
|
+
getMockRoutes() {
|
|
193
|
+
const authService = this.authService;
|
|
194
|
+
return {
|
|
195
|
+
// Login endpoint
|
|
196
|
+
'POST /api/auth/login': async (req, res) => {
|
|
197
|
+
try {
|
|
198
|
+
const { email, password } = req.body;
|
|
199
|
+
const result = await authService.login({ email, password });
|
|
200
|
+
if (result.success) {
|
|
201
|
+
res.json(result);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
res.status(401).json(result);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
res.status(500).json({ error: 'Login failed' });
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
// Register endpoint
|
|
212
|
+
'POST /api/auth/register': async (req, res) => {
|
|
213
|
+
try {
|
|
214
|
+
const { email, password, firstName, lastName } = req.body;
|
|
215
|
+
const result = await authService.register({ email, password, firstName, lastName });
|
|
216
|
+
if (result.success) {
|
|
217
|
+
res.status(201).json(result);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
res.status(400).json(result);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
res.status(500).json({ error: 'Registration failed' });
|
|
225
|
+
}
|
|
226
|
+
},
|
|
227
|
+
// Refresh token endpoint
|
|
228
|
+
'POST /api/auth/refresh': async (req, res) => {
|
|
229
|
+
try {
|
|
230
|
+
const { refreshToken } = req.body;
|
|
231
|
+
const result = await authService.refreshToken(refreshToken);
|
|
232
|
+
if (result.success) {
|
|
233
|
+
res.json(result);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
res.status(401).json(result);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
res.status(500).json({ error: 'Token refresh failed' });
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
// Logout endpoint
|
|
244
|
+
'POST /api/auth/logout': async (req, res) => {
|
|
245
|
+
try {
|
|
246
|
+
const authHeader = req.headers.authorization;
|
|
247
|
+
const token = authHeader?.substring(7);
|
|
248
|
+
if (token) {
|
|
249
|
+
await authService.logout(token);
|
|
250
|
+
}
|
|
251
|
+
res.json({ success: true });
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
res.status(500).json({ error: 'Logout failed' });
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
// Get profile endpoint
|
|
258
|
+
'GET /api/auth/profile': async (req, res) => {
|
|
259
|
+
try {
|
|
260
|
+
if (!req.user) {
|
|
261
|
+
res.status(401).json({ error: 'Authentication required' });
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
const result = await authService.getUserProfile(req.user.id);
|
|
265
|
+
if (result.success) {
|
|
266
|
+
res.json(result);
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
res.status(404).json(result);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
res.status(500).json({ error: 'Failed to get profile' });
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
// Get stats endpoint (admin only)
|
|
277
|
+
'GET /api/auth/stats': async (req, res) => {
|
|
278
|
+
try {
|
|
279
|
+
if (!req.user || req.user.role !== 'admin') {
|
|
280
|
+
res.status(403).json({ error: 'Admin access required' });
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
const stats = await authService.getStats();
|
|
284
|
+
res.json(stats);
|
|
285
|
+
}
|
|
286
|
+
catch (error) {
|
|
287
|
+
res.status(500).json({ error: 'Failed to get stats' });
|
|
288
|
+
}
|
|
289
|
+
},
|
|
290
|
+
// Get audit logs endpoint (admin only)
|
|
291
|
+
'GET /api/auth/audit-logs': async (req, res) => {
|
|
292
|
+
try {
|
|
293
|
+
if (!req.user || req.user.role !== 'admin') {
|
|
294
|
+
res.status(403).json({ error: 'Admin access required' });
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
const userId = req.query.userId;
|
|
298
|
+
const logs = await authService.getAuditLogs(userId);
|
|
299
|
+
res.json(logs);
|
|
300
|
+
}
|
|
301
|
+
catch (error) {
|
|
302
|
+
res.status(500).json({ error: 'Failed to get audit logs' });
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
// Apply mock routes to Express app
|
|
308
|
+
applyMockRoutes(app) {
|
|
309
|
+
const routes = this.getMockRoutes();
|
|
310
|
+
Object.entries(routes).forEach(([route, handler]) => {
|
|
311
|
+
const [method, path] = route.split(' ');
|
|
312
|
+
switch (method) {
|
|
313
|
+
case 'GET':
|
|
314
|
+
app.get(path, handler);
|
|
315
|
+
break;
|
|
316
|
+
case 'POST':
|
|
317
|
+
app.post(path, handler);
|
|
318
|
+
break;
|
|
319
|
+
case 'PUT':
|
|
320
|
+
app.put(path, handler);
|
|
321
|
+
break;
|
|
322
|
+
case 'DELETE':
|
|
323
|
+
app.delete(path, handler);
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
console.log('🎭 Mock auth routes applied');
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
exports.MockAuthMiddleware = MockAuthMiddleware;
|
|
331
|
+
// Factory function
|
|
332
|
+
const createMockAuthMiddleware = (database) => {
|
|
333
|
+
return new MockAuthMiddleware(database);
|
|
334
|
+
};
|
|
335
|
+
exports.createMockAuthMiddleware = createMockAuthMiddleware;
|
|
336
|
+
//# sourceMappingURL=mockAuthMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockAuthMiddleware.js","sourceRoot":"","sources":["../../src/mock/mockAuthMiddleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { AuthResponse, LoginCredentials, RegisterData, AuthenticatedUser } from '../types';
|
|
2
|
+
interface MockUser {
|
|
3
|
+
id: string;
|
|
4
|
+
email: string;
|
|
5
|
+
password: string;
|
|
6
|
+
firstName: string;
|
|
7
|
+
lastName: string;
|
|
8
|
+
role: 'user' | 'admin' | 'manager';
|
|
9
|
+
createdAt: string;
|
|
10
|
+
updatedAt: string;
|
|
11
|
+
}
|
|
12
|
+
interface MockSession {
|
|
13
|
+
id: string;
|
|
14
|
+
userId: string;
|
|
15
|
+
accessToken: string;
|
|
16
|
+
refreshToken: string;
|
|
17
|
+
expiresAt: string;
|
|
18
|
+
createdAt: string;
|
|
19
|
+
}
|
|
20
|
+
interface MockDatabase {
|
|
21
|
+
initialize(): Promise<void>;
|
|
22
|
+
getUserByEmail(email: string): Promise<MockUser | null>;
|
|
23
|
+
getUserById(id: string): Promise<MockUser | null>;
|
|
24
|
+
createUser(userData: any): Promise<MockUser>;
|
|
25
|
+
createSession(data: any): Promise<MockSession>;
|
|
26
|
+
getSessionByToken(token: string): Promise<MockSession | null>;
|
|
27
|
+
deleteSession(token: string): Promise<void>;
|
|
28
|
+
logAudit(entry: any): Promise<void>;
|
|
29
|
+
getStats(): Promise<any>;
|
|
30
|
+
getAuditLogs(userId?: string): Promise<any[]>;
|
|
31
|
+
reset(): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
export declare class MockAuthService {
|
|
34
|
+
private database;
|
|
35
|
+
private jwtSecret;
|
|
36
|
+
constructor(database: MockDatabase, jwtSecret?: string);
|
|
37
|
+
private generateToken;
|
|
38
|
+
private decodeToken;
|
|
39
|
+
private mapMockUserToAuthUser;
|
|
40
|
+
login(credentials: LoginCredentials): Promise<AuthResponse>;
|
|
41
|
+
register(data: RegisterData): Promise<AuthResponse>;
|
|
42
|
+
refreshToken(refreshToken: string): Promise<AuthResponse>;
|
|
43
|
+
logout(accessToken: string): Promise<{
|
|
44
|
+
success: boolean;
|
|
45
|
+
error?: string;
|
|
46
|
+
}>;
|
|
47
|
+
validateToken(accessToken: string): Promise<{
|
|
48
|
+
valid: boolean;
|
|
49
|
+
user?: AuthenticatedUser;
|
|
50
|
+
error?: string;
|
|
51
|
+
}>;
|
|
52
|
+
getUserProfile(userId: string): Promise<{
|
|
53
|
+
success: boolean;
|
|
54
|
+
user?: AuthenticatedUser;
|
|
55
|
+
error?: string;
|
|
56
|
+
}>;
|
|
57
|
+
getStats(): Promise<any>;
|
|
58
|
+
getAuditLogs(userId?: string): Promise<any[]>;
|
|
59
|
+
reset(): Promise<void>;
|
|
60
|
+
}
|
|
61
|
+
export {};
|
|
62
|
+
//# sourceMappingURL=mockAuthService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockAuthService.d.ts","sourceRoot":"","sources":["../../src/mock/mockAuthService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MockAuthService = void 0;
|
|
4
|
+
class MockAuthService {
|
|
5
|
+
constructor(database, jwtSecret = 'mock-secret') {
|
|
6
|
+
this.database = database;
|
|
7
|
+
this.jwtSecret = jwtSecret;
|
|
8
|
+
}
|
|
9
|
+
// Mock JWT token generation (simplified)
|
|
10
|
+
generateToken(payload, expiresIn = '24h') {
|
|
11
|
+
const header = btoa(JSON.stringify({ alg: 'HS256', typ: 'JWT' }));
|
|
12
|
+
const now = Math.floor(Date.now() / 1000);
|
|
13
|
+
const exp = now + (expiresIn === '24h' ? 86400 : expiresIn === '7d' ? 604800 : 3600);
|
|
14
|
+
const tokenPayload = {
|
|
15
|
+
...payload,
|
|
16
|
+
iat: now,
|
|
17
|
+
exp
|
|
18
|
+
};
|
|
19
|
+
const payloadEncoded = btoa(JSON.stringify(tokenPayload));
|
|
20
|
+
const signature = btoa(`${header}.${payloadEncoded}.${this.jwtSecret}`);
|
|
21
|
+
return `${header}.${payloadEncoded}.${signature}`;
|
|
22
|
+
}
|
|
23
|
+
decodeToken(token) {
|
|
24
|
+
try {
|
|
25
|
+
const parts = token.split('.');
|
|
26
|
+
if (parts.length !== 3)
|
|
27
|
+
return null;
|
|
28
|
+
const payload = JSON.parse(atob(parts[1]));
|
|
29
|
+
// Check expiration
|
|
30
|
+
if (payload.exp && payload.exp < Math.floor(Date.now() / 1000)) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
return payload;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
mapMockUserToAuthUser(mockUser) {
|
|
40
|
+
return {
|
|
41
|
+
id: mockUser.id,
|
|
42
|
+
email: mockUser.email,
|
|
43
|
+
role: mockUser.role,
|
|
44
|
+
createdAt: new Date(mockUser.createdAt),
|
|
45
|
+
updatedAt: new Date(mockUser.updatedAt)
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
async login(credentials) {
|
|
49
|
+
try {
|
|
50
|
+
await this.database.initialize();
|
|
51
|
+
// Find user by email
|
|
52
|
+
const mockUser = await this.database.getUserByEmail(credentials.email);
|
|
53
|
+
if (!mockUser) {
|
|
54
|
+
return {
|
|
55
|
+
success: false,
|
|
56
|
+
error: 'Invalid credentials'
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
// Check password (plain text comparison for demo)
|
|
60
|
+
if (mockUser.password !== credentials.password) {
|
|
61
|
+
await this.database.logAudit({
|
|
62
|
+
userId: mockUser.id,
|
|
63
|
+
action: 'LOGIN_FAILED',
|
|
64
|
+
resource: 'auth',
|
|
65
|
+
metadata: JSON.stringify({ reason: 'invalid_password' })
|
|
66
|
+
});
|
|
67
|
+
return {
|
|
68
|
+
success: false,
|
|
69
|
+
error: 'Invalid credentials'
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
// Generate tokens
|
|
73
|
+
const tokenPayload = {
|
|
74
|
+
userId: mockUser.id,
|
|
75
|
+
email: mockUser.email,
|
|
76
|
+
role: mockUser.role
|
|
77
|
+
};
|
|
78
|
+
const accessToken = this.generateToken(tokenPayload, '24h');
|
|
79
|
+
const refreshToken = this.generateToken(tokenPayload, '7d');
|
|
80
|
+
// Create session
|
|
81
|
+
const expiresAt = new Date();
|
|
82
|
+
expiresAt.setDate(expiresAt.getDate() + 7); // 7 days from now
|
|
83
|
+
await this.database.createSession({
|
|
84
|
+
userId: mockUser.id,
|
|
85
|
+
accessToken,
|
|
86
|
+
refreshToken,
|
|
87
|
+
expiresAt: expiresAt.toISOString()
|
|
88
|
+
});
|
|
89
|
+
// Log successful login
|
|
90
|
+
await this.database.logAudit({
|
|
91
|
+
userId: mockUser.id,
|
|
92
|
+
action: 'LOGIN_SUCCESS',
|
|
93
|
+
resource: 'auth'
|
|
94
|
+
});
|
|
95
|
+
const user = this.mapMockUserToAuthUser(mockUser);
|
|
96
|
+
return {
|
|
97
|
+
success: true,
|
|
98
|
+
user,
|
|
99
|
+
tokens: {
|
|
100
|
+
accessToken,
|
|
101
|
+
refreshToken
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
console.error('Login error:', error);
|
|
107
|
+
return {
|
|
108
|
+
success: false,
|
|
109
|
+
error: 'Login failed'
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
async register(data) {
|
|
114
|
+
try {
|
|
115
|
+
await this.database.initialize();
|
|
116
|
+
// Check if user already exists
|
|
117
|
+
const existingUser = await this.database.getUserByEmail(data.email);
|
|
118
|
+
if (existingUser) {
|
|
119
|
+
return {
|
|
120
|
+
success: false,
|
|
121
|
+
error: 'User already exists'
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
// Create new user
|
|
125
|
+
const mockUser = await this.database.createUser({
|
|
126
|
+
email: data.email,
|
|
127
|
+
password: data.password, // Plain text for demo
|
|
128
|
+
firstName: data.firstName || 'User',
|
|
129
|
+
lastName: data.lastName || 'Name',
|
|
130
|
+
role: 'user'
|
|
131
|
+
});
|
|
132
|
+
// Generate tokens
|
|
133
|
+
const tokenPayload = {
|
|
134
|
+
userId: mockUser.id,
|
|
135
|
+
email: mockUser.email,
|
|
136
|
+
role: mockUser.role
|
|
137
|
+
};
|
|
138
|
+
const accessToken = this.generateToken(tokenPayload, '24h');
|
|
139
|
+
const refreshToken = this.generateToken(tokenPayload, '7d');
|
|
140
|
+
// Create session
|
|
141
|
+
const expiresAt = new Date();
|
|
142
|
+
expiresAt.setDate(expiresAt.getDate() + 7);
|
|
143
|
+
await this.database.createSession({
|
|
144
|
+
userId: mockUser.id,
|
|
145
|
+
accessToken,
|
|
146
|
+
refreshToken,
|
|
147
|
+
expiresAt: expiresAt.toISOString()
|
|
148
|
+
});
|
|
149
|
+
// Log registration
|
|
150
|
+
await this.database.logAudit({
|
|
151
|
+
userId: mockUser.id,
|
|
152
|
+
action: 'REGISTER',
|
|
153
|
+
resource: 'auth'
|
|
154
|
+
});
|
|
155
|
+
const user = this.mapMockUserToAuthUser(mockUser);
|
|
156
|
+
return {
|
|
157
|
+
success: true,
|
|
158
|
+
user,
|
|
159
|
+
tokens: {
|
|
160
|
+
accessToken,
|
|
161
|
+
refreshToken
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
console.error('Registration error:', error);
|
|
167
|
+
return {
|
|
168
|
+
success: false,
|
|
169
|
+
error: 'Registration failed'
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
async refreshToken(refreshToken) {
|
|
174
|
+
try {
|
|
175
|
+
await this.database.initialize();
|
|
176
|
+
// Decode refresh token
|
|
177
|
+
const payload = this.decodeToken(refreshToken);
|
|
178
|
+
if (!payload) {
|
|
179
|
+
return {
|
|
180
|
+
success: false,
|
|
181
|
+
error: 'Invalid refresh token'
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
// Find session
|
|
185
|
+
const session = await this.database.getSessionByToken(refreshToken);
|
|
186
|
+
if (!session) {
|
|
187
|
+
return {
|
|
188
|
+
success: false,
|
|
189
|
+
error: 'Session not found'
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
// Get user
|
|
193
|
+
const user = await this.database.getUserById(payload.userId);
|
|
194
|
+
if (!user) {
|
|
195
|
+
return {
|
|
196
|
+
success: false,
|
|
197
|
+
error: 'User not found'
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
// Generate new tokens
|
|
201
|
+
const tokenPayload = {
|
|
202
|
+
userId: user.id,
|
|
203
|
+
email: user.email,
|
|
204
|
+
role: user.role
|
|
205
|
+
};
|
|
206
|
+
const newAccessToken = this.generateToken(tokenPayload, '24h');
|
|
207
|
+
const newRefreshToken = this.generateToken(tokenPayload, '7d');
|
|
208
|
+
// Update session
|
|
209
|
+
await this.database.deleteSession(refreshToken);
|
|
210
|
+
const expiresAt = new Date();
|
|
211
|
+
expiresAt.setDate(expiresAt.getDate() + 7);
|
|
212
|
+
await this.database.createSession({
|
|
213
|
+
userId: user.id,
|
|
214
|
+
accessToken: newAccessToken,
|
|
215
|
+
refreshToken: newRefreshToken,
|
|
216
|
+
expiresAt: expiresAt.toISOString()
|
|
217
|
+
});
|
|
218
|
+
// Log token refresh
|
|
219
|
+
await this.database.logAudit({
|
|
220
|
+
userId: user.id,
|
|
221
|
+
action: 'TOKEN_REFRESH',
|
|
222
|
+
resource: 'auth'
|
|
223
|
+
});
|
|
224
|
+
const authUser = this.mapMockUserToAuthUser(user);
|
|
225
|
+
return {
|
|
226
|
+
success: true,
|
|
227
|
+
user: authUser,
|
|
228
|
+
tokens: {
|
|
229
|
+
accessToken: newAccessToken,
|
|
230
|
+
refreshToken: newRefreshToken
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
catch (error) {
|
|
235
|
+
console.error('Token refresh error:', error);
|
|
236
|
+
return {
|
|
237
|
+
success: false,
|
|
238
|
+
error: 'Token refresh failed'
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
async logout(accessToken) {
|
|
243
|
+
try {
|
|
244
|
+
await this.database.initialize();
|
|
245
|
+
// Decode token to get user info
|
|
246
|
+
const payload = this.decodeToken(accessToken);
|
|
247
|
+
// Delete session
|
|
248
|
+
await this.database.deleteSession(accessToken);
|
|
249
|
+
// Log logout
|
|
250
|
+
if (payload) {
|
|
251
|
+
await this.database.logAudit({
|
|
252
|
+
userId: payload.userId,
|
|
253
|
+
action: 'LOGOUT',
|
|
254
|
+
resource: 'auth'
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
return { success: true };
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
console.error('Logout error:', error);
|
|
261
|
+
return {
|
|
262
|
+
success: false,
|
|
263
|
+
error: 'Logout failed'
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
async validateToken(accessToken) {
|
|
268
|
+
try {
|
|
269
|
+
await this.database.initialize();
|
|
270
|
+
// Decode token
|
|
271
|
+
const payload = this.decodeToken(accessToken);
|
|
272
|
+
if (!payload) {
|
|
273
|
+
return {
|
|
274
|
+
valid: false,
|
|
275
|
+
error: 'Invalid token'
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
// Check session exists
|
|
279
|
+
const session = await this.database.getSessionByToken(accessToken);
|
|
280
|
+
if (!session) {
|
|
281
|
+
return {
|
|
282
|
+
valid: false,
|
|
283
|
+
error: 'Session not found or expired'
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
// Get user
|
|
287
|
+
const user = await this.database.getUserById(payload.userId);
|
|
288
|
+
if (!user) {
|
|
289
|
+
return {
|
|
290
|
+
valid: false,
|
|
291
|
+
error: 'User not found'
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
return {
|
|
295
|
+
valid: true,
|
|
296
|
+
user: this.mapMockUserToAuthUser(user)
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
catch (error) {
|
|
300
|
+
console.error('Token validation error:', error);
|
|
301
|
+
return {
|
|
302
|
+
valid: false,
|
|
303
|
+
error: 'Token validation failed'
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
async getUserProfile(userId) {
|
|
308
|
+
try {
|
|
309
|
+
await this.database.initialize();
|
|
310
|
+
const mockUser = await this.database.getUserById(userId);
|
|
311
|
+
if (!mockUser) {
|
|
312
|
+
return {
|
|
313
|
+
success: false,
|
|
314
|
+
error: 'User not found'
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
return {
|
|
318
|
+
success: true,
|
|
319
|
+
user: this.mapMockUserToAuthUser(mockUser)
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
catch (error) {
|
|
323
|
+
console.error('Get profile error:', error);
|
|
324
|
+
return {
|
|
325
|
+
success: false,
|
|
326
|
+
error: 'Failed to get user profile'
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
// Utility methods
|
|
331
|
+
async getStats() {
|
|
332
|
+
await this.database.initialize();
|
|
333
|
+
return await this.database.getStats();
|
|
334
|
+
}
|
|
335
|
+
async getAuditLogs(userId) {
|
|
336
|
+
await this.database.initialize();
|
|
337
|
+
return await this.database.getAuditLogs(userId);
|
|
338
|
+
}
|
|
339
|
+
async reset() {
|
|
340
|
+
await this.database.reset();
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
exports.MockAuthService = MockAuthService;
|
|
344
|
+
//# sourceMappingURL=mockAuthService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockAuthService.js","sourceRoot":"","sources":["../../src/mock/mockAuthService.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@siriux/auth",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Siriux Authentication - JWT authentication and session management",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -23,30 +23,31 @@
|
|
|
23
23
|
"author": "jawwad@alsirius.co.uk",
|
|
24
24
|
"license": "MIT",
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"express": "^4.18.2",
|
|
27
|
-
"jsonwebtoken": "^9.0.2",
|
|
28
26
|
"bcryptjs": "^2.4.3",
|
|
29
|
-
"joi": "^17.11.0",
|
|
30
27
|
"cors": "^2.8.5",
|
|
31
28
|
"dotenv": "^16.3.1",
|
|
29
|
+
"express": "^4.18.2",
|
|
30
|
+
"joi": "^17.11.0",
|
|
31
|
+
"jsonwebtoken": "^9.0.2",
|
|
32
32
|
"uuid": "^9.0.1",
|
|
33
33
|
"winston": "^3.11.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@types/node": "^20.10.5",
|
|
37
|
-
"@types/express": "^4.17.21",
|
|
38
|
-
"@types/jsonwebtoken": "^9.0.5",
|
|
39
36
|
"@types/bcryptjs": "^2.4.6",
|
|
40
37
|
"@types/cors": "^2.8.17",
|
|
38
|
+
"@types/express": "^4.17.21",
|
|
39
|
+
"@types/jest": "^29.5.8",
|
|
40
|
+
"@types/jsonwebtoken": "^9.0.5",
|
|
41
|
+
"@types/node": "^20.10.5",
|
|
41
42
|
"@types/uuid": "^9.0.7",
|
|
42
|
-
"typescript": "^5.3.3",
|
|
43
43
|
"jest": "^29.7.0",
|
|
44
|
-
"
|
|
44
|
+
"typescript": "^5.3.3"
|
|
45
45
|
},
|
|
46
46
|
"files": [
|
|
47
47
|
"dist/**/*"
|
|
48
48
|
],
|
|
49
49
|
"publishConfig": {
|
|
50
50
|
"access": "public"
|
|
51
|
-
}
|
|
51
|
+
},
|
|
52
|
+
"gitHead": "7a9592f8e9ed3f1301046046e1e05811cecc24be"
|
|
52
53
|
}
|