@ciscode/authentication-kit 1.1.1 → 1.1.3

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.
Files changed (42) hide show
  1. package/README.md +6 -10
  2. package/dist/auth-kit.module.d.ts +7 -0
  3. package/dist/auth-kit.module.js +50 -0
  4. package/dist/config/db.config.d.ts +1 -0
  5. package/dist/config/db.config.js +22 -0
  6. package/dist/config/passport.config.d.ts +3 -0
  7. package/dist/config/passport.config.js +253 -0
  8. package/dist/controllers/admin.controller.d.ts +4 -0
  9. package/dist/controllers/admin.controller.js +59 -0
  10. package/dist/controllers/auth.controller.d.ts +23 -0
  11. package/dist/controllers/auth.controller.js +623 -0
  12. package/dist/controllers/password-reset.controller.d.ts +8 -0
  13. package/dist/controllers/password-reset.controller.js +146 -0
  14. package/dist/controllers/permissions.controller.d.ts +7 -0
  15. package/dist/controllers/permissions.controller.js +115 -0
  16. package/dist/controllers/roles.controller.d.ts +7 -0
  17. package/dist/controllers/roles.controller.js +109 -0
  18. package/dist/controllers/users.controller.d.ts +8 -0
  19. package/dist/controllers/users.controller.js +251 -0
  20. package/dist/index.d.ts +5 -0
  21. package/dist/index.js +12 -0
  22. package/dist/middleware/auth.guard.d.ts +4 -0
  23. package/dist/middleware/auth.guard.js +39 -0
  24. package/dist/middleware/authenticate.guard.d.ts +4 -0
  25. package/dist/middleware/authenticate.guard.js +44 -0
  26. package/dist/middleware/permission.guard.d.ts +4 -0
  27. package/dist/middleware/permission.guard.js +52 -0
  28. package/dist/models/client.model.d.ts +54 -0
  29. package/dist/models/client.model.js +34 -0
  30. package/dist/models/permission.model.d.ts +19 -0
  31. package/dist/models/permission.model.js +17 -0
  32. package/dist/models/role.model.d.ts +30 -0
  33. package/dist/models/role.model.js +17 -0
  34. package/dist/models/tenant.model.d.ts +19 -0
  35. package/dist/models/tenant.model.js +15 -0
  36. package/dist/models/user.model.d.ts +66 -0
  37. package/dist/models/user.model.js +42 -0
  38. package/dist/standalone.d.ts +1 -0
  39. package/dist/standalone.js +12 -0
  40. package/dist/utils/helper.d.ts +1 -0
  41. package/dist/utils/helper.js +22 -0
  42. package/package.json +4 -3
