@package-broker/core 0.7.1 → 0.8.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.
Files changed (197) hide show
  1. package/dist/factory.d.ts +2 -2
  2. package/dist/factory.d.ts.map +1 -1
  3. package/dist/factory.js +186 -66
  4. package/dist/factory.js.map +1 -1
  5. package/dist/modules/admin/admin.handlers.d.ts +25 -0
  6. package/dist/modules/admin/admin.handlers.d.ts.map +1 -0
  7. package/dist/modules/admin/admin.handlers.js +97 -0
  8. package/dist/modules/admin/admin.handlers.js.map +1 -0
  9. package/dist/modules/admin/admin.routes.d.ts +147 -0
  10. package/dist/modules/admin/admin.routes.d.ts.map +1 -0
  11. package/dist/modules/admin/admin.routes.js +130 -0
  12. package/dist/modules/admin/admin.routes.js.map +1 -0
  13. package/dist/modules/admin/index.d.ts +9 -0
  14. package/dist/modules/admin/index.d.ts.map +1 -0
  15. package/dist/modules/admin/index.js +19 -0
  16. package/dist/modules/admin/index.js.map +1 -0
  17. package/dist/modules/artifacts/artifacts.handlers.d.ts +18 -0
  18. package/dist/modules/artifacts/artifacts.handlers.d.ts.map +1 -0
  19. package/dist/modules/artifacts/artifacts.handlers.js +47 -0
  20. package/dist/modules/artifacts/artifacts.handlers.js.map +1 -0
  21. package/dist/modules/artifacts/artifacts.routes.d.ts +80 -0
  22. package/dist/modules/artifacts/artifacts.routes.d.ts.map +1 -0
  23. package/dist/modules/artifacts/artifacts.routes.js +79 -0
  24. package/dist/modules/artifacts/artifacts.routes.js.map +1 -0
  25. package/dist/modules/artifacts/index.d.ts +8 -0
  26. package/dist/modules/artifacts/index.d.ts.map +1 -0
  27. package/dist/modules/artifacts/index.js +14 -0
  28. package/dist/modules/artifacts/index.js.map +1 -0
  29. package/dist/modules/auth/auth.handlers.d.ts +51 -0
  30. package/dist/modules/auth/auth.handlers.d.ts.map +1 -0
  31. package/dist/modules/auth/auth.handlers.js +278 -0
  32. package/dist/modules/auth/auth.handlers.js.map +1 -0
  33. package/dist/modules/auth/auth.routes.d.ts +187 -0
  34. package/dist/modules/auth/auth.routes.d.ts.map +1 -0
  35. package/dist/modules/auth/auth.routes.js +136 -0
  36. package/dist/modules/auth/auth.routes.js.map +1 -0
  37. package/dist/modules/auth/index.d.ts +11 -0
  38. package/dist/modules/auth/index.d.ts.map +1 -0
  39. package/dist/modules/auth/index.js +34 -0
  40. package/dist/modules/auth/index.js.map +1 -0
  41. package/dist/modules/composer/composer.handlers.d.ts +3 -0
  42. package/dist/modules/composer/composer.handlers.d.ts.map +1 -0
  43. package/dist/modules/composer/composer.handlers.js +12 -0
  44. package/dist/modules/composer/composer.handlers.js.map +1 -0
  45. package/dist/modules/composer/index.d.ts +11 -0
  46. package/dist/modules/composer/index.d.ts.map +1 -0
  47. package/dist/modules/composer/index.js +40 -0
  48. package/dist/modules/composer/index.js.map +1 -0
  49. package/dist/modules/packages/index.d.ts +8 -0
  50. package/dist/modules/packages/index.d.ts.map +1 -0
  51. package/dist/modules/packages/index.js +19 -0
  52. package/dist/modules/packages/index.js.map +1 -0
  53. package/dist/modules/packages/packages.handlers.d.ts +50 -0
  54. package/dist/modules/packages/packages.handlers.d.ts.map +1 -0
  55. package/dist/modules/packages/packages.handlers.js +670 -0
  56. package/dist/modules/packages/packages.handlers.js.map +1 -0
  57. package/dist/modules/packages/packages.routes.d.ts +172 -0
  58. package/dist/modules/packages/packages.routes.d.ts.map +1 -0
  59. package/dist/modules/packages/packages.routes.js +160 -0
  60. package/dist/modules/packages/packages.routes.js.map +1 -0
  61. package/dist/modules/repositories/index.d.ts +8 -0
  62. package/dist/modules/repositories/index.d.ts.map +1 -0
  63. package/dist/modules/repositories/index.js +19 -0
  64. package/dist/modules/repositories/index.js.map +1 -0
  65. package/dist/modules/repositories/repositories.handlers.d.ts +29 -0
  66. package/dist/modules/repositories/repositories.handlers.d.ts.map +1 -0
  67. package/dist/modules/repositories/repositories.handlers.js +261 -0
  68. package/dist/modules/repositories/repositories.handlers.js.map +1 -0
  69. package/dist/modules/repositories/repositories.routes.d.ts +451 -0
  70. package/dist/modules/repositories/repositories.routes.d.ts.map +1 -0
  71. package/dist/modules/repositories/repositories.routes.js +264 -0
  72. package/dist/modules/repositories/repositories.routes.js.map +1 -0
  73. package/dist/modules/system/index.d.ts +8 -0
  74. package/dist/modules/system/index.d.ts.map +1 -0
  75. package/dist/modules/system/index.js +13 -0
  76. package/dist/modules/system/index.js.map +1 -0
  77. package/dist/modules/system/system.handlers.d.ts +9 -0
  78. package/dist/modules/system/system.handlers.d.ts.map +1 -0
  79. package/dist/modules/system/system.handlers.js +22 -0
  80. package/dist/modules/system/system.handlers.js.map +1 -0
  81. package/dist/modules/system/system.routes.d.ts +24 -0
  82. package/dist/modules/system/system.routes.d.ts.map +1 -0
  83. package/dist/modules/system/system.routes.js +27 -0
  84. package/dist/modules/system/system.routes.js.map +1 -0
  85. package/dist/modules/tokens/index.d.ts +8 -0
  86. package/dist/modules/tokens/index.d.ts.map +1 -0
  87. package/dist/modules/tokens/index.js +16 -0
  88. package/dist/modules/tokens/index.js.map +1 -0
  89. package/dist/modules/tokens/tokens.handlers.d.ts +22 -0
  90. package/dist/modules/tokens/tokens.handlers.d.ts.map +1 -0
  91. package/dist/modules/tokens/tokens.handlers.js +150 -0
  92. package/dist/modules/tokens/tokens.handlers.js.map +1 -0
  93. package/dist/modules/tokens/tokens.routes.d.ts +202 -0
  94. package/dist/modules/tokens/tokens.routes.d.ts.map +1 -0
  95. package/dist/modules/tokens/tokens.routes.js +143 -0
  96. package/dist/modules/tokens/tokens.routes.js.map +1 -0
  97. package/dist/modules/users/index.d.ts +8 -0
  98. package/dist/modules/users/index.d.ts.map +1 -0
  99. package/dist/modules/users/index.js +15 -0
  100. package/dist/modules/users/index.js.map +1 -0
  101. package/dist/modules/users/users.handlers.d.ts +6 -0
  102. package/dist/modules/users/users.handlers.d.ts.map +1 -0
  103. package/dist/modules/users/users.handlers.js +120 -0
  104. package/dist/modules/users/users.handlers.js.map +1 -0
  105. package/dist/modules/users/users.routes.d.ts +190 -0
  106. package/dist/modules/users/users.routes.d.ts.map +1 -0
  107. package/dist/modules/users/users.routes.js +132 -0
  108. package/dist/modules/users/users.routes.js.map +1 -0
  109. package/dist/routes/api/artifacts.d.ts +5 -3
  110. package/dist/routes/api/artifacts.d.ts.map +1 -1
  111. package/dist/routes/api/artifacts.js +2 -2
  112. package/dist/routes/api/artifacts.js.map +1 -1
  113. package/dist/routes/api/auth.d.ts +5 -3
  114. package/dist/routes/api/auth.d.ts.map +1 -1
  115. package/dist/routes/api/auth.js +2 -12
  116. package/dist/routes/api/auth.js.map +1 -1
  117. package/dist/routes/api/index.d.ts +1 -0
  118. package/dist/routes/api/index.d.ts.map +1 -1
  119. package/dist/routes/api/index.js +1 -0
  120. package/dist/routes/api/index.js.map +1 -1
  121. package/dist/routes/api/openapi/artifacts.d.ts +80 -0
  122. package/dist/routes/api/openapi/artifacts.d.ts.map +1 -0
  123. package/dist/routes/api/openapi/artifacts.js +73 -0
  124. package/dist/routes/api/openapi/artifacts.js.map +1 -0
  125. package/dist/routes/api/openapi/auth.d.ts +187 -0
  126. package/dist/routes/api/openapi/auth.d.ts.map +1 -0
  127. package/dist/routes/api/openapi/auth.js +135 -0
  128. package/dist/routes/api/openapi/auth.js.map +1 -0
  129. package/dist/routes/api/openapi/health.d.ts +24 -0
  130. package/dist/routes/api/openapi/health.d.ts.map +1 -0
  131. package/dist/routes/api/openapi/health.js +25 -0
  132. package/dist/routes/api/openapi/health.js.map +1 -0
  133. package/dist/routes/api/openapi/index.d.ts +10 -0
  134. package/dist/routes/api/openapi/index.d.ts.map +1 -0
  135. package/dist/routes/api/openapi/index.js +16 -0
  136. package/dist/routes/api/openapi/index.js.map +1 -0
  137. package/dist/routes/api/openapi/packages.d.ts +172 -0
  138. package/dist/routes/api/openapi/packages.d.ts.map +1 -0
  139. package/dist/routes/api/openapi/packages.js +126 -0
  140. package/dist/routes/api/openapi/packages.js.map +1 -0
  141. package/dist/routes/api/openapi/repositories.d.ts +451 -0
  142. package/dist/routes/api/openapi/repositories.d.ts.map +1 -0
  143. package/dist/routes/api/openapi/repositories.js +238 -0
  144. package/dist/routes/api/openapi/repositories.js.map +1 -0
  145. package/dist/routes/api/openapi/settings.d.ts +90 -0
  146. package/dist/routes/api/openapi/settings.d.ts.map +1 -0
  147. package/dist/routes/api/openapi/settings.js +72 -0
  148. package/dist/routes/api/openapi/settings.js.map +1 -0
  149. package/dist/routes/api/openapi/stats.d.ts +59 -0
  150. package/dist/routes/api/openapi/stats.d.ts.map +1 -0
  151. package/dist/routes/api/openapi/stats.js +53 -0
  152. package/dist/routes/api/openapi/stats.js.map +1 -0
  153. package/dist/routes/api/openapi/tokens.d.ts +202 -0
  154. package/dist/routes/api/openapi/tokens.d.ts.map +1 -0
  155. package/dist/routes/api/openapi/tokens.js +132 -0
  156. package/dist/routes/api/openapi/tokens.js.map +1 -0
  157. package/dist/routes/api/openapi/users.d.ts +190 -0
  158. package/dist/routes/api/openapi/users.d.ts.map +1 -0
  159. package/dist/routes/api/openapi/users.js +126 -0
  160. package/dist/routes/api/openapi/users.js.map +1 -0
  161. package/dist/routes/api/packages.d.ts +7 -4
  162. package/dist/routes/api/packages.d.ts.map +1 -1
  163. package/dist/routes/api/packages.js +6 -7
  164. package/dist/routes/api/packages.js.map +1 -1
  165. package/dist/routes/api/repositories.d.ts +8 -6
  166. package/dist/routes/api/repositories.d.ts.map +1 -1
  167. package/dist/routes/api/repositories.js +26 -22
  168. package/dist/routes/api/repositories.js.map +1 -1
  169. package/dist/routes/api/settings.d.ts +4 -3
  170. package/dist/routes/api/settings.d.ts.map +1 -1
  171. package/dist/routes/api/settings.js +1 -1
  172. package/dist/routes/api/settings.js.map +1 -1
  173. package/dist/routes/api/stats.d.ts +3 -3
  174. package/dist/routes/api/stats.d.ts.map +1 -1
  175. package/dist/routes/api/stats.js +1 -2
  176. package/dist/routes/api/stats.js.map +1 -1
  177. package/dist/routes/api/tokens.d.ts +6 -5
  178. package/dist/routes/api/tokens.d.ts.map +1 -1
  179. package/dist/routes/api/tokens.js +4 -7
  180. package/dist/routes/api/tokens.js.map +1 -1
  181. package/dist/routes/api/types.d.ts +17 -0
  182. package/dist/routes/api/types.d.ts.map +1 -0
  183. package/dist/routes/api/types.js +7 -0
  184. package/dist/routes/api/types.js.map +1 -0
  185. package/dist/routes/api/users.d.ts +5 -4
  186. package/dist/routes/api/users.d.ts.map +1 -1
  187. package/dist/routes/api/users.js +2 -12
  188. package/dist/routes/api/users.js.map +1 -1
  189. package/dist/routes/composer.js +1 -1
  190. package/dist/routes/composer.js.map +1 -1
  191. package/dist/routes/health.d.ts +3 -1
  192. package/dist/routes/health.d.ts.map +1 -1
  193. package/dist/routes/health.js.map +1 -1
  194. package/dist/utils/encryption.d.ts.map +1 -1
  195. package/dist/utils/encryption.js +8 -0
  196. package/dist/utils/encryption.js.map +1 -1
  197. package/package.json +3 -2
