@zakyyudha/node-authzkit 1.0.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.
- package/.eslintrc.cjs +17 -0
- package/.prettierrc.json +10 -0
- package/.release-it.json +24 -0
- package/README.md +221 -0
- package/dist/src/classes/Authzkit.d.ts +110 -0
- package/dist/src/classes/Authzkit.js +189 -0
- package/dist/src/classes/Authzkit.js.map +1 -0
- package/dist/src/dashboard/router.d.ts +19 -0
- package/dist/src/dashboard/router.js +89 -0
- package/dist/src/dashboard/router.js.map +1 -0
- package/dist/src/dashboard/routes/permissions.d.ts +3 -0
- package/dist/src/dashboard/routes/permissions.js +39 -0
- package/dist/src/dashboard/routes/permissions.js.map +1 -0
- package/dist/src/dashboard/routes/roles.d.ts +3 -0
- package/dist/src/dashboard/routes/roles.js +39 -0
- package/dist/src/dashboard/routes/roles.js.map +1 -0
- package/dist/src/dashboard/routes/users.d.ts +3 -0
- package/dist/src/dashboard/routes/users.js +81 -0
- package/dist/src/dashboard/routes/users.js.map +1 -0
- package/dist/src/drivers/mongodb/mongo-connection.d.ts +15 -0
- package/dist/src/drivers/mongodb/mongo-connection.js +89 -0
- package/dist/src/drivers/mongodb/mongo-connection.js.map +1 -0
- package/dist/src/drivers/postgres/pg-connection.d.ts +17 -0
- package/dist/src/drivers/postgres/pg-connection.js +145 -0
- package/dist/src/drivers/postgres/pg-connection.js.map +1 -0
- package/dist/src/index.d.ts +19 -0
- package/dist/src/index.js +36 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/interfaces/Authorizable.d.ts +7 -0
- package/dist/src/interfaces/Authorizable.js +3 -0
- package/dist/src/interfaces/Authorizable.js.map +1 -0
- package/dist/src/interfaces/IAuthzkitConfig.d.ts +18 -0
- package/dist/src/interfaces/IAuthzkitConfig.js +3 -0
- package/dist/src/interfaces/IAuthzkitConfig.js.map +1 -0
- package/dist/src/interfaces/Permission.d.ts +4 -0
- package/dist/src/interfaces/Permission.js +3 -0
- package/dist/src/interfaces/Permission.js.map +1 -0
- package/dist/src/interfaces/Role.d.ts +5 -0
- package/dist/src/interfaces/Role.js +3 -0
- package/dist/src/interfaces/Role.js.map +1 -0
- package/dist/src/middleware/authzMiddleware.d.ts +17 -0
- package/dist/src/middleware/authzMiddleware.js +52 -0
- package/dist/src/middleware/authzMiddleware.js.map +1 -0
- package/dist/src/stores/IAuthzkitStore.d.ts +23 -0
- package/dist/src/stores/IAuthzkitStore.js +3 -0
- package/dist/src/stores/IAuthzkitStore.js.map +1 -0
- package/dist/src/stores/InMemoryAuthzkitStore.d.ts +28 -0
- package/dist/src/stores/InMemoryAuthzkitStore.js +83 -0
- package/dist/src/stores/InMemoryAuthzkitStore.js.map +1 -0
- package/dist/src/stores/MongoAuthzkitStore.d.ts +31 -0
- package/dist/src/stores/MongoAuthzkitStore.js +127 -0
- package/dist/src/stores/MongoAuthzkitStore.js.map +1 -0
- package/dist/src/stores/PgAuthzkitStore.d.ts +31 -0
- package/dist/src/stores/PgAuthzkitStore.js +133 -0
- package/dist/src/stores/PgAuthzkitStore.js.map +1 -0
- package/dist/src/utils/envConfig.d.ts +2 -0
- package/dist/src/utils/envConfig.js +68 -0
- package/dist/src/utils/envConfig.js.map +1 -0
- package/dist/tests/Authzkit.test.d.ts +1 -0
- package/dist/tests/Authzkit.test.js +126 -0
- package/dist/tests/Authzkit.test.js.map +1 -0
- package/dist/tests/MongoAuthzkitStore.test.d.ts +1 -0
- package/dist/tests/MongoAuthzkitStore.test.js +161 -0
- package/dist/tests/MongoAuthzkitStore.test.js.map +1 -0
- package/dist/tests/MongoAuthzkitStoreCustom.test.d.ts +1 -0
- package/dist/tests/MongoAuthzkitStoreCustom.test.js +65 -0
- package/dist/tests/MongoAuthzkitStoreCustom.test.js.map +1 -0
- package/dist/tests/PgAuthzkitStore.test.d.ts +1 -0
- package/dist/tests/PgAuthzkitStore.test.js +163 -0
- package/dist/tests/PgAuthzkitStore.test.js.map +1 -0
- package/dist/tests/PgAuthzkitStoreCustom.test.d.ts +1 -0
- package/dist/tests/PgAuthzkitStoreCustom.test.js +74 -0
- package/dist/tests/PgAuthzkitStoreCustom.test.js.map +1 -0
- package/examples/express-app.ts +65 -0
- package/jest.config.js +9 -0
- package/package.json +57 -0
- package/src/classes/Authzkit.ts +214 -0
- package/src/dashboard/router.ts +79 -0
- package/src/dashboard/routes/permissions.ts +38 -0
- package/src/dashboard/routes/roles.ts +38 -0
- package/src/dashboard/routes/users.ts +81 -0
- package/src/dashboard/web/README.md +73 -0
- package/src/dashboard/web/eslint.config.js +23 -0
- package/src/dashboard/web/index.html +13 -0
- package/src/dashboard/web/package.json +31 -0
- package/src/dashboard/web/pnpm-lock.yaml +2094 -0
- package/src/dashboard/web/public/vite.svg +1 -0
- package/src/dashboard/web/src/App.css +42 -0
- package/src/dashboard/web/src/App.tsx +26 -0
- package/src/dashboard/web/src/assets/react.svg +1 -0
- package/src/dashboard/web/src/components/Navbar.tsx +53 -0
- package/src/dashboard/web/src/index.css +138 -0
- package/src/dashboard/web/src/main.tsx +10 -0
- package/src/dashboard/web/src/pages/PermissionsPage.tsx +87 -0
- package/src/dashboard/web/src/pages/RolesPage.tsx +98 -0
- package/src/dashboard/web/src/pages/UsersPage.tsx +146 -0
- package/src/dashboard/web/src/services/api.ts +59 -0
- package/src/dashboard/web/tsconfig.app.json +28 -0
- package/src/dashboard/web/tsconfig.json +7 -0
- package/src/dashboard/web/tsconfig.node.json +26 -0
- package/src/dashboard/web/vite.config.ts +8 -0
- package/src/drivers/mongodb/mongo-connection.ts +98 -0
- package/src/drivers/postgres/pg-connection.ts +159 -0
- package/src/index.ts +19 -0
- package/src/interfaces/Authorizable.ts +8 -0
- package/src/interfaces/IAuthzkitConfig.ts +19 -0
- package/src/interfaces/Permission.ts +4 -0
- package/src/interfaces/Role.ts +5 -0
- package/src/middleware/authzMiddleware.ts +60 -0
- package/src/stores/IAuthzkitStore.ts +33 -0
- package/src/stores/InMemoryAuthzkitStore.ts +101 -0
- package/src/stores/MongoAuthzkitStore.ts +171 -0
- package/src/stores/PgAuthzkitStore.ts +191 -0
- package/src/utils/envConfig.ts +70 -0
- package/tests/Authzkit.test.ts +157 -0
- package/tests/MongoAuthzkitStore.test.ts +204 -0
- package/tests/MongoAuthzkitStoreCustom.test.ts +75 -0
- package/tests/PgAuthzkitStore.test.ts +207 -0
- package/tests/PgAuthzkitStoreCustom.test.ts +90 -0
- package/tsconfig.json +37 -0
|
@@ -0,0 +1,89 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.createDashboardRouter = createDashboardRouter;
|
|
40
|
+
const express_1 = require("express");
|
|
41
|
+
const express = __importStar(require("express"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const basic_auth_1 = __importDefault(require("basic-auth"));
|
|
45
|
+
const roles_1 = __importDefault(require("./routes/roles"));
|
|
46
|
+
const permissions_1 = __importDefault(require("./routes/permissions"));
|
|
47
|
+
const users_1 = __importDefault(require("./routes/users"));
|
|
48
|
+
function createDashboardRouter(options = {}) {
|
|
49
|
+
const router = (0, express_1.Router)();
|
|
50
|
+
const username = options.username || process.env.AUTHZKIT_DASHBOARD_USERNAME || 'admin';
|
|
51
|
+
const secret = options.secret || process.env.AUTHZKIT_DASHBOARD_SECRET;
|
|
52
|
+
// Trailing slash redirection for proper relative path resolution in frontend
|
|
53
|
+
router.use((req, res, next) => {
|
|
54
|
+
if (req.path === '/' && !req.originalUrl.endsWith('/')) {
|
|
55
|
+
return res.redirect(req.originalUrl + '/');
|
|
56
|
+
}
|
|
57
|
+
next();
|
|
58
|
+
});
|
|
59
|
+
// Basic Authentication Middleware
|
|
60
|
+
router.use((req, res, next) => {
|
|
61
|
+
if (!secret) {
|
|
62
|
+
console.warn('Authzkit Dashboard: No secret provided. Dashboard is disabled.');
|
|
63
|
+
return res.status(500).send('Dashboard configuration error: No secret provided.');
|
|
64
|
+
}
|
|
65
|
+
const user = (0, basic_auth_1.default)(req);
|
|
66
|
+
if (!user || user.name !== username || user.pass !== secret) {
|
|
67
|
+
res.set('WWW-Authenticate', 'Basic realm="Authzkit Dashboard"');
|
|
68
|
+
return res.status(401).send('Authentication required.');
|
|
69
|
+
}
|
|
70
|
+
next();
|
|
71
|
+
});
|
|
72
|
+
// API Routes
|
|
73
|
+
router.use('/api/roles', roles_1.default);
|
|
74
|
+
router.use('/api/permissions', permissions_1.default);
|
|
75
|
+
router.use('/api/users', users_1.default);
|
|
76
|
+
// Static Assets
|
|
77
|
+
// In src environment: ./web/dist (relative to this file)
|
|
78
|
+
const staticPath = path.join(__dirname, 'web/dist');
|
|
79
|
+
// In dist environment, this file is in dist/src/dashboard/router.js
|
|
80
|
+
// And web assets are in dist/src/dashboard/web/dist (copied by build script)
|
|
81
|
+
// So relative path is still 'web/dist'
|
|
82
|
+
// Check if dist exists (maybe we are in dev and it hasn't been built yet, or path is wrong)
|
|
83
|
+
if (!fs.existsSync(staticPath)) {
|
|
84
|
+
console.warn(`Authzkit Dashboard: Static assets not found at ${staticPath}. Did you run 'pnpm build:web'?`);
|
|
85
|
+
}
|
|
86
|
+
router.use(express.static(staticPath));
|
|
87
|
+
return router;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/dashboard/router.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,sDAmDC;AA9ED,qCAAiC;AACjC,iDAAmC;AACnC,2CAA6B;AAC7B,uCAAyB;AACzB,4DAAmC;AACnC,2DAAyC;AACzC,uEAAqD;AACrD,2DAAyC;AAoBzC,SAAgB,qBAAqB,CAAC,UAA4B,EAAE;IAClE,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;IACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,OAAO,CAAC;IACxF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;IAEvE,6EAA6E;IAC7E,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvD,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,kCAAkC;IAClC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;YAC/E,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,IAAI,GAAG,IAAA,oBAAS,EAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5D,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,kCAAkC,CAAC,CAAC;YAChE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,aAAa;IACb,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,eAAW,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,qBAAiB,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,eAAW,CAAC,CAAC;IAEtC,gBAAgB;IAChB,yDAAyD;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAEpD,oEAAoE;IACpE,6EAA6E;IAC7E,uCAAuC;IAEvC,4FAA4F;IAC5F,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CACV,kDAAkD,UAAU,iCAAiC,CAC9F,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const express_1 = require("express");
|
|
4
|
+
const Authzkit_1 = require("../../classes/Authzkit");
|
|
5
|
+
const router = (0, express_1.Router)();
|
|
6
|
+
router.get('/', async (req, res) => {
|
|
7
|
+
try {
|
|
8
|
+
const authzkit = Authzkit_1.Authzkit.getInstance();
|
|
9
|
+
const permissions = await authzkit.getPermissions();
|
|
10
|
+
res.json(permissions);
|
|
11
|
+
}
|
|
12
|
+
catch (err) {
|
|
13
|
+
res.status(500).json({ error: err.message });
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
router.post('/', async (req, res) => {
|
|
17
|
+
try {
|
|
18
|
+
const { name, guard_name } = req.body;
|
|
19
|
+
const authzkit = Authzkit_1.Authzkit.getInstance();
|
|
20
|
+
const permission = await authzkit.definePermission(name, guard_name);
|
|
21
|
+
res.status(201).json(permission);
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
res.status(400).json({ error: err.message });
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
router.delete('/:name', async (req, res) => {
|
|
28
|
+
try {
|
|
29
|
+
const { name } = req.params;
|
|
30
|
+
const authzkit = Authzkit_1.Authzkit.getInstance();
|
|
31
|
+
await authzkit.deletePermission(name);
|
|
32
|
+
res.status(204).send();
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
res.status(500).json({ error: err.message });
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
exports.default = router;
|
|
39
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../../src/dashboard/routes/permissions.ts"],"names":[],"mappings":";;AAAA,qCAAiC;AACjC,qDAAkD;AAElD,MAAM,MAAM,GAAW,IAAA,gBAAM,GAAE,CAAC;AAEhC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACjC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,mBAAQ,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;QACpD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAClC,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACtC,MAAM,QAAQ,GAAG,mBAAQ,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACrE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACzC,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC5B,MAAM,QAAQ,GAAG,mBAAQ,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACtC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,kBAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const express_1 = require("express");
|
|
4
|
+
const Authzkit_1 = require("../../classes/Authzkit");
|
|
5
|
+
const router = (0, express_1.Router)();
|
|
6
|
+
router.get('/', async (req, res) => {
|
|
7
|
+
try {
|
|
8
|
+
const authzkit = Authzkit_1.Authzkit.getInstance();
|
|
9
|
+
const roles = await authzkit.getRoles();
|
|
10
|
+
res.json(roles);
|
|
11
|
+
}
|
|
12
|
+
catch (err) {
|
|
13
|
+
res.status(500).json({ error: err.message });
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
router.post('/', async (req, res) => {
|
|
17
|
+
try {
|
|
18
|
+
const { name, permissions, guard_name } = req.body;
|
|
19
|
+
const authzkit = Authzkit_1.Authzkit.getInstance();
|
|
20
|
+
const role = await authzkit.defineRole(name, permissions, guard_name);
|
|
21
|
+
res.status(201).json(role);
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
res.status(400).json({ error: err.message });
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
router.delete('/:name', async (req, res) => {
|
|
28
|
+
try {
|
|
29
|
+
const { name } = req.params;
|
|
30
|
+
const authzkit = Authzkit_1.Authzkit.getInstance();
|
|
31
|
+
await authzkit.deleteRole(name);
|
|
32
|
+
res.status(204).send();
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
res.status(500).json({ error: err.message });
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
exports.default = router;
|
|
39
|
+
//# sourceMappingURL=roles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../../src/dashboard/routes/roles.ts"],"names":[],"mappings":";;AAAA,qCAAiC;AACjC,qDAAkD;AAElD,MAAM,MAAM,GAAW,IAAA,gBAAM,GAAE,CAAC;AAEhC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACjC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,mBAAQ,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAClC,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACnD,MAAM,QAAQ,GAAG,mBAAQ,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QACtE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACzC,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC5B,MAAM,QAAQ,GAAG,mBAAQ,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAChC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,kBAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const express_1 = require("express");
|
|
4
|
+
const Authzkit_1 = require("../../classes/Authzkit");
|
|
5
|
+
const router = (0, express_1.Router)();
|
|
6
|
+
router.get('/:userId/roles', async (req, res) => {
|
|
7
|
+
try {
|
|
8
|
+
const { userId } = req.params;
|
|
9
|
+
const user = { id: userId, roles: [], permissions: [] };
|
|
10
|
+
const authzkit = Authzkit_1.Authzkit.getInstance();
|
|
11
|
+
const roles = await authzkit.getUserRoles(user);
|
|
12
|
+
res.json(Array.from(roles));
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
res.status(500).json({ error: err.message });
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
router.post('/:userId/roles', async (req, res) => {
|
|
19
|
+
try {
|
|
20
|
+
const { userId } = req.params;
|
|
21
|
+
const { roleName } = req.body;
|
|
22
|
+
const user = { id: userId, roles: [], permissions: [] };
|
|
23
|
+
const authzkit = Authzkit_1.Authzkit.getInstance();
|
|
24
|
+
await authzkit.assignRole(user, roleName);
|
|
25
|
+
res.status(201).send();
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
res.status(400).json({ error: err.message });
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
router.delete('/:userId/roles/:roleName', async (req, res) => {
|
|
32
|
+
try {
|
|
33
|
+
const { userId, roleName } = req.params;
|
|
34
|
+
const user = { id: userId, roles: [], permissions: [] };
|
|
35
|
+
const authzkit = Authzkit_1.Authzkit.getInstance();
|
|
36
|
+
await authzkit.revokeRole(user, roleName);
|
|
37
|
+
res.status(204).send();
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
res.status(500).json({ error: err.message });
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
router.get('/:userId/permissions', async (req, res) => {
|
|
44
|
+
try {
|
|
45
|
+
const { userId } = req.params;
|
|
46
|
+
const user = { id: userId, roles: [], permissions: [] };
|
|
47
|
+
const authzkit = Authzkit_1.Authzkit.getInstance();
|
|
48
|
+
const permissions = await authzkit.getUserPermissions(user);
|
|
49
|
+
res.json(Array.from(permissions));
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
res.status(500).json({ error: err.message });
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
router.post('/:userId/permissions', async (req, res) => {
|
|
56
|
+
try {
|
|
57
|
+
const { userId } = req.params;
|
|
58
|
+
const { permissionName } = req.body;
|
|
59
|
+
const user = { id: userId, roles: [], permissions: [] };
|
|
60
|
+
const authzkit = Authzkit_1.Authzkit.getInstance();
|
|
61
|
+
await authzkit.assignPermission(user, permissionName);
|
|
62
|
+
res.status(201).send();
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
res.status(400).json({ error: err.message });
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
router.delete('/:userId/permissions/:permissionName', async (req, res) => {
|
|
69
|
+
try {
|
|
70
|
+
const { userId, permissionName } = req.params;
|
|
71
|
+
const user = { id: userId, roles: [], permissions: [] };
|
|
72
|
+
const authzkit = Authzkit_1.Authzkit.getInstance();
|
|
73
|
+
await authzkit.revokePermission(user, permissionName);
|
|
74
|
+
res.status(204).send();
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
res.status(500).json({ error: err.message });
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
exports.default = router;
|
|
81
|
+
//# sourceMappingURL=users.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../../../src/dashboard/routes/users.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { MongoClient, Db } from 'mongodb';
|
|
2
|
+
import { IAuthzkitConfig } from '../../interfaces/IAuthzkitConfig';
|
|
3
|
+
export declare class MongoConnection {
|
|
4
|
+
private static instance;
|
|
5
|
+
private client;
|
|
6
|
+
private db;
|
|
7
|
+
private config;
|
|
8
|
+
private constructor();
|
|
9
|
+
static getInstance(config: IAuthzkitConfig, client?: MongoClient): MongoConnection;
|
|
10
|
+
connect(): Promise<void>;
|
|
11
|
+
disconnect(): Promise<void>;
|
|
12
|
+
getDb(): Db;
|
|
13
|
+
getConfig(): IAuthzkitConfig;
|
|
14
|
+
getCollectionName(name: keyof NonNullable<IAuthzkitConfig['models']>): string;
|
|
15
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MongoConnection = void 0;
|
|
4
|
+
const mongodb_1 = require("mongodb");
|
|
5
|
+
class MongoConnection {
|
|
6
|
+
static instance = null;
|
|
7
|
+
client = null;
|
|
8
|
+
db = null;
|
|
9
|
+
config;
|
|
10
|
+
constructor(config) {
|
|
11
|
+
this.config = config;
|
|
12
|
+
}
|
|
13
|
+
static getInstance(config, client) {
|
|
14
|
+
// If an existing instance exists and same URI/DB, return it.
|
|
15
|
+
if (MongoConnection.instance &&
|
|
16
|
+
MongoConnection.instance.config.connection.uri === config.connection.uri &&
|
|
17
|
+
MongoConnection.instance.config.connection.database === config.connection.database &&
|
|
18
|
+
!client) {
|
|
19
|
+
return MongoConnection.instance;
|
|
20
|
+
}
|
|
21
|
+
// Create a new instance
|
|
22
|
+
MongoConnection.instance = new MongoConnection(config);
|
|
23
|
+
if (client) {
|
|
24
|
+
MongoConnection.instance.client = client;
|
|
25
|
+
if (config.connection.database) {
|
|
26
|
+
MongoConnection.instance.db = client.db(config.connection.database);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return MongoConnection.instance;
|
|
30
|
+
}
|
|
31
|
+
async connect() {
|
|
32
|
+
const dbName = this.config.connection.database;
|
|
33
|
+
if (!dbName) {
|
|
34
|
+
throw new Error('Database name not provided in configuration.');
|
|
35
|
+
}
|
|
36
|
+
// If client is already set (e.g., from mongodb-memory-server), just ensure db is set
|
|
37
|
+
if (this.client) {
|
|
38
|
+
// Assuming client options might not directly expose dbName in a standard way across versions,
|
|
39
|
+
// relying on the configured dbName.
|
|
40
|
+
if (!this.db) {
|
|
41
|
+
this.db = this.client.db(dbName);
|
|
42
|
+
}
|
|
43
|
+
console.log('MongoDB client already provided/connected.');
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (!this.config.connection.uri) {
|
|
47
|
+
throw new Error('MongoDB URI not provided in configuration.');
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
this.client = await mongodb_1.MongoClient.connect(this.config.connection.uri);
|
|
51
|
+
this.db = this.client.db(dbName);
|
|
52
|
+
console.log('Connected to MongoDB successfully.');
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.error('Failed to connect to MongoDB', error);
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async disconnect() {
|
|
60
|
+
if (this.client) {
|
|
61
|
+
await this.client.close();
|
|
62
|
+
this.client = null;
|
|
63
|
+
this.db = null;
|
|
64
|
+
console.log('Disconnected from MongoDB.');
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
getDb() {
|
|
68
|
+
if (!this.db) {
|
|
69
|
+
throw new Error('Database not connected. Call connect() first.');
|
|
70
|
+
}
|
|
71
|
+
return this.db;
|
|
72
|
+
}
|
|
73
|
+
getConfig() {
|
|
74
|
+
return this.config;
|
|
75
|
+
}
|
|
76
|
+
getCollectionName(name) {
|
|
77
|
+
const models = this.config.models || {};
|
|
78
|
+
const defaults = {
|
|
79
|
+
users: 'users',
|
|
80
|
+
roles: 'roles',
|
|
81
|
+
permissions: 'permissions',
|
|
82
|
+
user_roles: 'user_roles',
|
|
83
|
+
user_permissions: 'user_permissions',
|
|
84
|
+
};
|
|
85
|
+
return models[name] || defaults[name] || name;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.MongoConnection = MongoConnection;
|
|
89
|
+
//# sourceMappingURL=mongo-connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongo-connection.js","sourceRoot":"","sources":["../../../../src/drivers/mongodb/mongo-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { QueryResult } from 'pg';
|
|
2
|
+
import { IMemoryDb } from 'pg-mem';
|
|
3
|
+
import { IAuthzkitConfig } from '../../interfaces/IAuthzkitConfig';
|
|
4
|
+
export declare class PgConnection {
|
|
5
|
+
private static instance;
|
|
6
|
+
private poolOrClient;
|
|
7
|
+
private config;
|
|
8
|
+
private constructor();
|
|
9
|
+
static getInstance(config: IAuthzkitConfig, inMemoryDb?: IMemoryDb): PgConnection;
|
|
10
|
+
connect(): Promise<void>;
|
|
11
|
+
disconnect(): Promise<void>;
|
|
12
|
+
query(text: string, params?: any[]): Promise<QueryResult>;
|
|
13
|
+
getTableName(name: keyof NonNullable<IAuthzkitConfig['models']>): string;
|
|
14
|
+
initSchema(): Promise<void>;
|
|
15
|
+
truncateTables(): Promise<void>;
|
|
16
|
+
dropSchema(): Promise<void>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PgConnection = void 0;
|
|
4
|
+
const pg_1 = require("pg");
|
|
5
|
+
class PgConnection {
|
|
6
|
+
static instance = null;
|
|
7
|
+
poolOrClient = null;
|
|
8
|
+
config;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.config = config;
|
|
11
|
+
}
|
|
12
|
+
static getInstance(config, inMemoryDb) {
|
|
13
|
+
// Check if instance exists and config matches (simplified)
|
|
14
|
+
if (PgConnection.instance &&
|
|
15
|
+
PgConnection.instance.config.connection.uri === config.connection.uri &&
|
|
16
|
+
!inMemoryDb) {
|
|
17
|
+
return PgConnection.instance;
|
|
18
|
+
}
|
|
19
|
+
const instance = new PgConnection(config);
|
|
20
|
+
if (inMemoryDb) {
|
|
21
|
+
// Use pg-mem's adapter
|
|
22
|
+
instance.poolOrClient = new (inMemoryDb.adapters.createPg().Client)();
|
|
23
|
+
}
|
|
24
|
+
PgConnection.instance = instance;
|
|
25
|
+
return PgConnection.instance;
|
|
26
|
+
}
|
|
27
|
+
async connect() {
|
|
28
|
+
if (this.poolOrClient &&
|
|
29
|
+
(this.poolOrClient instanceof pg_1.Pool || this.poolOrClient instanceof pg_1.Client)) {
|
|
30
|
+
console.log('Already connected to PostgreSQL.');
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (this.poolOrClient) {
|
|
34
|
+
console.log('In-memory PostgreSQL client already provided.');
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
// Create pool using config
|
|
39
|
+
const poolConfig = {};
|
|
40
|
+
if (this.config.connection.uri) {
|
|
41
|
+
poolConfig.connectionString = this.config.connection.uri;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
poolConfig.host = this.config.connection.host;
|
|
45
|
+
poolConfig.port = this.config.connection.port;
|
|
46
|
+
poolConfig.user = this.config.connection.user;
|
|
47
|
+
poolConfig.password = this.config.connection.password;
|
|
48
|
+
poolConfig.database = this.config.connection.database;
|
|
49
|
+
}
|
|
50
|
+
this.poolOrClient = new pg_1.Pool(poolConfig);
|
|
51
|
+
await this.poolOrClient.query('SELECT 1');
|
|
52
|
+
console.log('Connected to PostgreSQL successfully.');
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.error('Failed to connect to PostgreSQL', error);
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async disconnect() {
|
|
60
|
+
if (this.poolOrClient && this.poolOrClient instanceof pg_1.Pool) {
|
|
61
|
+
await this.poolOrClient.end();
|
|
62
|
+
this.poolOrClient = null;
|
|
63
|
+
console.log('Disconnected from PostgreSQL.');
|
|
64
|
+
}
|
|
65
|
+
else if (this.poolOrClient) {
|
|
66
|
+
console.log('In-memory PostgreSQL instance, no explicit disconnect needed for pool.');
|
|
67
|
+
this.poolOrClient = null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async query(text, params) {
|
|
71
|
+
if (!this.poolOrClient) {
|
|
72
|
+
throw new Error('Database not connected. Call connect() first.');
|
|
73
|
+
}
|
|
74
|
+
return this.poolOrClient.query(text, params);
|
|
75
|
+
}
|
|
76
|
+
getTableName(name) {
|
|
77
|
+
const models = this.config.models || {};
|
|
78
|
+
const defaults = {
|
|
79
|
+
users: 'users',
|
|
80
|
+
roles: 'roles',
|
|
81
|
+
permissions: 'permissions',
|
|
82
|
+
user_roles: 'user_roles',
|
|
83
|
+
user_permissions: 'user_permissions',
|
|
84
|
+
};
|
|
85
|
+
return models[name] || defaults[name] || name;
|
|
86
|
+
}
|
|
87
|
+
async initSchema() {
|
|
88
|
+
const permissionsTable = this.getTableName('permissions');
|
|
89
|
+
const rolesTable = this.getTableName('roles');
|
|
90
|
+
const userRolesTable = this.getTableName('user_roles');
|
|
91
|
+
const userPermissionsTable = this.getTableName('user_permissions');
|
|
92
|
+
await this.query(`
|
|
93
|
+
CREATE TABLE IF NOT EXISTS ${permissionsTable} (
|
|
94
|
+
name VARCHAR(255) PRIMARY KEY,
|
|
95
|
+
guard_name VARCHAR(255)
|
|
96
|
+
);
|
|
97
|
+
`);
|
|
98
|
+
await this.query(`
|
|
99
|
+
CREATE TABLE IF NOT EXISTS ${rolesTable} (
|
|
100
|
+
name VARCHAR(255) PRIMARY KEY,
|
|
101
|
+
guard_name VARCHAR(255),
|
|
102
|
+
permissions TEXT[] DEFAULT '{}'
|
|
103
|
+
);
|
|
104
|
+
`);
|
|
105
|
+
await this.query(`
|
|
106
|
+
CREATE TABLE IF NOT EXISTS ${userRolesTable} (
|
|
107
|
+
user_id VARCHAR(255) NOT NULL,
|
|
108
|
+
role_name VARCHAR(255) REFERENCES ${rolesTable}(name) ON DELETE CASCADE,
|
|
109
|
+
PRIMARY KEY (user_id, role_name)
|
|
110
|
+
);
|
|
111
|
+
`);
|
|
112
|
+
await this.query(`
|
|
113
|
+
CREATE TABLE IF NOT EXISTS ${userPermissionsTable} (
|
|
114
|
+
user_id VARCHAR(255) NOT NULL,
|
|
115
|
+
permission_name VARCHAR(255) REFERENCES ${permissionsTable}(name) ON DELETE CASCADE,
|
|
116
|
+
PRIMARY KEY (user_id, permission_name)
|
|
117
|
+
);
|
|
118
|
+
`);
|
|
119
|
+
console.log('PostgreSQL schema initialized.');
|
|
120
|
+
}
|
|
121
|
+
async truncateTables() {
|
|
122
|
+
const permissionsTable = this.getTableName('permissions');
|
|
123
|
+
const rolesTable = this.getTableName('roles');
|
|
124
|
+
const userRolesTable = this.getTableName('user_roles');
|
|
125
|
+
const userPermissionsTable = this.getTableName('user_permissions');
|
|
126
|
+
await this.query(`TRUNCATE TABLE ${userPermissionsTable} CASCADE;`);
|
|
127
|
+
await this.query(`TRUNCATE TABLE ${userRolesTable} CASCADE;`);
|
|
128
|
+
await this.query(`TRUNCATE TABLE ${rolesTable} CASCADE;`);
|
|
129
|
+
await this.query(`TRUNCATE TABLE ${permissionsTable} CASCADE;`);
|
|
130
|
+
console.log('PostgreSQL tables truncated.');
|
|
131
|
+
}
|
|
132
|
+
async dropSchema() {
|
|
133
|
+
const permissionsTable = this.getTableName('permissions');
|
|
134
|
+
const rolesTable = this.getTableName('roles');
|
|
135
|
+
const userRolesTable = this.getTableName('user_roles');
|
|
136
|
+
const userPermissionsTable = this.getTableName('user_permissions');
|
|
137
|
+
await this.query(`DROP TABLE IF EXISTS ${userPermissionsTable} CASCADE;`);
|
|
138
|
+
await this.query(`DROP TABLE IF EXISTS ${userRolesTable} CASCADE;`);
|
|
139
|
+
await this.query(`DROP TABLE IF EXISTS ${rolesTable} CASCADE;`);
|
|
140
|
+
await this.query(`DROP TABLE IF EXISTS ${permissionsTable} CASCADE;`);
|
|
141
|
+
console.log('PostgreSQL schema dropped.');
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
exports.PgConnection = PgConnection;
|
|
145
|
+
//# sourceMappingURL=pg-connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pg-connection.js","sourceRoot":"","sources":["../../../../src/drivers/postgres/pg-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export { Authzkit } from './classes/Authzkit';
|
|
2
|
+
export { Authorizable } from './interfaces/Authorizable';
|
|
3
|
+
export { Permission } from './interfaces/Permission';
|
|
4
|
+
export { Role } from './interfaces/Role';
|
|
5
|
+
export { MongoConnection } from './drivers/mongodb/mongo-connection';
|
|
6
|
+
export * from './interfaces/Authorizable';
|
|
7
|
+
export * from './interfaces/Permission';
|
|
8
|
+
export * from './interfaces/Role';
|
|
9
|
+
export * from './interfaces/IAuthzkitConfig';
|
|
10
|
+
export * from './stores/IAuthzkitStore';
|
|
11
|
+
export * from './stores/InMemoryAuthzkitStore';
|
|
12
|
+
export * from './stores/MongoAuthzkitStore';
|
|
13
|
+
export * from './stores/PgAuthzkitStore';
|
|
14
|
+
export * from './classes/Authzkit';
|
|
15
|
+
export * from './drivers/mongodb/mongo-connection';
|
|
16
|
+
export * from './drivers/postgres/pg-connection';
|
|
17
|
+
export * from './middleware/authzMiddleware';
|
|
18
|
+
export * from './dashboard/router';
|
|
19
|
+
export * from './utils/envConfig';
|
|
@@ -0,0 +1,36 @@
|
|
|
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.MongoConnection = exports.Authzkit = void 0;
|
|
18
|
+
var Authzkit_1 = require("./classes/Authzkit");
|
|
19
|
+
Object.defineProperty(exports, "Authzkit", { enumerable: true, get: function () { return Authzkit_1.Authzkit; } });
|
|
20
|
+
var mongo_connection_1 = require("./drivers/mongodb/mongo-connection");
|
|
21
|
+
Object.defineProperty(exports, "MongoConnection", { enumerable: true, get: function () { return mongo_connection_1.MongoConnection; } });
|
|
22
|
+
__exportStar(require("./interfaces/Authorizable"), exports);
|
|
23
|
+
__exportStar(require("./interfaces/Permission"), exports);
|
|
24
|
+
__exportStar(require("./interfaces/Role"), exports);
|
|
25
|
+
__exportStar(require("./interfaces/IAuthzkitConfig"), exports);
|
|
26
|
+
__exportStar(require("./stores/IAuthzkitStore"), exports);
|
|
27
|
+
__exportStar(require("./stores/InMemoryAuthzkitStore"), exports);
|
|
28
|
+
__exportStar(require("./stores/MongoAuthzkitStore"), exports);
|
|
29
|
+
__exportStar(require("./stores/PgAuthzkitStore"), exports);
|
|
30
|
+
__exportStar(require("./classes/Authzkit"), exports);
|
|
31
|
+
__exportStar(require("./drivers/mongodb/mongo-connection"), exports);
|
|
32
|
+
__exportStar(require("./drivers/postgres/pg-connection"), exports);
|
|
33
|
+
__exportStar(require("./middleware/authzMiddleware"), exports);
|
|
34
|
+
__exportStar(require("./dashboard/router"), exports);
|
|
35
|
+
__exportStar(require("./utils/envConfig"), exports);
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+CAA8C;AAArC,oGAAA,QAAQ,OAAA;AAIjB,uEAAqE;AAA5D,mHAAA,eAAe,OAAA;AACxB,4DAA0C;AAC1C,0DAAwC;AACxC,oDAAkC;AAClC,+DAA6C;AAC7C,0DAAwC;AACxC,iEAA+C;AAC/C,8DAA4C;AAC5C,2DAAyC;AACzC,qDAAmC;AACnC,qEAAmD;AACnD,mEAAiD;AACjD,+DAA6C;AAC7C,qDAAmC;AACnC,oDAAkC"}
|