@vonosan/auth 0.2.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.
Files changed (61) hide show
  1. package/dist/__tests__/passkey.test.d.ts +11 -0
  2. package/dist/__tests__/passkey.test.d.ts.map +1 -0
  3. package/dist/__tests__/passkey.test.js +87 -0
  4. package/dist/__tests__/passkey.test.js.map +1 -0
  5. package/dist/composables/useAuth.d.ts +43 -0
  6. package/dist/composables/useAuth.d.ts.map +1 -0
  7. package/dist/composables/useAuth.js +133 -0
  8. package/dist/composables/useAuth.js.map +1 -0
  9. package/dist/composables/usePasskey.d.ts +72 -0
  10. package/dist/composables/usePasskey.d.ts.map +1 -0
  11. package/dist/composables/usePasskey.js +289 -0
  12. package/dist/composables/usePasskey.js.map +1 -0
  13. package/dist/index.d.ts +29 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +37 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/lib/jwt.d.ts +30 -0
  18. package/dist/lib/jwt.d.ts.map +1 -0
  19. package/dist/lib/jwt.js +43 -0
  20. package/dist/lib/jwt.js.map +1 -0
  21. package/dist/lib/otp.d.ts +23 -0
  22. package/dist/lib/otp.d.ts.map +1 -0
  23. package/dist/lib/otp.js +50 -0
  24. package/dist/lib/otp.js.map +1 -0
  25. package/dist/lib/passkey.d.ts +139 -0
  26. package/dist/lib/passkey.d.ts.map +1 -0
  27. package/dist/lib/passkey.js +401 -0
  28. package/dist/lib/passkey.js.map +1 -0
  29. package/dist/lib/password.d.ts +20 -0
  30. package/dist/lib/password.d.ts.map +1 -0
  31. package/dist/lib/password.js +77 -0
  32. package/dist/lib/password.js.map +1 -0
  33. package/dist/middleware/auth.middleware.d.ts +50 -0
  34. package/dist/middleware/auth.middleware.d.ts.map +1 -0
  35. package/dist/middleware/auth.middleware.js +194 -0
  36. package/dist/middleware/auth.middleware.js.map +1 -0
  37. package/dist/passkey-schema.d.ts +375 -0
  38. package/dist/passkey-schema.d.ts.map +1 -0
  39. package/dist/passkey-schema.js +63 -0
  40. package/dist/passkey-schema.js.map +1 -0
  41. package/dist/routes/auth.routes.d.ts +16 -0
  42. package/dist/routes/auth.routes.d.ts.map +1 -0
  43. package/dist/routes/auth.routes.js +81 -0
  44. package/dist/routes/auth.routes.js.map +1 -0
  45. package/dist/routes/passkey.routes.d.ts +16 -0
  46. package/dist/routes/passkey.routes.d.ts.map +1 -0
  47. package/dist/routes/passkey.routes.js +127 -0
  48. package/dist/routes/passkey.routes.js.map +1 -0
  49. package/dist/schema.d.ts +547 -0
  50. package/dist/schema.d.ts.map +1 -0
  51. package/dist/schema.js +81 -0
  52. package/dist/schema.js.map +1 -0
  53. package/dist/service/auth.service.d.ts +73 -0
  54. package/dist/service/auth.service.d.ts.map +1 -0
  55. package/dist/service/auth.service.js +249 -0
  56. package/dist/service/auth.service.js.map +1 -0
  57. package/dist/service/passkey.service.d.ts +65 -0
  58. package/dist/service/passkey.service.d.ts.map +1 -0
  59. package/dist/service/passkey.service.js +202 -0
  60. package/dist/service/passkey.service.js.map +1 -0
  61. package/package.json +49 -0
