@qwickapps/server 1.2.0 → 1.3.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 +392 -0
- package/dist/core/control-panel.d.ts +7 -2
- package/dist/core/control-panel.d.ts.map +1 -1
- package/dist/core/control-panel.js +120 -54
- package/dist/core/control-panel.js.map +1 -1
- package/dist/core/gateway.d.ts +159 -79
- package/dist/core/gateway.d.ts.map +1 -1
- package/dist/core/gateway.js +679 -319
- package/dist/core/gateway.js.map +1 -1
- package/dist/core/index.d.ts +3 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/plugin-registry.d.ts +307 -0
- package/dist/core/plugin-registry.d.ts.map +1 -0
- package/dist/core/plugin-registry.js +352 -0
- package/dist/core/plugin-registry.js.map +1 -0
- package/dist/core/types.d.ts +16 -33
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -7
- package/dist/index.js.map +1 -1
- package/dist/plugins/auth/adapters/auth0-adapter.d.ts +14 -0
- package/dist/plugins/auth/adapters/auth0-adapter.d.ts.map +1 -0
- package/dist/plugins/auth/adapters/auth0-adapter.js +179 -0
- package/dist/plugins/auth/adapters/auth0-adapter.js.map +1 -0
- package/dist/plugins/auth/adapters/basic-adapter.d.ts +13 -0
- package/dist/plugins/auth/adapters/basic-adapter.d.ts.map +1 -0
- package/dist/plugins/auth/adapters/basic-adapter.js +51 -0
- package/dist/plugins/auth/adapters/basic-adapter.js.map +1 -0
- package/dist/plugins/auth/adapters/index.d.ts +10 -0
- package/dist/plugins/auth/adapters/index.d.ts.map +1 -0
- package/dist/plugins/auth/adapters/index.js +10 -0
- package/dist/plugins/auth/adapters/index.js.map +1 -0
- package/dist/plugins/auth/adapters/supabase-adapter.d.ts +13 -0
- package/dist/plugins/auth/adapters/supabase-adapter.d.ts.map +1 -0
- package/dist/plugins/auth/adapters/supabase-adapter.js +109 -0
- package/dist/plugins/auth/adapters/supabase-adapter.js.map +1 -0
- package/dist/plugins/auth/adapters/supertokens-adapter.d.ts +18 -0
- package/dist/plugins/auth/adapters/supertokens-adapter.d.ts.map +1 -0
- package/dist/plugins/auth/adapters/supertokens-adapter.js +267 -0
- package/dist/plugins/auth/adapters/supertokens-adapter.js.map +1 -0
- package/dist/plugins/auth/auth-plugin.d.ts +40 -0
- package/dist/plugins/auth/auth-plugin.d.ts.map +1 -0
- package/dist/plugins/auth/auth-plugin.js +255 -0
- package/dist/plugins/auth/auth-plugin.js.map +1 -0
- package/dist/plugins/auth/auth-plugin.test.d.ts +9 -0
- package/dist/plugins/auth/auth-plugin.test.d.ts.map +1 -0
- package/dist/plugins/auth/auth-plugin.test.js +147 -0
- package/dist/plugins/auth/auth-plugin.test.js.map +1 -0
- package/dist/plugins/auth/env-config.d.ts +88 -0
- package/dist/plugins/auth/env-config.d.ts.map +1 -0
- package/dist/plugins/auth/env-config.js +489 -0
- package/dist/plugins/auth/env-config.js.map +1 -0
- package/dist/plugins/auth/index.d.ts +14 -0
- package/dist/plugins/auth/index.d.ts.map +1 -0
- package/dist/plugins/auth/index.js +16 -0
- package/dist/plugins/auth/index.js.map +1 -0
- package/dist/plugins/auth/supertokens-adapter.test.d.ts +10 -0
- package/dist/plugins/auth/supertokens-adapter.test.d.ts.map +1 -0
- package/dist/plugins/auth/supertokens-adapter.test.js +486 -0
- package/dist/plugins/auth/supertokens-adapter.test.js.map +1 -0
- package/dist/plugins/auth/types.d.ts +218 -0
- package/dist/plugins/auth/types.d.ts.map +1 -0
- package/dist/plugins/auth/types.js +14 -0
- package/dist/plugins/auth/types.js.map +1 -0
- package/dist/plugins/bans/bans-plugin.d.ts +59 -0
- package/dist/plugins/bans/bans-plugin.d.ts.map +1 -0
- package/dist/plugins/bans/bans-plugin.js +428 -0
- package/dist/plugins/bans/bans-plugin.js.map +1 -0
- package/dist/plugins/bans/index.d.ts +9 -0
- package/dist/plugins/bans/index.d.ts.map +1 -0
- package/dist/plugins/bans/index.js +10 -0
- package/dist/plugins/bans/index.js.map +1 -0
- package/dist/plugins/bans/stores/index.d.ts +7 -0
- package/dist/plugins/bans/stores/index.d.ts.map +1 -0
- package/dist/plugins/bans/stores/index.js +7 -0
- package/dist/plugins/bans/stores/index.js.map +1 -0
- package/dist/plugins/bans/stores/postgres-store.d.ts +29 -0
- package/dist/plugins/bans/stores/postgres-store.d.ts.map +1 -0
- package/dist/plugins/bans/stores/postgres-store.js +132 -0
- package/dist/plugins/bans/stores/postgres-store.js.map +1 -0
- package/dist/plugins/bans/types.d.ts +128 -0
- package/dist/plugins/bans/types.d.ts.map +1 -0
- package/dist/plugins/bans/types.js +11 -0
- package/dist/plugins/bans/types.js.map +1 -0
- package/dist/plugins/cache-plugin.d.ts +14 -3
- package/dist/plugins/cache-plugin.d.ts.map +1 -1
- package/dist/plugins/cache-plugin.js +27 -7
- package/dist/plugins/cache-plugin.js.map +1 -1
- package/dist/plugins/cache-plugin.test.js +99 -32
- package/dist/plugins/cache-plugin.test.js.map +1 -1
- package/dist/plugins/config-plugin.d.ts +3 -2
- package/dist/plugins/config-plugin.d.ts.map +1 -1
- package/dist/plugins/config-plugin.js +17 -10
- package/dist/plugins/config-plugin.js.map +1 -1
- package/dist/plugins/diagnostics-plugin.d.ts +2 -2
- package/dist/plugins/diagnostics-plugin.d.ts.map +1 -1
- package/dist/plugins/diagnostics-plugin.js +17 -10
- package/dist/plugins/diagnostics-plugin.js.map +1 -1
- package/dist/plugins/entitlements/entitlements-plugin.d.ts +95 -0
- package/dist/plugins/entitlements/entitlements-plugin.d.ts.map +1 -0
- package/dist/plugins/entitlements/entitlements-plugin.js +707 -0
- package/dist/plugins/entitlements/entitlements-plugin.js.map +1 -0
- package/dist/plugins/entitlements/index.d.ts +12 -0
- package/dist/plugins/entitlements/index.d.ts.map +1 -0
- package/dist/plugins/entitlements/index.js +16 -0
- package/dist/plugins/entitlements/index.js.map +1 -0
- package/dist/plugins/entitlements/sources/index.d.ts +9 -0
- package/dist/plugins/entitlements/sources/index.d.ts.map +1 -0
- package/dist/plugins/entitlements/sources/index.js +9 -0
- package/dist/plugins/entitlements/sources/index.js.map +1 -0
- package/dist/plugins/entitlements/sources/postgres-source.d.ts +29 -0
- package/dist/plugins/entitlements/sources/postgres-source.d.ts.map +1 -0
- package/dist/plugins/entitlements/sources/postgres-source.js +169 -0
- package/dist/plugins/entitlements/sources/postgres-source.js.map +1 -0
- package/dist/plugins/entitlements/types.d.ts +232 -0
- package/dist/plugins/entitlements/types.d.ts.map +1 -0
- package/dist/plugins/entitlements/types.js +11 -0
- package/dist/plugins/entitlements/types.js.map +1 -0
- package/dist/plugins/frontend-app-plugin.d.ts +9 -3
- package/dist/plugins/frontend-app-plugin.d.ts.map +1 -1
- package/dist/plugins/frontend-app-plugin.js +14 -9
- package/dist/plugins/frontend-app-plugin.js.map +1 -1
- package/dist/plugins/health-plugin.d.ts +5 -2
- package/dist/plugins/health-plugin.d.ts.map +1 -1
- package/dist/plugins/health-plugin.js +20 -5
- package/dist/plugins/health-plugin.js.map +1 -1
- package/dist/plugins/index.d.ts +10 -2
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +10 -2
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/logs-plugin.d.ts +3 -2
- package/dist/plugins/logs-plugin.d.ts.map +1 -1
- package/dist/plugins/logs-plugin.js +21 -12
- package/dist/plugins/logs-plugin.js.map +1 -1
- package/dist/plugins/postgres-plugin.d.ts +3 -3
- package/dist/plugins/postgres-plugin.d.ts.map +1 -1
- package/dist/plugins/postgres-plugin.js +9 -7
- package/dist/plugins/postgres-plugin.js.map +1 -1
- package/dist/plugins/postgres-plugin.test.js +50 -29
- package/dist/plugins/postgres-plugin.test.js.map +1 -1
- package/dist/plugins/preferences/__tests__/deep-merge.test.d.ts +7 -0
- package/dist/plugins/preferences/__tests__/deep-merge.test.d.ts.map +1 -0
- package/dist/plugins/preferences/__tests__/deep-merge.test.js +215 -0
- package/dist/plugins/preferences/__tests__/deep-merge.test.js.map +1 -0
- package/dist/plugins/preferences/__tests__/preferences-plugin.test.d.ts +7 -0
- package/dist/plugins/preferences/__tests__/preferences-plugin.test.d.ts.map +1 -0
- package/dist/plugins/preferences/__tests__/preferences-plugin.test.js +265 -0
- package/dist/plugins/preferences/__tests__/preferences-plugin.test.js.map +1 -0
- package/dist/plugins/preferences/index.d.ts +12 -0
- package/dist/plugins/preferences/index.d.ts.map +1 -0
- package/dist/plugins/preferences/index.js +13 -0
- package/dist/plugins/preferences/index.js.map +1 -0
- package/dist/plugins/preferences/preferences-plugin.d.ts +39 -0
- package/dist/plugins/preferences/preferences-plugin.d.ts.map +1 -0
- package/dist/plugins/preferences/preferences-plugin.js +226 -0
- package/dist/plugins/preferences/preferences-plugin.js.map +1 -0
- package/dist/plugins/preferences/stores/index.d.ts +9 -0
- package/dist/plugins/preferences/stores/index.d.ts.map +1 -0
- package/dist/plugins/preferences/stores/index.js +9 -0
- package/dist/plugins/preferences/stores/index.js.map +1 -0
- package/dist/plugins/preferences/stores/postgres-store.d.ts +41 -0
- package/dist/plugins/preferences/stores/postgres-store.d.ts.map +1 -0
- package/dist/plugins/preferences/stores/postgres-store.js +181 -0
- package/dist/plugins/preferences/stores/postgres-store.js.map +1 -0
- package/dist/plugins/preferences/types.d.ts +91 -0
- package/dist/plugins/preferences/types.d.ts.map +1 -0
- package/dist/plugins/preferences/types.js +10 -0
- package/dist/plugins/preferences/types.js.map +1 -0
- package/dist/plugins/users/__tests__/users-plugin.test.d.ts +9 -0
- package/dist/plugins/users/__tests__/users-plugin.test.d.ts.map +1 -0
- package/dist/plugins/users/__tests__/users-plugin.test.js +546 -0
- package/dist/plugins/users/__tests__/users-plugin.test.js.map +1 -0
- package/dist/plugins/users/index.d.ts +12 -0
- package/dist/plugins/users/index.d.ts.map +1 -0
- package/dist/plugins/users/index.js +13 -0
- package/dist/plugins/users/index.js.map +1 -0
- package/dist/plugins/users/stores/index.d.ts +7 -0
- package/dist/plugins/users/stores/index.d.ts.map +1 -0
- package/dist/plugins/users/stores/index.js +7 -0
- package/dist/plugins/users/stores/index.js.map +1 -0
- package/dist/plugins/users/stores/postgres-store.d.ts +28 -0
- package/dist/plugins/users/stores/postgres-store.d.ts.map +1 -0
- package/dist/plugins/users/stores/postgres-store.js +157 -0
- package/dist/plugins/users/stores/postgres-store.js.map +1 -0
- package/dist/plugins/users/types.d.ts +225 -0
- package/dist/plugins/users/types.d.ts.map +1 -0
- package/dist/plugins/users/types.js +12 -0
- package/dist/plugins/users/types.js.map +1 -0
- package/dist/plugins/users/users-plugin.d.ts +45 -0
- package/dist/plugins/users/users-plugin.d.ts.map +1 -0
- package/dist/plugins/users/users-plugin.js +359 -0
- package/dist/plugins/users/users-plugin.js.map +1 -0
- package/dist-ui/assets/index-BY8OxNgO.js +465 -0
- package/dist-ui/assets/index-BY8OxNgO.js.map +1 -0
- package/dist-ui/index.html +1 -1
- package/dist-ui-lib/api/controlPanelApi.d.ts +278 -0
- package/dist-ui-lib/components/ControlPanelApp.d.ts +61 -0
- package/dist-ui-lib/components/index.d.ts +18 -0
- package/dist-ui-lib/config/AppConfig.d.ts +7 -0
- package/dist-ui-lib/dashboard/DashboardWidgetRegistry.d.ts +62 -0
- package/dist-ui-lib/dashboard/DashboardWidgetRenderer.d.ts +8 -0
- package/dist-ui-lib/dashboard/PluginWidgetRenderer.d.ts +19 -0
- package/dist-ui-lib/dashboard/WidgetComponentRegistry.d.ts +48 -0
- package/dist-ui-lib/dashboard/builtInWidgets.d.ts +25 -0
- package/dist-ui-lib/dashboard/index.d.ts +13 -0
- package/dist-ui-lib/dashboard/widgets/ServiceHealthWidget.d.ts +12 -0
- package/dist-ui-lib/dashboard/widgets/index.d.ts +6 -0
- package/dist-ui-lib/index.js +5172 -0
- package/dist-ui-lib/index.js.map +1 -0
- package/dist-ui-lib/pages/AuthPage.d.ts +1 -0
- package/dist-ui-lib/pages/ConfigPage.d.ts +1 -0
- package/dist-ui-lib/pages/DashboardPage.d.ts +1 -0
- package/dist-ui-lib/pages/DiagnosticsPage.d.ts +1 -0
- package/dist-ui-lib/pages/EntitlementsPage.d.ts +17 -0
- package/dist-ui-lib/pages/LogsPage.d.ts +1 -0
- package/dist-ui-lib/pages/NotFoundPage.d.ts +1 -0
- package/dist-ui-lib/pages/PluginPage.d.ts +15 -0
- package/dist-ui-lib/pages/PluginsPage.d.ts +1 -0
- package/dist-ui-lib/pages/SystemPage.d.ts +1 -0
- package/dist-ui-lib/pages/UsersPage.d.ts +22 -0
- package/package.json +24 -7
- package/src/core/control-panel.ts +145 -61
- package/src/core/gateway.ts +863 -403
- package/src/core/index.ts +21 -2
- package/src/core/plugin-registry.ts +716 -0
- package/src/core/types.ts +31 -37
- package/src/index.ts +125 -19
- package/src/plugins/auth/adapters/auth0-adapter.ts +214 -0
- package/src/plugins/auth/adapters/basic-adapter.ts +61 -0
- package/src/plugins/auth/adapters/index.ts +10 -0
- package/src/plugins/auth/adapters/supabase-adapter.ts +149 -0
- package/src/plugins/auth/adapters/supertokens-adapter.ts +326 -0
- package/src/plugins/auth/auth-plugin.test.ts +176 -0
- package/src/plugins/auth/auth-plugin.ts +303 -0
- package/src/plugins/auth/env-config.ts +572 -0
- package/src/plugins/auth/index.ts +42 -0
- package/src/plugins/auth/supertokens-adapter.test.ts +621 -0
- package/src/plugins/auth/types.ts +245 -0
- package/src/plugins/bans/bans-plugin.ts +485 -0
- package/src/plugins/bans/index.ts +31 -0
- package/src/plugins/bans/stores/index.ts +7 -0
- package/src/plugins/bans/stores/postgres-store.ts +195 -0
- package/src/plugins/bans/types.ts +141 -0
- package/src/plugins/cache-plugin.test.ts +108 -32
- package/src/plugins/cache-plugin.ts +40 -9
- package/src/plugins/config-plugin.ts +23 -12
- package/src/plugins/diagnostics-plugin.ts +22 -12
- package/src/plugins/entitlements/entitlements-plugin.ts +820 -0
- package/src/plugins/entitlements/index.ts +51 -0
- package/src/plugins/entitlements/sources/index.ts +9 -0
- package/src/plugins/entitlements/sources/postgres-source.ts +253 -0
- package/src/plugins/entitlements/types.ts +256 -0
- package/src/plugins/frontend-app-plugin.ts +24 -12
- package/src/plugins/health-plugin.ts +27 -7
- package/src/plugins/index.ts +132 -4
- package/src/plugins/logs-plugin.ts +28 -14
- package/src/plugins/postgres-plugin.test.ts +52 -29
- package/src/plugins/postgres-plugin.ts +11 -9
- package/src/plugins/preferences/__tests__/deep-merge.test.ts +242 -0
- package/src/plugins/preferences/__tests__/preferences-plugin.test.ts +350 -0
- package/src/plugins/preferences/index.ts +30 -0
- package/src/plugins/preferences/preferences-plugin.ts +270 -0
- package/src/plugins/preferences/stores/index.ts +9 -0
- package/src/plugins/preferences/stores/postgres-store.ts +252 -0
- package/src/plugins/preferences/types.ts +100 -0
- package/src/plugins/users/__tests__/users-plugin.test.ts +690 -0
- package/src/plugins/users/index.ts +38 -0
- package/src/plugins/users/stores/index.ts +7 -0
- package/src/plugins/users/stores/postgres-store.ts +225 -0
- package/src/plugins/users/types.ts +247 -0
- package/src/plugins/users/users-plugin.ts +418 -0
- package/ui/src/App.tsx +188 -31
- package/ui/src/api/controlPanelApi.ts +453 -1
- package/ui/src/components/ControlPanelApp.tsx +212 -0
- package/ui/src/components/index.ts +62 -0
- package/ui/src/dashboard/DashboardWidgetRegistry.tsx +129 -0
- package/ui/src/dashboard/DashboardWidgetRenderer.tsx +34 -0
- package/ui/src/dashboard/PluginWidgetRenderer.tsx +118 -0
- package/ui/src/dashboard/WidgetComponentRegistry.tsx +120 -0
- package/ui/src/dashboard/builtInWidgets.tsx +35 -0
- package/ui/src/dashboard/index.ts +35 -0
- package/ui/src/dashboard/widgets/ServiceHealthWidget.tsx +140 -0
- package/ui/src/dashboard/widgets/index.ts +7 -0
- package/ui/src/pages/AuthPage.tsx +259 -0
- package/ui/src/pages/DashboardPage.tsx +28 -149
- package/ui/src/pages/EntitlementsPage.tsx +557 -0
- package/ui/src/pages/LogsPage.tsx +174 -8
- package/ui/src/pages/PluginPage.tsx +148 -0
- package/ui/src/pages/PluginsPage.tsx +394 -0
- package/ui/src/pages/SystemPage.tsx +445 -0
- package/ui/src/pages/UsersPage.tsx +837 -0
- package/ui/tsconfig.lib.json +11 -0
- package/ui/vite.lib.config.ts +56 -0
- package/dist-ui/assets/index-CW1BviRn.js +0 -465
- package/dist-ui/assets/index-CW1BviRn.js.map +0 -1
- package/ui/src/pages/HealthPage.tsx +0 -204
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Plugin Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the pluggable authentication system.
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
7
|
+
*/
|
|
8
|
+
import type { Request, Response, RequestHandler } from 'express';
|
|
9
|
+
/**
|
|
10
|
+
* Authenticated user information
|
|
11
|
+
*/
|
|
12
|
+
export interface AuthenticatedUser {
|
|
13
|
+
/** Unique user ID from the provider */
|
|
14
|
+
id: string;
|
|
15
|
+
/** User's email address */
|
|
16
|
+
email: string;
|
|
17
|
+
/** User's display name */
|
|
18
|
+
name?: string;
|
|
19
|
+
/** User's profile picture URL */
|
|
20
|
+
picture?: string;
|
|
21
|
+
/** Whether the email is verified */
|
|
22
|
+
emailVerified?: boolean;
|
|
23
|
+
/** User's roles from the provider */
|
|
24
|
+
roles?: string[];
|
|
25
|
+
/** Raw user object from the provider */
|
|
26
|
+
raw?: Record<string, unknown>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Auth adapter interface - all adapters must implement this
|
|
30
|
+
*/
|
|
31
|
+
export interface AuthAdapter {
|
|
32
|
+
/** Adapter name (e.g., 'auth0', 'supabase', 'basic') */
|
|
33
|
+
name: string;
|
|
34
|
+
/**
|
|
35
|
+
* Initialize the adapter - called once during plugin setup
|
|
36
|
+
* Returns middleware to apply to the Express app
|
|
37
|
+
*/
|
|
38
|
+
initialize(): RequestHandler | RequestHandler[];
|
|
39
|
+
/**
|
|
40
|
+
* Check if the request is authenticated
|
|
41
|
+
*/
|
|
42
|
+
isAuthenticated(req: Request): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Get the authenticated user from the request
|
|
45
|
+
* Can be async for adapters that need to validate tokens
|
|
46
|
+
*/
|
|
47
|
+
getUser(req: Request): AuthenticatedUser | null | Promise<AuthenticatedUser | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Check if user has required roles (optional)
|
|
50
|
+
*/
|
|
51
|
+
hasRoles?(req: Request, roles: string[]): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Get the access token for downstream API calls (optional)
|
|
54
|
+
*/
|
|
55
|
+
getAccessToken?(req: Request): string | null;
|
|
56
|
+
/**
|
|
57
|
+
* Handler for unauthorized requests (optional custom behavior)
|
|
58
|
+
*/
|
|
59
|
+
onUnauthorized?(req: Request, res: Response): void;
|
|
60
|
+
/**
|
|
61
|
+
* Cleanup resources on shutdown (optional)
|
|
62
|
+
*/
|
|
63
|
+
shutdown?(): Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Auth0 adapter configuration
|
|
67
|
+
*/
|
|
68
|
+
export interface Auth0AdapterConfig {
|
|
69
|
+
/** Auth0 domain (e.g., 'myapp.auth0.com') */
|
|
70
|
+
domain: string;
|
|
71
|
+
/** Auth0 client ID */
|
|
72
|
+
clientId: string;
|
|
73
|
+
/** Auth0 client secret */
|
|
74
|
+
clientSecret: string;
|
|
75
|
+
/** Base URL of the application */
|
|
76
|
+
baseUrl: string;
|
|
77
|
+
/** Session secret for cookie encryption */
|
|
78
|
+
secret: string;
|
|
79
|
+
/** API audience for access tokens (optional) */
|
|
80
|
+
audience?: string;
|
|
81
|
+
/** Scopes to request (default: ['openid', 'profile', 'email']) */
|
|
82
|
+
scopes?: string[];
|
|
83
|
+
/** Allowed roles - only these roles can access (optional) */
|
|
84
|
+
allowedRoles?: string[];
|
|
85
|
+
/** Allowed email domains - only these domains can access (optional) */
|
|
86
|
+
allowedDomains?: string[];
|
|
87
|
+
/** Whether to expose the access token to handlers (default: false) */
|
|
88
|
+
exposeAccessToken?: boolean;
|
|
89
|
+
/** Auth routes configuration */
|
|
90
|
+
routes?: {
|
|
91
|
+
login?: string;
|
|
92
|
+
logout?: string;
|
|
93
|
+
callback?: string;
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Supabase adapter configuration
|
|
98
|
+
*/
|
|
99
|
+
export interface SupabaseAdapterConfig {
|
|
100
|
+
/** Supabase project URL */
|
|
101
|
+
url: string;
|
|
102
|
+
/** Supabase anon key */
|
|
103
|
+
anonKey: string;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Basic auth adapter configuration
|
|
107
|
+
*/
|
|
108
|
+
export interface BasicAdapterConfig {
|
|
109
|
+
/** Username for basic auth */
|
|
110
|
+
username: string;
|
|
111
|
+
/** Password for basic auth */
|
|
112
|
+
password: string;
|
|
113
|
+
/** Realm name for the WWW-Authenticate header */
|
|
114
|
+
realm?: string;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Supertokens adapter configuration
|
|
118
|
+
*/
|
|
119
|
+
export interface SupertokensAdapterConfig {
|
|
120
|
+
/** Supertokens connection URI (e.g., 'http://localhost:3567') */
|
|
121
|
+
connectionUri: string;
|
|
122
|
+
/** Supertokens API key (for managed service) */
|
|
123
|
+
apiKey?: string;
|
|
124
|
+
/** App name for branding */
|
|
125
|
+
appName: string;
|
|
126
|
+
/** API domain (e.g., 'http://localhost:3000') */
|
|
127
|
+
apiDomain: string;
|
|
128
|
+
/** Website domain (e.g., 'http://localhost:3000') */
|
|
129
|
+
websiteDomain: string;
|
|
130
|
+
/** API base path (default: '/auth') */
|
|
131
|
+
apiBasePath?: string;
|
|
132
|
+
/** Website base path (default: '/auth') */
|
|
133
|
+
websiteBasePath?: string;
|
|
134
|
+
/** Enable email/password auth (default: true) */
|
|
135
|
+
enableEmailPassword?: boolean;
|
|
136
|
+
/** Social login providers */
|
|
137
|
+
socialProviders?: {
|
|
138
|
+
google?: {
|
|
139
|
+
clientId: string;
|
|
140
|
+
clientSecret: string;
|
|
141
|
+
};
|
|
142
|
+
apple?: {
|
|
143
|
+
clientId: string;
|
|
144
|
+
clientSecret: string;
|
|
145
|
+
keyId: string;
|
|
146
|
+
teamId: string;
|
|
147
|
+
};
|
|
148
|
+
github?: {
|
|
149
|
+
clientId: string;
|
|
150
|
+
clientSecret: string;
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Auth plugin configuration
|
|
156
|
+
*/
|
|
157
|
+
export interface AuthPluginConfig {
|
|
158
|
+
/** Primary adapter for authentication */
|
|
159
|
+
adapter: AuthAdapter;
|
|
160
|
+
/** Fallback adapters checked in order if primary fails (optional) */
|
|
161
|
+
fallback?: AuthAdapter[];
|
|
162
|
+
/** Paths to exclude from authentication */
|
|
163
|
+
excludePaths?: string[];
|
|
164
|
+
/** Whether auth is required for all routes (default: true) */
|
|
165
|
+
authRequired?: boolean;
|
|
166
|
+
/** Custom unauthorized handler */
|
|
167
|
+
onUnauthorized?: (req: Request, res: Response) => void;
|
|
168
|
+
/** Enable debug logging */
|
|
169
|
+
debug?: boolean;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Extended Express Request with auth info
|
|
173
|
+
*/
|
|
174
|
+
export interface AuthenticatedRequest extends Request {
|
|
175
|
+
auth: {
|
|
176
|
+
isAuthenticated: boolean;
|
|
177
|
+
user: AuthenticatedUser | null;
|
|
178
|
+
adapter: string;
|
|
179
|
+
accessToken?: string;
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Helper type guard for authenticated requests
|
|
184
|
+
*/
|
|
185
|
+
export declare function isAuthenticatedRequest(req: Request): req is AuthenticatedRequest;
|
|
186
|
+
/**
|
|
187
|
+
* Auth plugin state
|
|
188
|
+
*/
|
|
189
|
+
export type AuthPluginState = 'disabled' | 'enabled' | 'error';
|
|
190
|
+
/**
|
|
191
|
+
* Options for createAuthPluginFromEnv (overrides only)
|
|
192
|
+
*/
|
|
193
|
+
export interface AuthEnvPluginOptions {
|
|
194
|
+
/** Paths to exclude from authentication (can also use AUTH_EXCLUDE_PATHS env var) */
|
|
195
|
+
excludePaths?: string[];
|
|
196
|
+
/** Whether auth is required (can also use AUTH_REQUIRED env var, default: true) */
|
|
197
|
+
authRequired?: boolean;
|
|
198
|
+
/** Enable debug logging (can also use AUTH_DEBUG env var) */
|
|
199
|
+
debug?: boolean;
|
|
200
|
+
/** Custom unauthorized handler */
|
|
201
|
+
onUnauthorized?: (req: Request, res: Response) => void;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Auth configuration status returned by getAuthStatus()
|
|
205
|
+
*/
|
|
206
|
+
export interface AuthConfigStatus {
|
|
207
|
+
/** Current plugin state */
|
|
208
|
+
state: AuthPluginState;
|
|
209
|
+
/** Active adapter name (null if disabled or error) */
|
|
210
|
+
adapter: string | null;
|
|
211
|
+
/** Error message if state is 'error' */
|
|
212
|
+
error?: string;
|
|
213
|
+
/** List of missing environment variables if state is 'error' */
|
|
214
|
+
missingVars?: string[];
|
|
215
|
+
/** Current configuration with secrets masked */
|
|
216
|
+
config?: Record<string, string>;
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/auth/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAgB,cAAc,EAAE,MAAM,SAAS,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,wCAAwC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,UAAU,IAAI,cAAc,GAAG,cAAc,EAAE,CAAC;IAEhD;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC;IAEvC;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,iBAAiB,GAAG,IAAI,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAEpF;;OAEG;IACH,QAAQ,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAElD;;OAEG;IACH,cAAc,CAAC,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IAE7C;;OAEG;IACH,cAAc,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;IAEnD;;OAEG;IACH,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,sEAAsE;IACtE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gCAAgC;IAChC,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,2BAA2B;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,iEAAiE;IACjE,aAAa,EAAE,MAAM,CAAC;IAEtB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAEhB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAElB,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAC;IAEtB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,iDAAiD;IACjD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,6BAA6B;IAC7B,eAAe,CAAC,EAAE;QAChB,MAAM,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,CAAC;QACpD,KAAK,CAAC,EAAE;YACN,QAAQ,EAAE,MAAM,CAAC;YACjB,YAAY,EAAE,MAAM,CAAC;YACrB,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;QACF,MAAM,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,CAAC;KACrD,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,OAAO,EAAE,WAAW,CAAC;IACrB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kCAAkC;IAClC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;IACvD,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,OAAO;IACnD,IAAI,EAAE;QACJ,eAAe,EAAE,OAAO,CAAC;QACzB,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,oBAAoB,CAEhF;AAMD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,qFAAqF;IACrF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kCAAkC;IAClC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;CACxD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,KAAK,EAAE,eAAe,CAAC;IACvB,sDAAsD;IACtD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Plugin Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the pluggable authentication system.
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Helper type guard for authenticated requests
|
|
10
|
+
*/
|
|
11
|
+
export function isAuthenticatedRequest(req) {
|
|
12
|
+
return 'auth' in req && req.auth?.isAuthenticated === true;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/plugins/auth/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkMH;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAY;IACjD,OAAO,MAAM,IAAI,GAAG,IAAK,GAA4B,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;AACvF,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bans Plugin
|
|
3
|
+
*
|
|
4
|
+
* User ban management plugin for @qwickapps/server.
|
|
5
|
+
* Bans are always on USER entities (by user_id), not emails.
|
|
6
|
+
*
|
|
7
|
+
* This plugin depends on the Users Plugin for user resolution.
|
|
8
|
+
* Use `isEmailBanned()` convenience function to check bans by email,
|
|
9
|
+
* which internally resolves email → user_id → ban status.
|
|
10
|
+
*
|
|
11
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
12
|
+
*/
|
|
13
|
+
import type { Plugin } from '../../core/plugin-registry.js';
|
|
14
|
+
import type { BansPluginConfig, BanStore, Ban, CreateBanInput, RemoveBanInput } from './types.js';
|
|
15
|
+
/**
|
|
16
|
+
* Create the Bans plugin
|
|
17
|
+
*/
|
|
18
|
+
export declare function createBansPlugin(config: BansPluginConfig): Plugin;
|
|
19
|
+
/**
|
|
20
|
+
* Get the current ban store instance
|
|
21
|
+
*/
|
|
22
|
+
export declare function getBanStore(): BanStore | null;
|
|
23
|
+
/**
|
|
24
|
+
* Check if a user is banned by user ID
|
|
25
|
+
*/
|
|
26
|
+
export declare function isUserBanned(userId: string): Promise<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* Check if a user is banned by email
|
|
29
|
+
*
|
|
30
|
+
* This is a convenience function that:
|
|
31
|
+
* 1. Resolves email → user via Users Plugin
|
|
32
|
+
* 2. Checks ban status by user_id
|
|
33
|
+
*
|
|
34
|
+
* Returns false if user doesn't exist (unknown user = not banned)
|
|
35
|
+
*/
|
|
36
|
+
export declare function isEmailBanned(email: string): Promise<boolean>;
|
|
37
|
+
/**
|
|
38
|
+
* Get active ban for a user
|
|
39
|
+
*/
|
|
40
|
+
export declare function getActiveBan(userId: string): Promise<Ban | null>;
|
|
41
|
+
/**
|
|
42
|
+
* Ban a user
|
|
43
|
+
*/
|
|
44
|
+
export declare function banUser(input: CreateBanInput): Promise<Ban>;
|
|
45
|
+
/**
|
|
46
|
+
* Unban a user
|
|
47
|
+
*/
|
|
48
|
+
export declare function unbanUser(input: RemoveBanInput): Promise<boolean>;
|
|
49
|
+
/**
|
|
50
|
+
* List all active bans
|
|
51
|
+
*/
|
|
52
|
+
export declare function listActiveBans(options?: {
|
|
53
|
+
limit?: number;
|
|
54
|
+
offset?: number;
|
|
55
|
+
}): Promise<{
|
|
56
|
+
bans: Ban[];
|
|
57
|
+
total: number;
|
|
58
|
+
}>;
|
|
59
|
+
//# sourceMappingURL=bans-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bans-plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/bans/bans-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAgC,MAAM,+BAA+B,CAAC;AAC1F,OAAO,KAAK,EACV,gBAAgB,EAChB,QAAQ,EACR,GAAG,EACH,cAAc,EACd,cAAc,EACf,MAAM,YAAY,CAAC;AASpB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CA8UjE;AAMD;;GAEG;AACH,wBAAgB,WAAW,IAAI,QAAQ,GAAG,IAAI,CAE7C;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKnE;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAYnE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAKtE;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAoBjE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBvE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC;IAC3F,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAKD"}
|