@@ -0,0 +1,4 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ export declare class AuthGuard implements CanActivate {
3
+ canActivate(context: ExecutionContext): boolean;
4
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AuthGuard = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
15
+ let AuthGuard = class AuthGuard {
16
+ canActivate(context) {
17
+ var _a, _b;
18
+ const req = context.switchToHttp().getRequest();
19
+ const res = context.switchToHttp().getResponse();
20
+ const token = (_b = (_a = req.headers) === null || _a === void 0 ? void 0 : _a.authorization) === null || _b === void 0 ? void 0 : _b.split(' ')[1];
21
+ if (!token) {
22
+ res.status(401).json({ error: 'Unauthorized' });
23
+ return false;
24
+ }
25
+ try {
26
+ const decoded = jsonwebtoken_1.default.verify(token, process.env.JWT_SECRET);
27
+ req.user = decoded;
28
+ return true;
29
+ }
30
+ catch (error) {
31
+ res.status(403).json({ error: 'Invalid token' });
32
+ return false;
33
+ }
34
+ }
35
+ };
36
+ exports.AuthGuard = AuthGuard;
37
+ exports.AuthGuard = AuthGuard = __decorate([
38
+ (0, common_1.Injectable)()
39
+ ], AuthGuard);
@@ -0,0 +1,4 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ export declare class AuthenticateGuard implements CanActivate {
3
+ canActivate(context: ExecutionContext): boolean;
4
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AuthenticateGuard = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
15
+ let AuthenticateGuard = class AuthenticateGuard {
16
+ canActivate(context) {
17
+ var _a;
18
+ const req = context.switchToHttp().getRequest();
19
+ const res = context.switchToHttp().getResponse();
20
+ const authHeader = (_a = req.headers) === null || _a === void 0 ? void 0 : _a.authorization;
21
+ if (!authHeader || !authHeader.startsWith('Bearer ')) {
22
+ res.status(401).json({ message: 'Missing or invalid Authorization header.' });
23
+ return false;
24
+ }
25
+ const token = authHeader.split(' ')[1];
26
+ try {
27
+ const decoded = jsonwebtoken_1.default.verify(token, process.env.JWT_SECRET);
28
+ req.user = decoded;
29
+ return true;
30
+ }
31
+ catch (err) {
32
+ if ((err === null || err === void 0 ? void 0 : err.name) === 'TokenExpiredError') {
33
+ res.status(401).json({ message: 'Access token expired.' });
34
+ return false;
35
+ }
36
+ res.status(401).json({ message: 'Invalid access token.' });
37
+ return false;
38
+ }
39
+ }
40
+ };
41
+ exports.AuthenticateGuard = AuthenticateGuard;
42
+ exports.AuthenticateGuard = AuthenticateGuard = __decorate([
43
+ (0, common_1.Injectable)()
44
+ ], AuthenticateGuard);
@@ -0,0 +1,4 @@
1
+ import { ExecutionContext } from '@nestjs/common';
2
+ export declare const hasPermission: (requiredPermission: string) => import("@nestjs/common").Type<{
3
+ canActivate(context: ExecutionContext): Promise<boolean>;
4
+ }>;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.hasPermission = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const role_model_1 = __importDefault(require("../models/role.model"));
15
+ const hasPermission = (requiredPermission) => {
16
+ let PermissionGuard = class PermissionGuard {
17
+ async canActivate(context) {
18
+ const req = context.switchToHttp().getRequest();
19
+ const res = context.switchToHttp().getResponse();
20
+ try {
21
+ const { roleIds, roles, permissions } = req.user || {};
22
+ const tokenPermissions = Array.isArray(permissions) ? permissions : [];
23
+ if (tokenPermissions.includes(requiredPermission)) {
24
+ return true;
25
+ }
26
+ let resolvedPermissions = [];
27
+ if (Array.isArray(roleIds) && roleIds.length > 0) {
28
+ const roleDocs = await role_model_1.default.find({ _id: { $in: roleIds } });
29
+ resolvedPermissions = roleDocs.flatMap((role) => role.permissions);
30
+ }
31
+ else if (Array.isArray(roles) && roles.length > 0) {
32
+ const roleDocs = await role_model_1.default.find({ name: { $in: roles } });
33
+ resolvedPermissions = roleDocs.flatMap((role) => role.permissions);
34
+ }
35
+ if (resolvedPermissions.includes(requiredPermission)) {
36
+ return true;
37
+ }
38
+ res.status(403).json({ error: 'Forbidden: Insufficient permissions' });
39
+ return false;
40
+ }
41
+ catch (error) {
42
+ res.status(500).json({ error: 'Authorization error' });
43
+ return false;
44
+ }
45
+ }
46
+ };
47
+ PermissionGuard = __decorate([
48
+ (0, common_1.Injectable)()
49
+ ], PermissionGuard);
50
+ return (0, common_1.mixin)(PermissionGuard);
51
+ };
52
+ exports.hasPermission = hasPermission;
@@ -0,0 +1,54 @@
1
+ import mongoose from 'mongoose';
2
+ declare const ClientSchema: mongoose.Schema<any, mongoose.Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
3
+ timestamps: true;
4
+ }, {
5
+ createdAt: NativeDate;
6
+ updatedAt: NativeDate;
7
+ } & {
8
+ email: string;
9
+ roles: mongoose.Types.ObjectId[];
10
+ createdAt: Date;
11
+ name?: string;
12
+ password?: string;
13
+ microsoftId?: string;
14
+ googleId?: string;
15
+ facebookId?: string;
16
+ resetPasswordToken?: string;
17
+ resetPasswordExpires?: Date;
18
+ refreshToken?: string;
19
+ }, mongoose.Document<unknown, {}, mongoose.FlatRecord<{
20
+ createdAt: NativeDate;
21
+ updatedAt: NativeDate;
22
+ } & {
23
+ email: string;
24
+ roles: mongoose.Types.ObjectId[];
25
+ createdAt: Date;
26
+ name?: string;
27
+ password?: string;
28
+ microsoftId?: string;
29
+ googleId?: string;
30
+ facebookId?: string;
31
+ resetPasswordToken?: string;
32
+ resetPasswordExpires?: Date;
33
+ refreshToken?: string;
34
+ }>> & mongoose.FlatRecord<{
35
+ createdAt: NativeDate;
36
+ updatedAt: NativeDate;
37
+ } & {
38
+ email: string;
39
+ roles: mongoose.Types.ObjectId[];
40
+ createdAt: Date;
41
+ name?: string;
42
+ password?: string;
43
+ microsoftId?: string;
44
+ googleId?: string;
45
+ facebookId?: string;
46
+ resetPasswordToken?: string;
47
+ resetPasswordExpires?: Date;
48
+ refreshToken?: string;
49
+ }> & {
50
+ _id: mongoose.Types.ObjectId;
51
+ }>;
52
+ declare const Client: mongoose.Model<any, {}, {}, {}, any, any>;
53
+ export { ClientSchema };
54
+ export default Client;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ClientSchema = void 0;
7
+ const mongoose_1 = __importDefault(require("mongoose"));
8
+ const mongoose_paginate_v2_1 = __importDefault(require("mongoose-paginate-v2"));
9
+ const ClientSchema = new mongoose_1.default.Schema({
10
+ email: {
11
+ type: String,
12
+ required: true,
13
+ unique: true
14
+ },
15
+ password: {
16
+ type: String,
17
+ required: function () {
18
+ return !this.microsoftId && !this.googleId && !this.facebookId;
19
+ }
20
+ },
21
+ name: { type: String },
22
+ microsoftId: { type: String, index: true },
23
+ googleId: { type: String, index: true },
24
+ facebookId: { type: String, index: true },
25
+ roles: [{ type: mongoose_1.default.Schema.Types.ObjectId, ref: 'Role' }],
26
+ resetPasswordToken: { type: String },
27
+ resetPasswordExpires: { type: Date },
28
+ refreshToken: { type: String },
29
+ createdAt: { type: Date, default: Date.now }
30
+ }, { timestamps: true });
31
+ exports.ClientSchema = ClientSchema;
32
+ ClientSchema.plugin(mongoose_paginate_v2_1.default);
33
+ const Client = mongoose_1.default.models.Client || mongoose_1.default.model('Client', ClientSchema);
34
+ exports.default = Client;
@@ -0,0 +1,19 @@
1
+ import mongoose from 'mongoose';
2
+ declare const PermissionSchema: mongoose.Schema<any, mongoose.Model<any, any, any, any, any, any>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, {
3
+ name: string;
4
+ description?: string;
5
+ category?: string;
6
+ }, mongoose.Document<unknown, {}, mongoose.FlatRecord<{
7
+ name: string;
8
+ description?: string;
9
+ category?: string;
10
+ }>> & mongoose.FlatRecord<{
11
+ name: string;
12
+ description?: string;
13
+ category?: string;
14
+ }> & {
15
+ _id: mongoose.Types.ObjectId;
16
+ }>;
17
+ declare const Permission: mongoose.Model<any, {}, {}, {}, any, any>;
18
+ export { PermissionSchema };
19
+ export default Permission;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PermissionSchema = void 0;
7
+ const mongoose_1 = __importDefault(require("mongoose"));
8
+ const mongoose_paginate_v2_1 = __importDefault(require("mongoose-paginate-v2"));
9
+ const PermissionSchema = new mongoose_1.default.Schema({
10
+ name: { type: String, required: true, unique: true },
11
+ category: { type: String },
12
+ description: { type: String }
13
+ });
14
+ exports.PermissionSchema = PermissionSchema;
15
+ PermissionSchema.plugin(mongoose_paginate_v2_1.default);
16
+ const Permission = mongoose_1.default.models.Permission || mongoose_1.default.model('Permission', PermissionSchema);
17
+ exports.default = Permission;
@@ -0,0 +1,30 @@
1
+ import mongoose from 'mongoose';
2
+ declare const RoleSchema: mongoose.Schema<any, mongoose.Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
3
+ timestamps: true;
4
+ }, {
5
+ createdAt: NativeDate;
6
+ updatedAt: NativeDate;
7
+ } & {
8
+ name: string;
9
+ permissions: string[];
10
+ description?: string;
11
+ }, mongoose.Document<unknown, {}, mongoose.FlatRecord<{
12
+ createdAt: NativeDate;
13
+ updatedAt: NativeDate;
14
+ } & {
15
+ name: string;
16
+ permissions: string[];
17
+ description?: string;
18
+ }>> & mongoose.FlatRecord<{
19
+ createdAt: NativeDate;
20
+ updatedAt: NativeDate;
21
+ } & {
22
+ name: string;
23
+ permissions: string[];
24
+ description?: string;
25
+ }> & {
26
+ _id: mongoose.Types.ObjectId;
27
+ }>;
28
+ declare const Role: mongoose.Model<any, {}, {}, {}, any, any>;
29
+ export { RoleSchema };
30
+ export default Role;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RoleSchema = void 0;
7
+ const mongoose_1 = __importDefault(require("mongoose"));
8
+ const mongoose_paginate_v2_1 = __importDefault(require("mongoose-paginate-v2"));
9
+ const RoleSchema = new mongoose_1.default.Schema({
10
+ name: { type: String, required: true, unique: true },
11
+ description: { type: String },
12
+ permissions: [{ type: String }]
13
+ }, { timestamps: true });
14
+ exports.RoleSchema = RoleSchema;
15
+ RoleSchema.plugin(mongoose_paginate_v2_1.default);
16
+ const Role = mongoose_1.default.models.Role || mongoose_1.default.model('Role', RoleSchema);
17
+ exports.default = Role;
@@ -0,0 +1,19 @@
1
+ import mongoose from 'mongoose';
2
+ declare const TenantSchema: mongoose.Schema<any, mongoose.Model<any, any, any, any, any, any>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, {
3
+ _id?: string;
4
+ name?: string;
5
+ plan?: string;
6
+ }, mongoose.Document<unknown, {}, mongoose.FlatRecord<{
7
+ _id?: string;
8
+ name?: string;
9
+ plan?: string;
10
+ }>> & mongoose.FlatRecord<{
11
+ _id?: string;
12
+ name?: string;
13
+ plan?: string;
14
+ }> & Required<{
15
+ _id: string;
16
+ }>>;
17
+ declare const Tenant: mongoose.Model<any, {}, {}, {}, any, any>;
18
+ export { TenantSchema };
19
+ export default Tenant;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TenantSchema = void 0;
7
+ const mongoose_1 = __importDefault(require("mongoose"));
8
+ const TenantSchema = new mongoose_1.default.Schema({
9
+ _id: String,
10
+ name: String,
11
+ plan: String
12
+ });
13
+ exports.TenantSchema = TenantSchema;
14
+ const Tenant = mongoose_1.default.models.Tenant || mongoose_1.default.model('Tenant', TenantSchema);
15
+ exports.default = Tenant;
@@ -0,0 +1,66 @@
1
+ import mongoose from 'mongoose';
2
+ declare const UserSchema: mongoose.Schema<any, mongoose.Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
3
+ timestamps: true;
4
+ }, {
5
+ createdAt: NativeDate;
6
+ updatedAt: NativeDate;
7
+ } & {
8
+ email: string;
9
+ roles: mongoose.Types.ObjectId[];
10
+ status: "pending" | "active" | "suspended" | "deactivated";
11
+ failedLoginAttempts: number;
12
+ name?: string;
13
+ password?: string;
14
+ jobTitle?: string;
15
+ company?: string;
16
+ microsoftId?: string;
17
+ googleId?: string;
18
+ facebookId?: string;
19
+ resetPasswordToken?: string;
20
+ resetPasswordExpires?: Date;
21
+ refreshToken?: string;
22
+ lockUntil?: Date;
23
+ }, mongoose.Document<unknown, {}, mongoose.FlatRecord<{
24
+ createdAt: NativeDate;
25
+ updatedAt: NativeDate;
26
+ } & {
27
+ email: string;
28
+ roles: mongoose.Types.ObjectId[];
29
+ status: "pending" | "active" | "suspended" | "deactivated";
30
+ failedLoginAttempts: number;
31
+ name?: string;
32
+ password?: string;
33
+ jobTitle?: string;
34
+ company?: string;
35
+ microsoftId?: string;
36
+ googleId?: string;
37
+ facebookId?: string;
38
+ resetPasswordToken?: string;
39
+ resetPasswordExpires?: Date;
40
+ refreshToken?: string;
41
+ lockUntil?: Date;
42
+ }>> & mongoose.FlatRecord<{
43
+ createdAt: NativeDate;
44
+ updatedAt: NativeDate;
45
+ } & {
46
+ email: string;
47
+ roles: mongoose.Types.ObjectId[];
48
+ status: "pending" | "active" | "suspended" | "deactivated";
49
+ failedLoginAttempts: number;
50
+ name?: string;
51
+ password?: string;
52
+ jobTitle?: string;
53
+ company?: string;
54
+ microsoftId?: string;
55
+ googleId?: string;
56
+ facebookId?: string;
57
+ resetPasswordToken?: string;
58
+ resetPasswordExpires?: Date;
59
+ refreshToken?: string;
60
+ lockUntil?: Date;
61
+ }> & {
62
+ _id: mongoose.Types.ObjectId;
63
+ }>;
64
+ declare const User: mongoose.Model<any, {}, {}, {}, any, any>;
65
+ export { UserSchema };
66
+ export default User;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.UserSchema = void 0;
7
+ const mongoose_1 = __importDefault(require("mongoose"));
8
+ const mongoose_paginate_v2_1 = __importDefault(require("mongoose-paginate-v2"));
9
+ const UserSchema = new mongoose_1.default.Schema({
10
+ email: {
11
+ type: String,
12
+ required: true,
13
+ unique: true
14
+ },
15
+ password: {
16
+ type: String,
17
+ required: function () {
18
+ return !this.microsoftId && !this.googleId && !this.facebookId;
19
+ }
20
+ },
21
+ name: { type: String },
22
+ jobTitle: { type: String },
23
+ company: { type: String },
24
+ microsoftId: { type: String, index: true },
25
+ googleId: { type: String, index: true },
26
+ facebookId: { type: String, index: true },
27
+ roles: [{ type: mongoose_1.default.Schema.Types.ObjectId, ref: 'Role' }],
28
+ resetPasswordToken: { type: String },
29
+ resetPasswordExpires: { type: Date },
30
+ status: {
31
+ type: String,
32
+ enum: ['pending', 'active', 'suspended', 'deactivated'],
33
+ default: 'pending'
34
+ },
35
+ refreshToken: { type: String },
36
+ failedLoginAttempts: { type: Number, default: 0 },
37
+ lockUntil: { type: Date }
38
+ }, { timestamps: true });
39
+ exports.UserSchema = UserSchema;
40
+ UserSchema.plugin(mongoose_paginate_v2_1.default);
41
+ const User = mongoose_1.default.models.User || mongoose_1.default.model('User', UserSchema);
42
+ exports.default = User;
@@ -0,0 +1 @@
1
+ import 'dotenv/config';
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("dotenv/config");
4
+ const core_1 = require("@nestjs/core");
5
+ const auth_kit_module_1 = require("./auth-kit.module");
6
+ async function bootstrap() {
7
+ const app = await core_1.NestFactory.create(auth_kit_module_1.AuthKitModule);
8
+ const port = process.env.PORT || 3000;
9
+ await app.listen(port);
10
+ console.log('AuthKit listening on', port);
11
+ }
12
+ bootstrap();
@@ -0,0 +1 @@
1
+ export declare function getMillisecondsFromExpiry(expiry: string | number): number;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMillisecondsFromExpiry = getMillisecondsFromExpiry;
4
+ function getMillisecondsFromExpiry(expiry) {
5
+ if (typeof expiry === 'number') {
6
+ return expiry * 1000;
7
+ }
8
+ const unit = expiry.slice(-1).toLowerCase();
9
+ const value = parseInt(expiry.slice(0, -1), 10);
10
+ switch (unit) {
11
+ case 's':
12
+ return value * 1000;
13
+ case 'm':
14
+ return value * 60 * 1000;
15
+ case 'h':
16
+ return value * 60 * 60 * 1000;
17
+ case 'd':
18
+ return value * 24 * 60 * 60 * 1000;
19
+ default:
20
+ return 0;
21
+ }
22
+ }
package/package.json CHANGED
@@ -7,8 +7,8 @@
7
7
  "type": "git",
8
8
  "url": "git+https://github.com/CISCODE-MA/AuthKit.git"
9
9
  },
10
- "version": "1.1.1",
11
- "description": "A login library with local login, Microsoft Entra ID authentication, password reset, and roles/permissions for multi-tenant applications.",
10
+ "version": "1.1.3",
11
+ "description": "A login library with local login, Microsoft Entra ID authentication, password reset, and roles/permissions.",
12
12
  "main": "dist/index.js",
13
13
  "types": "dist/index.d.ts",
14
14
  "files": [
@@ -20,6 +20,7 @@
20
20
  "build": "tsc -p tsconfig.json",
21
21
  "start": "node dist/standalone.js",
22
22
  "test": "echo \"No tests defined\" && exit 0",
23
+ "prepack": "npm run build",
23
24
  "release": "semantic-release"
24
25
  },
25
26
  "keywords": [
@@ -29,7 +30,7 @@
29
30
  "password-reset",
30
31
  "roles",
31
32
  "permissions",
32
- "multi-tenant"
33
+ "users"
33
34
  ],
34
35
  "author": "Ciscode",
35
36
  "license": "MIT",