@@ -0,0 +1,81 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ import { Hono } from 'hono';
11
+ import { zValidator } from '@hono/zod-validator';
12
+ import { z } from 'zod';
13
+ import { ApiResponse } from 'vonosan/server';
14
+ import { AuthService } from '../service/auth.service.js';
15
+ // ─── Schemas ─────────────────────────────────────────────────────────────────
16
+ const RegisterSchema = z.object({
17
+ email: z.string().email(),
18
+ password: z.string().min(8),
19
+ username: z.string().min(3).optional(),
20
+ });
21
+ const LoginSchema = z.object({
22
+ email: z.string().email(),
23
+ password: z.string().min(1),
24
+ });
25
+ const ForgotPasswordSchema = z.object({
26
+ email: z.string().email(),
27
+ });
28
+ const ResetPasswordSchema = z.object({
29
+ email: z.string().email(),
30
+ otp: z.string().length(6),
31
+ password: z.string().min(8),
32
+ });
33
+ const RefreshSchema = z.object({
34
+ refreshToken: z.string().min(1),
35
+ });
36
+ // ─── Router ───────────────────────────────────────────────────────────────────
37
+ const authRouter = new Hono();
38
+ authRouter.post('/register', zValidator('json', RegisterSchema), async (c) => {
39
+ const { email, password, username } = c.req.valid('json');
40
+ const service = new AuthService(c.var.db, c.var.config.JWT_SECRET);
41
+ const account = await service.register(email, password, username);
42
+ return c.json(ApiResponse.success(account, 'Account created successfully'), 201);
43
+ });
44
+ authRouter.post('/login', zValidator('json', LoginSchema), async (c) => {
45
+ const { email, password } = c.req.valid('json');
46
+ const ip = c.req.header('CF-Connecting-IP') ?? c.req.header('X-Forwarded-For');
47
+ const userAgent = c.req.header('User-Agent');
48
+ const service = new AuthService(c.var.db, c.var.config.JWT_SECRET);
49
+ const tokens = await service.login(email, password, ip, userAgent);
50
+ return c.json(ApiResponse.success(tokens, 'Login successful'));
51
+ });
52
+ authRouter.post('/refresh', zValidator('json', RefreshSchema), async (c) => {
53
+ const { refreshToken } = c.req.valid('json');
54
+ const service = new AuthService(c.var.db, c.var.config.JWT_SECRET);
55
+ const tokens = await service.refresh(refreshToken);
56
+ return c.json(ApiResponse.success(tokens, 'Token refreshed'));
57
+ });
58
+ authRouter.post('/logout', async (c) => {
59
+ const body = await c.req.json().catch(() => null);
60
+ const sessionId = body?.sessionId;
61
+ if (sessionId) {
62
+ const service = new AuthService(c.var.db, c.var.config.JWT_SECRET);
63
+ await service.logout(sessionId);
64
+ }
65
+ return c.json(ApiResponse.success(null, 'Logged out successfully'));
66
+ });
67
+ authRouter.post('/forgot-password', zValidator('json', ForgotPasswordSchema), async (c) => {
68
+ const { email } = c.req.valid('json');
69
+ const service = new AuthService(c.var.db, c.var.config.JWT_SECRET);
70
+ // OTP is returned — caller is responsible for sending it via email
71
+ await service.forgotPassword(email);
72
+ return c.json(ApiResponse.success(null, 'If that email exists, a reset code has been sent'));
73
+ });
74
+ authRouter.post('/reset-password', zValidator('json', ResetPasswordSchema), async (c) => {
75
+ const { email, otp, password } = c.req.valid('json');
76
+ const service = new AuthService(c.var.db, c.var.config.JWT_SECRET);
77
+ await service.resetPassword(email, otp, password);
78
+ return c.json(ApiResponse.success(null, 'Password reset successfully'));
79
+ });
80
+ export default authRouter;
81
+ //# sourceMappingURL=auth.routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.routes.js","sourceRoot":"","sources":["../../src/routes/auth.routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ import { Hono } from 'hono';
11
+ import type { AppVariables } from 'vonosan/types';
12
+ declare const passkeyRoutes: Hono<{
13
+ Variables: AppVariables;
14
+ }, import("hono/types").BlankSchema, "/">;
15
+ export default passkeyRoutes;
16
+ //# sourceMappingURL=passkey.routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passkey.routes.d.ts","sourceRoot":"","sources":["../../src/routes/passkey.routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAMjD,QAAA,MAAM,aAAa;eAAyB,YAAY;yCAAK,CAAA;AA6J7D,eAAe,aAAa,CAAA"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ import { Hono } from 'hono';
11
+ import { success, error } from 'vonosan/server';
12
+ import { PasskeyService } from '../service/passkey.service.js';
13
+ import { authMiddleware } from '../middleware/auth.middleware.js';
14
+ const passkeyRoutes = new Hono();
15
+ // ─── Helper to build PasskeyService from context ─────────────────────────────
16
+ function getService(c) {
17
+ const db = c.var.db;
18
+ const config = c.var.config;
19
+ const origin = config.CLIENT_URL || 'http://localhost:5173';
20
+ const rpId = new URL(origin).hostname;
21
+ return new PasskeyService(db, {
22
+ rpId,
23
+ rpName: 'Vono App',
24
+ origin,
25
+ jwtSecret: config.JWT_SECRET,
26
+ });
27
+ }
28
+ // ─── Registration ─────────────────────────────────────────────────────────────
29
+ /**
30
+ * POST /auth/passkey/register/begin
31
+ * Requires: authenticated user (JWT)
32
+ * Returns: PublicKeyCredentialCreationOptions
33
+ */
34
+ passkeyRoutes.post('/register/begin', authMiddleware, async (c) => {
35
+ const account = c.var.account;
36
+ const service = getService(c);
37
+ const options = await service.beginRegistration(account.id, account.username || account.email, account.email);
38
+ return c.json(success('Registration challenge created', options));
39
+ });
40
+ /**
41
+ * POST /auth/passkey/register/finish
42
+ * Requires: authenticated user (JWT)
43
+ * Body: { response: RegistrationResponse, name?: string }
44
+ */
45
+ passkeyRoutes.post('/register/finish', authMiddleware, async (c) => {
46
+ const account = c.var.account;
47
+ const body = await c.req.json();
48
+ if (!body.response) {
49
+ return c.json(error('Missing registration response'), 422);
50
+ }
51
+ const service = getService(c);
52
+ const result = await service.finishRegistration(account.id, body.response, body.name);
53
+ return c.json(success('Passkey registered successfully', result), 201);
54
+ });
55
+ // ─── Authentication ───────────────────────────────────────────────────────────
56
+ /**
57
+ * POST /auth/passkey/auth/begin
58
+ * Public endpoint — no JWT required
59
+ * Body: { accountId?: string } (omit for usernameless flow)
60
+ * Returns: PublicKeyCredentialRequestOptions
61
+ */
62
+ passkeyRoutes.post('/auth/begin', async (c) => {
63
+ const body = await c.req.json().catch(() => ({}));
64
+ const service = getService(c);
65
+ const options = await service.beginAuthentication(body.accountId);
66
+ return c.json(success('Authentication challenge created', options));
67
+ });
68
+ /**
69
+ * POST /auth/passkey/auth/finish
70
+ * Public endpoint — no JWT required
71
+ * Body: { response: AuthenticationResponse }
72
+ * Returns: { accessToken, refreshToken }
73
+ */
74
+ passkeyRoutes.post('/auth/finish', async (c) => {
75
+ const body = await c.req.json();
76
+ if (!body.response) {
77
+ return c.json(error('Missing authentication response'), 422);
78
+ }
79
+ const service = getService(c);
80
+ const result = await service.finishAuthentication(body.response);
81
+ return c.json(success('Authentication successful', {
82
+ accessToken: result.accessToken,
83
+ refreshToken: result.refreshToken,
84
+ accountId: result.accountId,
85
+ }));
86
+ });
87
+ // ─── Credential management ────────────────────────────────────────────────────
88
+ /**
89
+ * GET /auth/passkey/credentials
90
+ * Requires: authenticated user
91
+ * Returns: list of passkeys for the current user
92
+ */
93
+ passkeyRoutes.get('/credentials', authMiddleware, async (c) => {
94
+ const account = c.var.account;
95
+ const service = getService(c);
96
+ const credentials = await service.listCredentials(account.id);
97
+ return c.json(success('Passkeys retrieved', credentials));
98
+ });
99
+ /**
100
+ * PATCH /auth/passkey/credentials/:credentialId
101
+ * Requires: authenticated user
102
+ * Body: { name: string }
103
+ */
104
+ passkeyRoutes.patch('/credentials/:credentialId', authMiddleware, async (c) => {
105
+ const account = c.var.account;
106
+ const credentialId = c.req.param('credentialId');
107
+ const body = await c.req.json();
108
+ if (!body.name) {
109
+ return c.json(error('Name is required'), 422);
110
+ }
111
+ const service = getService(c);
112
+ await service.renameCredential(credentialId, account.id, body.name);
113
+ return c.json(success('Passkey renamed', null));
114
+ });
115
+ /**
116
+ * DELETE /auth/passkey/credentials/:credentialId
117
+ * Requires: authenticated user
118
+ */
119
+ passkeyRoutes.delete('/credentials/:credentialId', authMiddleware, async (c) => {
120
+ const account = c.var.account;
121
+ const credentialId = c.req.param('credentialId');
122
+ const service = getService(c);
123
+ await service.deleteCredential(credentialId, account.id);
124
+ return c.json(success('Passkey deleted', null));
125
+ });
126
+ export default passkeyRoutes;
127
+ //# sourceMappingURL=passkey.routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passkey.routes.js","sourceRoot":"","sources":["../../src/routes/passkey.routes.ts"],"names":[],"mappings":"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"}