dolphin-server-modules 1.3.9 β†’ 1.4.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/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # 🐬 Dolphin Framework (v1.1.3.9)
1
+ # 🐬 Dolphin Framework (v1.1.4.1)
2
2
 
3
3
  **Dolphin** is a 2026-ready, ultra-lightweight, and 100% modular backend ecosystem built on native Node.js. It’s not just a framework; it’s a universal toolkit for Web, Microservices, and Industrial IoT.
4
4
 
@@ -0,0 +1,140 @@
1
+ export declare const createDolphinAuthController: (db: any, authConfig: any) => {
2
+ register: (ctx: any) => Promise<{
3
+ success: boolean;
4
+ data: {
5
+ id: any;
6
+ email: any;
7
+ role: any;
8
+ };
9
+ error?: undefined;
10
+ status?: undefined;
11
+ } | {
12
+ success: boolean;
13
+ error: any;
14
+ status: any;
15
+ data?: undefined;
16
+ }>;
17
+ login: (ctx: any) => Promise<{
18
+ accessToken: string;
19
+ user: {
20
+ id: any;
21
+ email: any;
22
+ role: any;
23
+ twoFactorEnabled: any;
24
+ };
25
+ success: boolean;
26
+ error?: undefined;
27
+ status?: undefined;
28
+ } | {
29
+ success: boolean;
30
+ error: any;
31
+ status: any;
32
+ }>;
33
+ refresh: (ctx: any) => Promise<{
34
+ accessToken: string;
35
+ user: {
36
+ id: any;
37
+ email: any;
38
+ role: any;
39
+ twoFactorEnabled: any;
40
+ };
41
+ success: boolean;
42
+ error?: undefined;
43
+ status?: undefined;
44
+ } | {
45
+ success: boolean;
46
+ error: any;
47
+ status: number;
48
+ }>;
49
+ logout: (ctx: any) => Promise<{
50
+ success: boolean;
51
+ error?: undefined;
52
+ } | {
53
+ success: boolean;
54
+ error: any;
55
+ }>;
56
+ me: (ctx: any) => Promise<{
57
+ success: boolean;
58
+ data: any;
59
+ error?: undefined;
60
+ status?: undefined;
61
+ } | {
62
+ success: boolean;
63
+ error: any;
64
+ status: number;
65
+ data?: undefined;
66
+ }>;
67
+ changePassword: (ctx: any) => Promise<{
68
+ success: boolean;
69
+ message: string;
70
+ error?: undefined;
71
+ status?: undefined;
72
+ } | {
73
+ success: boolean;
74
+ error: any;
75
+ status: number;
76
+ message?: undefined;
77
+ }>;
78
+ forgotPassword: (ctx: any) => Promise<{
79
+ resetLink?: string | undefined;
80
+ success: boolean;
81
+ message: string;
82
+ error?: undefined;
83
+ status?: undefined;
84
+ } | {
85
+ success: boolean;
86
+ error: any;
87
+ status: number;
88
+ }>;
89
+ resetPassword: (ctx: any) => Promise<{
90
+ success: boolean;
91
+ message: string;
92
+ error?: undefined;
93
+ status?: undefined;
94
+ } | {
95
+ success: boolean;
96
+ error: any;
97
+ status: number;
98
+ message?: undefined;
99
+ }>;
100
+ resendResetLink: (ctx: any) => Promise<{
101
+ resetLink?: string | undefined;
102
+ success: boolean;
103
+ message: string;
104
+ error?: undefined;
105
+ status?: undefined;
106
+ } | {
107
+ success: boolean;
108
+ error: any;
109
+ status: number;
110
+ }>;
111
+ enable2FA: (ctx: any) => Promise<{
112
+ secret: string;
113
+ uri: string;
114
+ success: boolean;
115
+ error?: undefined;
116
+ } | {
117
+ success: boolean;
118
+ error: any;
119
+ }>;
120
+ verify2FA: (ctx: any) => Promise<{
121
+ recoveryCodes: string[];
122
+ success: boolean;
123
+ error?: undefined;
124
+ } | {
125
+ success: boolean;
126
+ error: any;
127
+ }>;
128
+ disable2FA: (ctx: any) => Promise<{
129
+ success: boolean;
130
+ error?: undefined;
131
+ } | {
132
+ success: boolean;
133
+ error: any;
134
+ }>;
135
+ requireAuth: (req: any, res: any, next: Function) => Promise<any>;
136
+ require2FA: (req: any, res: any, next: Function) => Promise<any>;
137
+ requireAdmin: (ctx: any, next: Function) => Promise<void>;
138
+ sanitize: (user: any) => any;
139
+ };
140
+ export default createDolphinAuthController;
@@ -0,0 +1,290 @@
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.createDolphinAuthController = void 0;
40
+ // dolphin-server-modules/auth-controller.ts
41
+ const auth_1 = require("../auth/auth");
42
+ const node_crypto_1 = __importDefault(require("node:crypto"));
43
+ const createDolphinAuthController = (db, authConfig) => {
44
+ const authCore = (0, auth_1.createAuth)(authConfig);
45
+ const verifyPassword = async (password, hash) => {
46
+ try {
47
+ const argon2 = await Promise.resolve().then(() => __importStar(require('argon2')));
48
+ return await argon2.verify(hash, password);
49
+ }
50
+ catch {
51
+ return false;
52
+ }
53
+ };
54
+ const hashPassword = async (password) => {
55
+ const argon2 = await Promise.resolve().then(() => __importStar(require('argon2')));
56
+ return await argon2.hash(password, {
57
+ type: argon2.argon2id,
58
+ memoryCost: 19456,
59
+ timeCost: 2
60
+ });
61
+ };
62
+ const generateResetToken = () => node_crypto_1.default.randomBytes(32).toString('hex');
63
+ return {
64
+ // ============ AUTH HANDLERS ============
65
+ // βœ… FIXED: Use ctx.body (same as controller)
66
+ register: async (ctx) => {
67
+ try {
68
+ const body = ctx.body; // ← consistent with controller
69
+ const user = await authCore.register(db, body);
70
+ return { success: true, data: user };
71
+ }
72
+ catch (err) {
73
+ return { success: false, error: err.message, status: err.status || 400 };
74
+ }
75
+ },
76
+ // βœ… FIXED: Use ctx.body
77
+ login: async (ctx) => {
78
+ try {
79
+ const body = ctx.body; // ← consistent with controller
80
+ const result = await authCore.login(db, body, ctx.res);
81
+ return { success: true, ...result };
82
+ }
83
+ catch (err) {
84
+ return { success: false, error: err.message, status: err.status || 401 };
85
+ }
86
+ },
87
+ refresh: async (ctx) => {
88
+ try {
89
+ const refreshToken = ctx.req.cookies?.rt;
90
+ const result = await authCore.refresh(db, refreshToken, ctx.res);
91
+ return { success: true, ...result };
92
+ }
93
+ catch (err) {
94
+ return { success: false, error: err.message, status: 401 };
95
+ }
96
+ },
97
+ logout: async (ctx) => {
98
+ try {
99
+ const refreshToken = ctx.req.cookies?.rt;
100
+ await authCore.logout(db, refreshToken);
101
+ ctx.res.setHeader('Set-Cookie', 'rt=; HttpOnly; Max-Age=0');
102
+ return { success: true };
103
+ }
104
+ catch (err) {
105
+ return { success: false, error: err.message };
106
+ }
107
+ },
108
+ me: async (ctx) => {
109
+ try {
110
+ const user = ctx.req.user;
111
+ if (!user)
112
+ throw new Error('Unauthorized');
113
+ const { password, recoveryCodes, twoFactorSecret, ...safe } = user;
114
+ return { success: true, data: safe };
115
+ }
116
+ catch (err) {
117
+ return { success: false, error: err.message, status: 401 };
118
+ }
119
+ },
120
+ // ============ CHANGE PASSWORD ============
121
+ // βœ… FIXED: Use ctx.body
122
+ changePassword: async (ctx) => {
123
+ try {
124
+ const userId = ctx.req.user?.id;
125
+ if (!userId)
126
+ throw new Error('Unauthorized');
127
+ const { oldPassword, newPassword } = ctx.body; // ← consistent
128
+ if (!oldPassword || !newPassword)
129
+ throw new Error('Old and new password required');
130
+ if (newPassword.length < 8)
131
+ throw new Error('Password must be at least 8 characters');
132
+ const user = await db.findUserById(userId);
133
+ if (!user)
134
+ throw new Error('User not found');
135
+ const isValid = await verifyPassword(oldPassword, user.password);
136
+ if (!isValid)
137
+ throw new Error('Current password is incorrect');
138
+ const hashedPassword = await hashPassword(newPassword);
139
+ await db.updateUser(userId, { password: hashedPassword });
140
+ return { success: true, message: 'Password changed successfully' };
141
+ }
142
+ catch (err) {
143
+ return { success: false, error: err.message, status: 400 };
144
+ }
145
+ },
146
+ // ============ FORGOT PASSWORD ============
147
+ // βœ… FIXED: Use ctx.body
148
+ forgotPassword: async (ctx) => {
149
+ try {
150
+ const { email } = ctx.body; // ← consistent
151
+ if (!email)
152
+ throw new Error('Email required');
153
+ const user = await db.findUserByEmail(email);
154
+ if (!user) {
155
+ return { success: true, message: 'If email exists, reset link sent' };
156
+ }
157
+ const resetToken = generateResetToken();
158
+ const resetExpires = new Date(Date.now() + 3600000);
159
+ await db.updateUser(user.id, {
160
+ resetPasswordToken: resetToken,
161
+ resetPasswordExpires: resetExpires
162
+ });
163
+ const resetLink = `${process.env.APP_URL || 'http://localhost:3000'}/reset-password?token=${resetToken}`;
164
+ return {
165
+ success: true,
166
+ message: 'Reset link sent',
167
+ ...(process.env.NODE_ENV !== 'production' && { resetLink })
168
+ };
169
+ }
170
+ catch (err) {
171
+ return { success: false, error: err.message, status: 400 };
172
+ }
173
+ },
174
+ // ============ RESET PASSWORD ============
175
+ // βœ… FIXED: Use ctx.body
176
+ resetPassword: async (ctx) => {
177
+ try {
178
+ const { token, newPassword } = ctx.body; // ← consistent
179
+ if (!token || !newPassword)
180
+ throw new Error('Token and password required');
181
+ if (newPassword.length < 8)
182
+ throw new Error('Password must be at least 8 characters');
183
+ let user = null;
184
+ if (db.read) {
185
+ const users = await db.read('User', { resetPasswordToken: token });
186
+ user = users?.[0];
187
+ }
188
+ else if (db.findUserByResetToken) {
189
+ user = await db.findUserByResetToken(token);
190
+ }
191
+ if (!user)
192
+ throw new Error('Invalid or expired reset token');
193
+ if (user.resetPasswordExpires && new Date(user.resetPasswordExpires) < new Date()) {
194
+ throw new Error('Reset token has expired');
195
+ }
196
+ const hashedPassword = await hashPassword(newPassword);
197
+ await db.updateUser(user.id, {
198
+ password: hashedPassword,
199
+ resetPasswordToken: null,
200
+ resetPasswordExpires: null
201
+ });
202
+ return { success: true, message: 'Password reset successfully' };
203
+ }
204
+ catch (err) {
205
+ return { success: false, error: err.message, status: 400 };
206
+ }
207
+ },
208
+ // ============ RESEND RESET LINK ============
209
+ // βœ… FIXED: Use ctx.body
210
+ resendResetLink: async (ctx) => {
211
+ try {
212
+ const { email } = ctx.body; // ← consistent
213
+ if (!email)
214
+ throw new Error('Email required');
215
+ const user = await db.findUserByEmail(email);
216
+ if (!user) {
217
+ return { success: true, message: 'If email exists, reset link sent' };
218
+ }
219
+ const resetToken = generateResetToken();
220
+ const resetExpires = new Date(Date.now() + 3600000);
221
+ await db.updateUser(user.id, {
222
+ resetPasswordToken: resetToken,
223
+ resetPasswordExpires: resetExpires
224
+ });
225
+ const resetLink = `${process.env.APP_URL || 'http://localhost:3000'}/reset-password?token=${resetToken}`;
226
+ return {
227
+ success: true,
228
+ message: 'Reset link sent',
229
+ ...(process.env.NODE_ENV !== 'production' && { resetLink })
230
+ };
231
+ }
232
+ catch (err) {
233
+ return { success: false, error: err.message, status: 400 };
234
+ }
235
+ },
236
+ // ============ 2FA HANDLERS ============
237
+ enable2FA: async (ctx) => {
238
+ try {
239
+ const result = await authCore.enable2FA(db, ctx.req.user.id);
240
+ return { success: true, ...result };
241
+ }
242
+ catch (err) {
243
+ return { success: false, error: err.message };
244
+ }
245
+ },
246
+ // βœ… FIXED: Use ctx.body
247
+ verify2FA: async (ctx) => {
248
+ try {
249
+ const { totp } = ctx.body; // ← consistent
250
+ const result = await authCore.verify2FA(db, ctx.req.user.id, totp);
251
+ return { success: true, ...result };
252
+ }
253
+ catch (err) {
254
+ return { success: false, error: err.message };
255
+ }
256
+ },
257
+ // βœ… FIXED: Use ctx.body
258
+ disable2FA: async (ctx) => {
259
+ try {
260
+ const { totp } = ctx.body; // ← consistent
261
+ await authCore.disable2FA(db, ctx.req.user.id, totp);
262
+ return { success: true };
263
+ }
264
+ catch (err) {
265
+ return { success: false, error: err.message };
266
+ }
267
+ },
268
+ // ============ MIDDLEWARE ============
269
+ requireAuth: authCore.middleware(),
270
+ require2FA: authCore.middleware({ require2FA: true }),
271
+ requireAdmin: async (ctx, next) => {
272
+ await authCore.middleware()(ctx.req, ctx.res, async () => {
273
+ if (ctx.req.user?.role !== 'admin') {
274
+ return ctx.status(403).json({ error: 'Admin access required' });
275
+ }
276
+ await next();
277
+ });
278
+ },
279
+ // ============ UTILITIES ============
280
+ sanitize: (user) => {
281
+ if (!user)
282
+ return null;
283
+ const { password, recoveryCodes, twoFactorSecret, pending2FASecret, resetPasswordToken, resetPasswordExpires, ...safe } = user;
284
+ return safe;
285
+ }
286
+ };
287
+ };
288
+ exports.createDolphinAuthController = createDolphinAuthController;
289
+ exports.default = exports.createDolphinAuthController;
290
+ //# sourceMappingURL=authController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authController.js","sourceRoot":"","sources":["../../authController/authController.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dolphin-server-modules",
3
- "version": "1.3.9",
3
+ "version": "1.4.1",
4
4
  "homepage": "https://github.com/Phuyalshankar/dolphin-server-modules#readme",
5
5
  "description": "Core utility modules for Auth, CRUD, and Controllers",
6
6
  "main": "dist/index.js",
@@ -15,6 +15,7 @@
15
15
  "exports": {
16
16
  ".": "./dist/index.js",
17
17
  "./auth": "./dist/auth/auth.js",
18
+ "./auth-controller": "./dist/authController/authController.js",
18
19
  "./controller": "./dist/controller/controller.js",
19
20
  "./crud": "./dist/curd/crud.js",
20
21
  "./curd": "./dist/curd/crud.js",
@@ -41,9 +42,11 @@
41
42
  "crud",
42
43
  "controller",
43
44
  "realtime",
44
- "iot"
45
+ "iot",
46
+ "2fa",
47
+ "jwt"
45
48
  ],
46
- "author": "",
49
+ "author": "Shankar Phuyal",
47
50
  "license": "ISC",
48
51
  "dependencies": {
49
52
  "argon2": "^0.40.1",
@@ -58,4 +61,4 @@
58
61
  "ts-jest": "^29.1.2",
59
62
  "typescript": "^5.4.3"
60
63
  }
61
- }
64
+ }