@@ -0,0 +1,278 @@
1
+ /*
2
+ * PACKAGE.broker
3
+ * Copyright (C) 2025 Łukasz Bajsarowicz
4
+ * Licensed under AGPL-3.0
5
+ */
6
+ import { UserService } from '../../services/UserService';
7
+ import { getAnalytics } from '../../utils/analytics';
8
+ // Generate a session token
9
+ function generateSessionToken() {
10
+ const bytes = crypto.getRandomValues(new Uint8Array(32));
11
+ return btoa(String.fromCharCode(...bytes))
12
+ .replace(/\+/g, '-')
13
+ .replace(/\//g, '_')
14
+ .replace(/=/g, '');
15
+ }
16
+ /**
17
+ * POST /api/auth/login
18
+ * Authenticate admin user and return session token
19
+ */
20
+ export const loginHandler = async (c) => {
21
+ const db = c.get('database');
22
+ const userService = new UserService(db);
23
+ const body = c.req.valid('json');
24
+ const { email, password } = body;
25
+ const user = await userService.verifyCredentials(email, password);
26
+ const requestId = c.get('requestId');
27
+ const analytics = getAnalytics();
28
+ if (!user) {
29
+ analytics.trackAuthLogin({
30
+ requestId,
31
+ userId: 'unknown',
32
+ success: false,
33
+ });
34
+ return c.json({ error: 'Invalid credentials' }, 401);
35
+ }
36
+ // Check 2FA
37
+ if (user.two_factor_enabled) {
38
+ const { code } = body;
39
+ if (!code) {
40
+ return c.json({ error: '2FA required', code: '2fa_required' }, 403);
41
+ }
42
+ const isValid = await userService.validateTwoFactorLogin(user.id, code);
43
+ if (!isValid) {
44
+ analytics.trackAuthLogin({
45
+ requestId,
46
+ userId: user.id,
47
+ success: false,
48
+ });
49
+ return c.json({ error: 'Invalid 2FA code' }, 401);
50
+ }
51
+ }
52
+ // Generate session token
53
+ const sessionToken = generateSessionToken();
54
+ analytics.trackAuthLogin({
55
+ requestId,
56
+ userId: user.id,
57
+ success: true,
58
+ });
59
+ // Store session in cache (expires in 24 hours)
60
+ // Use injected cache driver (Node.js) or fall back to c.env.KV (Cloudflare)
61
+ const cache = c.get('cache') || c.env?.KV;
62
+ if (!cache) {
63
+ throw new Error('No session storage available (cache driver or KV not configured)');
64
+ }
65
+ await cache.put(`session:${sessionToken}`, JSON.stringify({
66
+ userId: user.id,
67
+ email: user.email,
68
+ role: user.role,
69
+ createdAt: Date.now(),
70
+ }), {
71
+ expirationTtl: 86400, // 24 hours
72
+ });
73
+ return c.json({
74
+ token: sessionToken,
75
+ user: {
76
+ id: user.id,
77
+ email: user.email,
78
+ role: user.role,
79
+ two_factor_enabled: user.two_factor_enabled,
80
+ },
81
+ });
82
+ };
83
+ /**
84
+ * POST /api/auth/logout
85
+ * Invalidate session token
86
+ */
87
+ export const logoutHandler = async (c) => {
88
+ const authHeader = c.req.header('Authorization');
89
+ if (authHeader?.startsWith('Bearer ')) {
90
+ const token = authHeader.slice(7);
91
+ const cache = c.get('cache') || c.env?.KV;
92
+ if (cache) {
93
+ await cache.delete(`session:${token}`);
94
+ }
95
+ }
96
+ return c.json({ message: 'Logged out' });
97
+ };
98
+ /**
99
+ * GET /api/auth/me
100
+ * Get current authenticated user
101
+ */
102
+ export const meHandler = async (c) => {
103
+ const session = c.get('session');
104
+ if (!session) {
105
+ return c.json({ error: 'Not authenticated' }, 401);
106
+ }
107
+ // Refresh user data from DB to get latest status
108
+ const db = c.get('database');
109
+ const userService = new UserService(db);
110
+ const user = await userService.findById(session.userId);
111
+ if (!user) {
112
+ return c.json({ error: 'User not found' }, 404);
113
+ }
114
+ return c.json({
115
+ user: {
116
+ id: user.id,
117
+ email: user.email,
118
+ role: user.role,
119
+ two_factor_enabled: user.two_factor_enabled
120
+ }
121
+ });
122
+ };
123
+ /**
124
+ * GET /api/auth/check
125
+ * Check if auth is required / setup is needed
126
+ */
127
+ export const checkAuthRequiredHandler = async (c) => {
128
+ const db = c.get('database');
129
+ const userService = new UserService(db);
130
+ const count = await userService.count();
131
+ return c.json({
132
+ auth_required: count > 0,
133
+ });
134
+ };
135
+ /**
136
+ * POST /api/setup
137
+ * Create initial admin user
138
+ */
139
+ export async function setupHandler(c) {
140
+ const db = c.get('database');
141
+ const userService = new UserService(db);
142
+ // Check if any user exists
143
+ const count = await userService.count();
144
+ if (count > 0) {
145
+ return c.json({ error: 'Setup already completed' }, 403);
146
+ }
147
+ let body;
148
+ try {
149
+ body = await c.req.json();
150
+ }
151
+ catch {
152
+ return c.json({ error: 'Invalid JSON' }, 400);
153
+ }
154
+ const { email, password } = body;
155
+ if (!email || !password) {
156
+ return c.json({ error: 'Email and password required' }, 400);
157
+ }
158
+ // Create first admin
159
+ const user = await userService.create({
160
+ email,
161
+ password,
162
+ role: 'admin'
163
+ });
164
+ return c.json({
165
+ message: 'Setup complete',
166
+ user: {
167
+ id: user?.id,
168
+ email: user?.email
169
+ }
170
+ });
171
+ }
172
+ /**
173
+ * POST /api/auth/2fa/setup
174
+ * Start 2FA setup flow
175
+ */
176
+ export async function setup2FAHandler(c) {
177
+ const db = c.get('database');
178
+ const userService = new UserService(db);
179
+ const session = c.get('session');
180
+ // Generate new secret
181
+ const secret = await userService.setupTwoFactor(session.userId);
182
+ const qrCode = await userService.generateTwoFactorQrCode(session.email, secret);
183
+ return c.json({ secret, qrCode });
184
+ }
185
+ /**
186
+ * POST /api/auth/2fa/enable
187
+ * Confirm 2FA setup with code
188
+ */
189
+ export async function enable2FAHandler(c) {
190
+ const db = c.get('database');
191
+ const userService = new UserService(db);
192
+ const session = c.get('session');
193
+ let body;
194
+ try {
195
+ body = await c.req.json();
196
+ }
197
+ catch {
198
+ return c.json({ error: 'Invalid JSON' }, 400);
199
+ }
200
+ const { secret, code } = body;
201
+ if (!secret || !code) {
202
+ return c.json({ error: 'Secret and code required' }, 400);
203
+ }
204
+ try {
205
+ const recoveryCodes = await userService.enableTwoFactor(session.userId, secret, code);
206
+ return c.json({ recoveryCodes });
207
+ }
208
+ catch (err) {
209
+ return c.json({ error: err.message }, 400);
210
+ }
211
+ }
212
+ /**
213
+ * POST /api/auth/2fa/disable
214
+ * Disable 2FA
215
+ */
216
+ export async function disable2FAHandler(c) {
217
+ const db = c.get('database');
218
+ const userService = new UserService(db);
219
+ const session = c.get('session');
220
+ await userService.disableTwoFactor(session.userId);
221
+ return c.json({ message: '2FA disabled' });
222
+ }
223
+ /**
224
+ * POST /api/auth/invite/accept
225
+ * Accept invite and set password
226
+ */
227
+ export async function acceptInviteHandler(c) {
228
+ const db = c.get('database');
229
+ const userService = new UserService(db);
230
+ let body;
231
+ try {
232
+ body = await c.req.json();
233
+ }
234
+ catch {
235
+ return c.json({ error: 'Invalid JSON' }, 400);
236
+ }
237
+ const { token, password } = body;
238
+ if (!token || !password) {
239
+ return c.json({ error: 'Token and password required' }, 400);
240
+ }
241
+ try {
242
+ const user = await userService.acceptInvite(token, password);
243
+ return c.json({ message: 'Invite accepted', user: { email: user.email } });
244
+ }
245
+ catch (err) {
246
+ return c.json({ error: err.message }, 400);
247
+ }
248
+ }
249
+ /**
250
+ * Middleware to verify session token
251
+ */
252
+ export async function sessionMiddleware(c, next) {
253
+ const authHeader = c.req.header('Authorization');
254
+ if (!authHeader || !authHeader.startsWith('Bearer ')) {
255
+ return c.json({ error: 'Unauthorized', message: 'Session token required' }, 401);
256
+ }
257
+ const token = authHeader.slice(7);
258
+ // Check cache for session (use injected cache or fall back to c.env.KV)
259
+ const cache = c.get('cache') || c.env?.KV;
260
+ if (!cache) {
261
+ return c.json({ error: 'Server Error', message: 'Session storage not configured' }, 500);
262
+ }
263
+ // Try to get session - handle both CachePort (getJson) and KV (get with 'json' type)
264
+ let sessionData;
265
+ if (typeof cache.getJson === 'function') {
266
+ sessionData = await cache.getJson(`session:${token}`);
267
+ }
268
+ else {
269
+ sessionData = await cache.get(`session:${token}`, 'json');
270
+ }
271
+ if (!sessionData) {
272
+ return c.json({ error: 'Unauthorized', message: 'Invalid or expired session' }, 401);
273
+ }
274
+ // Attach session to context
275
+ c.set('session', sessionData);
276
+ return await next();
277
+ }
278
+ //# sourceMappingURL=auth.handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.handlers.js","sourceRoot":"","sources":["../../../src/modules/auth/auth.handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ import { z } from '@hono/zod-openapi';
2
+ export declare const loginRouteDef: {
3
+ method: "post";
4
+ path: "/login";
5
+ summary: string;
6
+ description: string;
7
+ request: {
8
+ body: {
9
+ content: {
10
+ 'application/json': {
11
+ schema: z.ZodObject<{
12
+ email: z.ZodString;
13
+ password: z.ZodString;
14
+ code: z.ZodOptional<z.ZodString>;
15
+ }, z.core.$strip>;
16
+ };
17
+ };
18
+ };
19
+ };
20
+ responses: {
21
+ 200: {
22
+ content: {
23
+ 'application/json': {
24
+ schema: z.ZodObject<{
25
+ token: z.ZodString;
26
+ user: z.ZodObject<{
27
+ id: z.ZodString;
28
+ email: z.ZodString;
29
+ role: z.ZodEnum<{
30
+ admin: "admin";
31
+ viewer: "viewer";
32
+ }>;
33
+ two_factor_enabled: z.ZodBoolean;
34
+ }, z.core.$strip>;
35
+ }, z.core.$strip>;
36
+ };
37
+ };
38
+ description: string;
39
+ };
40
+ 400: {
41
+ content: {
42
+ 'application/json': {
43
+ schema: z.ZodObject<{
44
+ error: z.ZodString;
45
+ message: z.ZodOptional<z.ZodString>;
46
+ code: z.ZodOptional<z.ZodString>;
47
+ requestId: z.ZodOptional<z.ZodString>;
48
+ }, z.core.$strip>;
49
+ };
50
+ };
51
+ description: string;
52
+ };
53
+ 401: {
54
+ content: {
55
+ 'application/json': {
56
+ schema: z.ZodObject<{
57
+ error: z.ZodString;
58
+ message: z.ZodOptional<z.ZodString>;
59
+ code: z.ZodOptional<z.ZodString>;
60
+ requestId: z.ZodOptional<z.ZodString>;
61
+ }, z.core.$strip>;
62
+ };
63
+ };
64
+ description: string;
65
+ };
66
+ 403: {
67
+ content: {
68
+ 'application/json': {
69
+ schema: z.ZodObject<{
70
+ error: z.ZodString;
71
+ message: z.ZodOptional<z.ZodString>;
72
+ requestId: z.ZodOptional<z.ZodString>;
73
+ code: z.ZodString;
74
+ }, z.core.$strip>;
75
+ };
76
+ };
77
+ description: string;
78
+ };
79
+ };
80
+ tags: string[];
81
+ } & {
82
+ getRoutingPath(): "/login";
83
+ };
84
+ export declare const logoutRouteDef: {
85
+ method: "post";
86
+ path: "/logout";
87
+ summary: string;
88
+ description: string;
89
+ security: {
90
+ Bearer: never[];
91
+ }[];
92
+ responses: {
93
+ 200: {
94
+ content: {
95
+ 'application/json': {
96
+ schema: z.ZodObject<{
97
+ message: z.ZodString;
98
+ }, z.core.$strip>;
99
+ };
100
+ };
101
+ description: string;
102
+ };
103
+ };
104
+ tags: string[];
105
+ } & {
106
+ getRoutingPath(): "/logout";
107
+ };
108
+ export declare const meRouteDef: {
109
+ method: "get";
110
+ path: "/me";
111
+ summary: string;
112
+ description: string;
113
+ security: {
114
+ Bearer: never[];
115
+ }[];
116
+ responses: {
117
+ 200: {
118
+ content: {
119
+ 'application/json': {
120
+ schema: z.ZodObject<{
121
+ user: z.ZodObject<{
122
+ id: z.ZodString;
123
+ email: z.ZodString;
124
+ role: z.ZodEnum<{
125
+ admin: "admin";
126
+ viewer: "viewer";
127
+ }>;
128
+ two_factor_enabled: z.ZodBoolean;
129
+ }, z.core.$strip>;
130
+ }, z.core.$strip>;
131
+ };
132
+ };
133
+ description: string;
134
+ };
135
+ 401: {
136
+ content: {
137
+ 'application/json': {
138
+ schema: z.ZodObject<{
139
+ error: z.ZodString;
140
+ message: z.ZodOptional<z.ZodString>;
141
+ code: z.ZodOptional<z.ZodString>;
142
+ requestId: z.ZodOptional<z.ZodString>;
143
+ }, z.core.$strip>;
144
+ };
145
+ };
146
+ description: string;
147
+ };
148
+ 404: {
149
+ content: {
150
+ 'application/json': {
151
+ schema: z.ZodObject<{
152
+ error: z.ZodString;
153
+ message: z.ZodOptional<z.ZodString>;
154
+ code: z.ZodOptional<z.ZodString>;
155
+ requestId: z.ZodOptional<z.ZodString>;
156
+ }, z.core.$strip>;
157
+ };
158
+ };
159
+ description: string;
160
+ };
161
+ };
162
+ tags: string[];
163
+ } & {
164
+ getRoutingPath(): "/me";
165
+ };
166
+ export declare const checkAuthRequiredRouteDef: {
167
+ method: "get";
168
+ path: "/check";
169
+ summary: string;
170
+ description: string;
171
+ responses: {
172
+ 200: {
173
+ content: {
174
+ 'application/json': {
175
+ schema: z.ZodObject<{
176
+ auth_required: z.ZodBoolean;
177
+ }, z.core.$strip>;
178
+ };
179
+ };
180
+ description: string;
181
+ };
182
+ };
183
+ tags: string[];
184
+ } & {
185
+ getRoutingPath(): "/check";
186
+ };
187
+ //# sourceMappingURL=auth.routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/auth.routes.ts"],"names":[],"mappings":"AAMA,OAAO,EAAe,CAAC,EAAE,MAAM,mBAAmB,CAAC;AASnD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDxB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;CAmBzB,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCrB,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;CAkBpC,CAAC"}
@@ -0,0 +1,136 @@
1
+ /*
2
+ * PACKAGE.broker
3
+ * Copyright (C) 2025 Łukasz Bajsarowicz
4
+ * Licensed under AGPL-3.0
5
+ */
6
+ import { createRoute, z } from '@hono/zod-openapi';
7
+ import { loginRequestSchema, loginResponseSchema, userResponseSchema, errorResponseSchema, } from '@package-broker/shared';
8
+ // Route paths are relative to module mount at /api/auth
9
+ export const loginRouteDef = createRoute({
10
+ method: 'post',
11
+ path: '/login',
12
+ summary: 'Authenticate user',
13
+ description: 'Authenticate admin user and return session token',
14
+ request: {
15
+ body: {
16
+ content: {
17
+ 'application/json': {
18
+ schema: loginRequestSchema,
19
+ },
20
+ },
21
+ },
22
+ },
23
+ responses: {
24
+ 200: {
25
+ content: {
26
+ 'application/json': {
27
+ schema: loginResponseSchema,
28
+ },
29
+ },
30
+ description: 'Login successful',
31
+ },
32
+ 400: {
33
+ content: {
34
+ 'application/json': {
35
+ schema: errorResponseSchema,
36
+ },
37
+ },
38
+ description: 'Invalid request',
39
+ },
40
+ 401: {
41
+ content: {
42
+ 'application/json': {
43
+ schema: errorResponseSchema,
44
+ },
45
+ },
46
+ description: 'Invalid credentials',
47
+ },
48
+ 403: {
49
+ content: {
50
+ 'application/json': {
51
+ schema: errorResponseSchema.extend({
52
+ code: z.string(),
53
+ }),
54
+ },
55
+ },
56
+ description: '2FA required',
57
+ },
58
+ },
59
+ tags: ['Authentication'],
60
+ });
61
+ export const logoutRouteDef = createRoute({
62
+ method: 'post',
63
+ path: '/logout',
64
+ summary: 'Logout user',
65
+ description: 'Invalidate session token',
66
+ security: [{ Bearer: [] }],
67
+ responses: {
68
+ 200: {
69
+ content: {
70
+ 'application/json': {
71
+ schema: z.object({
72
+ message: z.string(),
73
+ }),
74
+ },
75
+ },
76
+ description: 'Logged out successfully',
77
+ },
78
+ },
79
+ tags: ['Authentication'],
80
+ });
81
+ export const meRouteDef = createRoute({
82
+ method: 'get',
83
+ path: '/me',
84
+ summary: 'Get current user',
85
+ description: 'Get current authenticated user information',
86
+ security: [{ Bearer: [] }],
87
+ responses: {
88
+ 200: {
89
+ content: {
90
+ 'application/json': {
91
+ schema: z.object({
92
+ user: userResponseSchema,
93
+ }),
94
+ },
95
+ },
96
+ description: 'User information',
97
+ },
98
+ 401: {
99
+ content: {
100
+ 'application/json': {
101
+ schema: errorResponseSchema,
102
+ },
103
+ },
104
+ description: 'Not authenticated',
105
+ },
106
+ 404: {
107
+ content: {
108
+ 'application/json': {
109
+ schema: errorResponseSchema,
110
+ },
111
+ },
112
+ description: 'User not found',
113
+ },
114
+ },
115
+ tags: ['Authentication'],
116
+ });
117
+ export const checkAuthRequiredRouteDef = createRoute({
118
+ method: 'get',
119
+ path: '/check',
120
+ summary: 'Check if authentication is required',
121
+ description: 'Check if the instance requires authentication',
122
+ responses: {
123
+ 200: {
124
+ content: {
125
+ 'application/json': {
126
+ schema: z.object({
127
+ auth_required: z.boolean(),
128
+ }),
129
+ },
130
+ },
131
+ description: 'Authentication requirement status',
132
+ },
133
+ },
134
+ tags: ['Authentication'],
135
+ });
136
+ //# sourceMappingURL=auth.routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.routes.js","sourceRoot":"","sources":["../../../src/modules/auth/auth.routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { OpenAPIHono } from '@hono/zod-openapi';
2
+ import type { AppBindings, AppVariables } from '../../factory';
3
+ declare const authModule: OpenAPIHono<{
4
+ Bindings: AppBindings;
5
+ Variables: AppVariables;
6
+ }, {}, "/">;
7
+ export { authMiddleware } from '../../middleware/auth';
8
+ export { sessionMiddleware } from './auth.handlers';
9
+ export { setupHandler } from './auth.handlers';
10
+ export default authModule;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAI/D,QAAA,MAAM,UAAU;cAA+B,WAAW;eAAa,YAAY;WAAK,CAAC;AAyBzF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,eAAe,UAAU,CAAC"}
@@ -0,0 +1,34 @@
1
+ /*
2
+ * PACKAGE.broker
3
+ * Copyright (C) 2025 Łukasz Bajsarowicz
4
+ * Licensed under AGPL-3.0
5
+ */
6
+ import { OpenAPIHono } from '@hono/zod-openapi';
7
+ import * as routes from './auth.routes';
8
+ import * as handlers from './auth.handlers';
9
+ const authModule = new OpenAPIHono();
10
+ // Public routes (no session required)
11
+ authModule.openapi(routes.loginRouteDef, handlers.loginHandler);
12
+ authModule.openapi(routes.checkAuthRequiredRouteDef, handlers.checkAuthRequiredHandler);
13
+ // Non-OpenAPI public routes
14
+ // Note: /invite/accept is mounted at /api/auth/invite/accept
15
+ authModule.post('/invite/accept', handlers.acceptInviteHandler);
16
+ // Protected routes (session required)
17
+ // Apply session middleware to all routes registered below
18
+ authModule.use('*', async (c, next) => {
19
+ return handlers.sessionMiddleware(c, next);
20
+ });
21
+ authModule.openapi(routes.logoutRouteDef, handlers.logoutHandler);
22
+ authModule.openapi(routes.meRouteDef, handlers.meHandler);
23
+ // Non-OpenAPI protected routes
24
+ authModule.post('/2fa/setup', handlers.setup2FAHandler);
25
+ authModule.post('/2fa/enable', handlers.enable2FAHandler);
26
+ authModule.post('/2fa/disable', handlers.disable2FAHandler);
27
+ // Re-export authMiddleware for use by other modules (e.g., composer/dist)
28
+ export { authMiddleware } from '../../middleware/auth';
29
+ // Export sessionMiddleware for use by other protected route groups
30
+ export { sessionMiddleware } from './auth.handlers';
31
+ // Export setup handler separately since it needs to be mounted at /api/setup (not /api/auth/setup)
32
+ export { setupHandler } from './auth.handlers';
33
+ export default authModule;
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/auth/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,GAAG,IAAI,WAAW,EAAsD,CAAC;AAEzF,sCAAsC;AACtC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,YAAmB,CAAC,CAAC;AACvE,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,yBAAyB,EAAE,QAAQ,CAAC,wBAA+B,CAAC,CAAC;AAE/F,4BAA4B;AAC5B,6DAA6D;AAC7D,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAEhE,sCAAsC;AACtC,0DAA0D;AAC1D,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;IAClC,OAAO,QAAQ,CAAC,iBAAiB,CAAC,CAAQ,EAAE,IAAW,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,aAAoB,CAAC,CAAC;AACzE,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAgB,CAAC,CAAC;AAEjE,+BAA+B;AAC/B,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;AACxD,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAC1D,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAE5D,0EAA0E;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,mEAAmE;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,mGAAmG;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,eAAe,UAAU,CAAC"}