@maka/maka-cli 5.123.0 → 5.123.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 +64 -64
- package/bundle/typescript/package.json +120 -120
- package/bundle/typescript/src/README.md +64 -64
- package/bundle/typescript/src/commands/aws/aws.command.js +2 -2
- package/bundle/typescript/src/commands/aws/ci.sub.cmd.js +5 -5
- package/bundle/typescript/src/commands/aws/ckp.sub.cmd.js +12 -12
- package/bundle/typescript/src/commands/aws/csg.sub.cmd.js +3 -3
- package/bundle/typescript/src/commands/aws/di.sub.cmd.js +8 -8
- package/bundle/typescript/src/commands/aws/rkp.sub.cmd.js +5 -5
- package/bundle/typescript/src/commands/aws/sth.sub.cmd.js +3 -3
- package/bundle/typescript/src/commands/aws/ti.sub.cmd.js +5 -5
- package/bundle/typescript/src/commands/build/build.js +16 -16
- package/bundle/typescript/src/commands/build/docker.sub.cmd.js +9 -9
- package/bundle/typescript/src/commands/create.js +36 -36
- package/bundle/typescript/src/commands/debug.js +4 -4
- package/bundle/typescript/src/commands/deploy/deploy.command.js +2 -2
- package/bundle/typescript/src/commands/deploy/galaxy.sub.cmd.js +2 -2
- package/bundle/typescript/src/commands/deploy/github.sub.cmd.js +8 -8
- package/bundle/typescript/src/commands/deploy/ubuntu.sub.cmd.js +2 -2
- package/bundle/typescript/src/commands/env/env.command.js +8 -8
- package/bundle/typescript/src/commands/env/set.sub.cmd.js +11 -11
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +9 -9
- package/bundle/typescript/src/commands/game/sideQuest/commands/source.js +7 -7
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +443 -443
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +6 -6
- package/bundle/typescript/src/commands/game/sideQuest/game.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +206 -206
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js +9 -9
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +556 -556
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +1447 -1447
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ephemeral.js +14 -14
- package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +2 -2
- package/bundle/typescript/src/commands/generate.js +2 -2
- package/bundle/typescript/src/commands/lint.js +10 -10
- package/bundle/typescript/src/commands/maka.cmd.js +26 -26
- package/bundle/typescript/src/commands/murder.js +14 -14
- package/bundle/typescript/src/commands/proxy.js +13 -13
- package/bundle/typescript/src/commands/remote/reconfig.sub.cmd.js +6 -6
- package/bundle/typescript/src/commands/run/docker.sub.cmd.js +11 -11
- package/bundle/typescript/src/commands/run/run.command.js +24 -24
- package/bundle/typescript/src/commands/set/global.sub.cmd.js +8 -8
- package/bundle/typescript/src/commands/set/local.sub.cmd.js +2 -2
- package/bundle/typescript/src/commands/set/set.command.js +3 -3
- package/bundle/typescript/src/commands/testCmd/test.command.js +2 -2
- package/bundle/typescript/src/exec.js +0 -0
- package/bundle/typescript/src/generators/api.js +11 -11
- package/bundle/typescript/src/generators/collection.js +6 -6
- package/bundle/typescript/src/generators/hook.js +10 -10
- package/bundle/typescript/src/generators/kits/auth/auth.generator.js +2 -2
- package/bundle/typescript/src/generators/kits/auth/auth0-meteor.auth.gen.js +612 -612
- package/bundle/typescript/src/generators/kits/auth/basic-meteor.auth.gen.js +48 -48
- package/bundle/typescript/src/generators/kits/auth/provider.auth.gen.js +12 -12
- package/bundle/typescript/src/generators/kits/esri/esri.generator.js +3 -3
- package/bundle/typescript/src/generators/kits/esri/map.esri.gen.js +7 -7
- package/bundle/typescript/src/generators/kits/frames/frames.generator.js +16 -16
- package/bundle/typescript/src/generators/kits/mui/auth.mui.gen.js +2 -2
- package/bundle/typescript/src/generators/kits/mui/auth0.mui.gen.js +5 -5
- package/bundle/typescript/src/generators/kits/mui/frame.mui.gen.js +4 -4
- package/bundle/typescript/src/generators/kits/mui/mui.generator.js +22 -22
- package/bundle/typescript/src/generators/services/translation.js +5 -5
- package/bundle/typescript/src/templates/aws/cloudformation/create-ec2-instance.template +14 -14
- package/bundle/typescript/src/templates/meteor/api/api.js +20 -20
- package/bundle/typescript/src/templates/meteor/api/api.js.ts +20 -20
- package/bundle/typescript/src/templates/meteor/api/apollo-gateway.js +50 -50
- package/bundle/typescript/src/templates/meteor/api/apollo-gateway.js.ts +55 -55
- package/bundle/typescript/src/templates/meteor/api/graphql-api.js +63 -63
- package/bundle/typescript/src/templates/meteor/api/graphql-api.js.ts +69 -69
- package/bundle/typescript/src/templates/meteor/api/methods.js +39 -39
- package/bundle/typescript/src/templates/meteor/api/methods.js.ts +40 -40
- package/bundle/typescript/src/templates/meteor/api/register-api.js +3 -3
- package/bundle/typescript/src/templates/meteor/api/register-api.js.ts +3 -3
- package/bundle/typescript/src/templates/meteor/api/resolvers.js +9 -9
- package/bundle/typescript/src/templates/meteor/api/resolvers.js.ts +9 -9
- package/bundle/typescript/src/templates/meteor/api/typeDefs.js +6 -6
- package/bundle/typescript/src/templates/meteor/api/typeDefs.js.ts +6 -6
- package/bundle/typescript/src/templates/meteor/app/client/body.html +3 -3
- package/bundle/typescript/src/templates/meteor/app/client/head.html +12 -12
- package/bundle/typescript/src/templates/meteor/app/client/main.js +15 -15
- package/bundle/typescript/src/templates/meteor/app/client/main.js.jsx +15 -15
- package/bundle/typescript/src/templates/meteor/app/client/main.js.ts +17 -17
- package/bundle/typescript/src/templates/meteor/app/client/main.js.tsx +17 -17
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js +20 -20
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.jsx +107 -107
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.ts +20 -20
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.tsx +108 -108
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js +39 -39
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.jsx +33 -33
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.ts +24 -24
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.tsx +33 -33
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js +9 -9
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.jsx +9 -9
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.ts +9 -9
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.tsx +9 -9
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js +1 -1
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.jsx +20 -20
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.ts +1 -1
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.tsx +20 -20
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/routes.js.jsx +28 -28
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/routes.js.tsx +28 -28
- package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js +1 -1
- package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js.jsx +95 -95
- package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js.tsx +98 -98
- package/bundle/typescript/src/templates/meteor/app/imports/ui/test-helpers.js +24 -24
- package/bundle/typescript/src/templates/meteor/app/imports/ui/test-helpers.js.ts +24 -24
- package/bundle/typescript/src/templates/meteor/app/lib/main.js +3 -3
- package/bundle/typescript/src/templates/meteor/app/lib/main.js.jsx +3 -3
- package/bundle/typescript/src/templates/meteor/app/lib/main.js.ts +3 -3
- package/bundle/typescript/src/templates/meteor/app/lib/main.js.tsx +3 -3
- package/bundle/typescript/src/templates/meteor/app/maka.d.ts +533 -533
- package/bundle/typescript/src/templates/meteor/app/meteor.d.ts +181 -181
- package/bundle/typescript/src/templates/meteor/app/public/manifest.json +27 -27
- package/bundle/typescript/src/templates/meteor/app/public/sw.js +30 -30
- package/bundle/typescript/src/templates/meteor/app/public/sw.js.jsx +30 -30
- package/bundle/typescript/src/templates/meteor/app/public/sw.js.ts +30 -30
- package/bundle/typescript/src/templates/meteor/app/public/sw.js.tsx +30 -30
- package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js +179 -179
- package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.jsx +179 -179
- package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.ts +179 -179
- package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.tsx +179 -179
- package/bundle/typescript/src/templates/meteor/app/server/main.js +13 -13
- package/bundle/typescript/src/templates/meteor/app/server/main.js.jsx +13 -13
- package/bundle/typescript/src/templates/meteor/app/server/main.js.ts +14 -14
- package/bundle/typescript/src/templates/meteor/app/server/main.js.tsx +14 -14
- package/bundle/typescript/src/templates/meteor/app/tsconfig.json +42 -42
- package/bundle/typescript/src/templates/meteor/collection/collection.js +51 -51
- package/bundle/typescript/src/templates/meteor/collection/collection.js.ts +55 -55
- package/bundle/typescript/src/templates/meteor/collection/tests.js +27 -27
- package/bundle/typescript/src/templates/meteor/collection/tests.js.ts +27 -27
- package/bundle/typescript/src/templates/meteor/config/deploy.sh.template +101 -101
- package/bundle/typescript/src/templates/meteor/config/docker-compose.yaml +17 -17
- package/bundle/typescript/src/templates/meteor/config/nginx.conf.template +31 -31
- package/bundle/typescript/src/templates/meteor/config/pm2.config.js +27 -27
- package/bundle/typescript/src/templates/meteor/config/process.env +5 -5
- package/bundle/typescript/src/templates/meteor/config/settings.json +11 -11
- package/bundle/typescript/src/templates/meteor/config/ssh.json +6 -6
- package/bundle/typescript/src/templates/meteor/dbc/config.js +70 -70
- package/bundle/typescript/src/templates/meteor/dbc/config.js.ts +70 -70
- package/bundle/typescript/src/templates/meteor/dbc/conn.js +37 -37
- package/bundle/typescript/src/templates/meteor/dbc/conn.js.ts +37 -37
- package/bundle/typescript/src/templates/meteor/dbc/register-dbc.js +3 -3
- package/bundle/typescript/src/templates/meteor/dbc/register-dbc.js.ts +3 -3
- package/bundle/typescript/src/templates/meteor/github/workflows/deploy.yaml +150 -150
- package/bundle/typescript/src/templates/meteor/method/method.js +48 -48
- package/bundle/typescript/src/templates/meteor/method/method.js.ts +48 -48
- package/bundle/typescript/src/templates/meteor/package/package.js +37 -37
- package/bundle/typescript/src/templates/meteor/package/package.js.jsx +37 -37
- package/bundle/typescript/src/templates/meteor/package/package.js.ts +36 -36
- package/bundle/typescript/src/templates/meteor/package/package.js.tsx +37 -37
- package/bundle/typescript/src/templates/meteor/package/tests/client/package.js +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.jsx +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.ts +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.tsx +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/server/package.js +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.jsx +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.ts +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.tsx +5 -5
- package/bundle/typescript/src/templates/meteor/project/.maka/config.json +29 -29
- package/bundle/typescript/src/templates/meteor/project/README.md +33 -33
- package/bundle/typescript/src/templates/meteor/project/build/README +4 -4
- package/bundle/typescript/src/templates/meteor/project/gitignore +10 -10
- package/bundle/typescript/src/templates/meteor/project/package.json +29 -29
- package/bundle/typescript/src/templates/meteor/publish/publish.js +7 -7
- package/bundle/typescript/src/templates/meteor/publish/publish.js.ts +7 -7
- package/bundle/typescript/src/templates/meteor/service/logger/logger.js +27 -27
- package/bundle/typescript/src/templates/meteor/service/logger/logger.js.ts +27 -27
- package/bundle/typescript/src/templates/meteor/stylesheet/stylesheet.css +5 -5
- package/bundle/typescript/src/templates/meteor/stylesheet/stylesheet.css.less +5 -5
- package/bundle/typescript/src/templates/meteor/template/template-tests.js +1 -1
- package/bundle/typescript/src/templates/meteor/template/template-tests.js.jsx +55 -55
- package/bundle/typescript/src/templates/meteor/template/template-tests.js.ts +1 -1
- package/bundle/typescript/src/templates/meteor/template/template-tests.js.tsx +55 -55
- package/bundle/typescript/src/templates/meteor/template/template.css +3 -3
- package/bundle/typescript/src/templates/meteor/template/template.css.less +3 -3
- package/bundle/typescript/src/templates/meteor/template/template.css.scss +3 -3
- package/bundle/typescript/src/templates/meteor/template/template.html +5 -5
- package/bundle/typescript/src/templates/meteor/template/template.js +20 -20
- package/bundle/typescript/src/templates/meteor/template/template.js.jsx +77 -77
- package/bundle/typescript/src/templates/meteor/template/template.js.ts +1 -1
- package/bundle/typescript/src/templates/meteor/template/template.js.tsx +89 -89
- package/bundle/typescript/src/templates/react/component/component.css +6 -6
- package/bundle/typescript/src/templates/react/component/component.css.less +6 -6
- package/bundle/typescript/src/templates/react/component/component.css.scss +3 -3
- package/bundle/typescript/src/templates/react/component/component.js.jsx +59 -59
- package/bundle/typescript/src/templates/react/component/component.js.tsx +65 -65
- package/bundle/typescript/src/templates/react/hook/hook.css +3 -3
- package/bundle/typescript/src/templates/react/hook/hook.css.scss +3 -3
- package/bundle/typescript/src/templates/react/hook/hook.js.jsx +19 -19
- package/bundle/typescript/src/templates/react/hook/hook.js.tsx +19 -19
- package/bundle/typescript/src/templates/react/kit/auth/provider/authentication-provider.js.jsx +306 -306
- package/bundle/typescript/src/templates/react/kit/auth/provider/authentication-provider.js.tsx +350 -350
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-client.js.jsx +178 -178
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-client.js.tsx +178 -178
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-config.js.jsx +59 -59
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-config.js.tsx +67 -67
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-methods.js.jsx +273 -273
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-methods.js.tsx +275 -275
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-validator.js.jsx +182 -182
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-validator.js.tsx +199 -199
- package/bundle/typescript/src/templates/react/kit/auth/service/meteor-auth-service.js.jsx +138 -138
- package/bundle/typescript/src/templates/react/kit/auth/service/meteor-auth-service.js.tsx +153 -153
- package/bundle/typescript/src/templates/react/kit/esri/map/basic-map.js.jsx +29 -29
- package/bundle/typescript/src/templates/react/kit/esri/map/basic-map.js.tsx +32 -32
- package/bundle/typescript/src/templates/react/kit/frames/frames-demo.css +63 -63
- package/bundle/typescript/src/templates/react/kit/frames/frames-demo.jsx +153 -153
- package/bundle/typescript/src/templates/react/kit/frames/frames-demo.tsx +164 -164
- package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.css +105 -105
- package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.jsx +158 -158
- package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.tsx +166 -166
- package/bundle/typescript/src/templates/react/kit/mui/auth/forgot-password/basic-forgot-password-page.js.jsx +34 -34
- package/bundle/typescript/src/templates/react/kit/mui/auth/forgot-password/basic-forgot-password-page.js.tsx +33 -33
- package/bundle/typescript/src/templates/react/kit/mui/auth/login/basic-login-page.js.jsx +53 -53
- package/bundle/typescript/src/templates/react/kit/mui/auth/login/basic-login-page.js.tsx +53 -53
- package/bundle/typescript/src/templates/react/kit/mui/auth/logout/basic-logout-page.js.jsx +25 -25
- package/bundle/typescript/src/templates/react/kit/mui/auth/logout/basic-logout-page.js.tsx +25 -25
- package/bundle/typescript/src/templates/react/kit/mui/auth/password-reset/basic-password-reset-page.js.jsx +41 -41
- package/bundle/typescript/src/templates/react/kit/mui/auth/password-reset/basic-password-reset-page.js.tsx +34 -34
- package/bundle/typescript/src/templates/react/kit/mui/auth/register/basic-register-page.js.jsx +33 -33
- package/bundle/typescript/src/templates/react/kit/mui/auth/register/basic-register-page.js.tsx +33 -33
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth-callback.js.jsx +71 -71
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth-callback.js.tsx +71 -71
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-account-settings.js.jsx +123 -123
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-account-settings.js.tsx +123 -123
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-login-button.js.jsx +56 -56
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-login-button.js.tsx +74 -74
- package/bundle/typescript/src/templates/react/kit/mui/frame/app-bars/basic-app-bar.js.jsx +43 -43
- package/bundle/typescript/src/templates/react/kit/mui/frame/app-bars/basic-app-bar.js.tsx +43 -43
- package/bundle/typescript/src/templates/react/kit/mui/frame/drawers/basic-drawer.js.jsx +121 -121
- package/bundle/typescript/src/templates/react/kit/mui/frame/drawers/basic-drawer.js.tsx +117 -117
- package/bundle/typescript/src/templates/react/kit/mui/frame/footers/basic-sticky-footer.js.jsx +41 -41
- package/bundle/typescript/src/templates/react/kit/mui/frame/footers/basic-sticky-footer.js.tsx +41 -41
- package/bundle/typescript/src/templates/react/route/route.js +8 -8
- package/bundle/typescript/src/templates/react/route/route.js.jsx +5 -5
- package/bundle/typescript/src/templates/react/route/route.js.ts +8 -8
- package/bundle/typescript/src/templates/react/route/route.js.tsx +5 -5
- package/bundle/typescript/src/templates/react/test/test.js +1 -1
- package/bundle/typescript/src/templates/react/test/test.js.jsx +40 -40
- package/bundle/typescript/src/templates/react/test/test.js.ts +1 -1
- package/bundle/typescript/src/templates/react/test/test.js.tsx +40 -40
- package/bundle/typescript/src/templates/service/docker/Dockerfile +54 -54
- package/bundle/typescript/src/templates/service/eslint/babel.config.js +16 -16
- package/bundle/typescript/src/templates/service/eslint/config.eslint.js +69 -69
- package/bundle/typescript/src/templates/service/i18n/i18n.js +33 -33
- package/bundle/typescript/src/templates/service/i18n/i18n.js.ts +33 -33
- package/bundle/typescript/src/templates/service/i18n/locales.js +3 -3
- package/bundle/typescript/src/templates/service/i18n/locales.js.ts +3 -3
- package/bundle/typescript/src/templates/service/openssl/openssl.conf +22 -22
- package/bundle/typescript/src/templates/service/test/jest/jest.config.js +24 -24
- package/bundle/typescript/src/templates/service/test/jest/jest.setup.js +7 -7
- package/bundle/typescript/src/tools/mpi/sdk-runtime.d.ts +1 -0
- package/bundle/typescript/src/tools/mpi/sdk-runtime.js +29 -0
- package/bundle/typescript/src/tools/mpi/sdk-runtime.js.map +1 -1
- package/package.json +120 -120
|
@@ -1,178 +1,178 @@
|
|
|
1
|
-
import { Meteor } from 'meteor/meteor';
|
|
2
|
-
import { Auth0Client } from '@auth0/auth0-spa-js';
|
|
3
|
-
import { getAuth0Config } from '../lib/auth0-config';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Auth0 Client Service
|
|
7
|
-
*
|
|
8
|
-
* This service manages Auth0 authentication on the client side,
|
|
9
|
-
* including login, logout, and token management.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
let auth0Client: Auth0Client | null = null;
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Initialize Auth0 client
|
|
16
|
-
*/
|
|
17
|
-
export const getAuth0Client = async (): Promise<Auth0Client> => {
|
|
18
|
-
if (auth0Client) {
|
|
19
|
-
return auth0Client;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const config = getAuth0Config();
|
|
23
|
-
|
|
24
|
-
auth0Client = new Auth0Client({
|
|
25
|
-
domain: config.domain,
|
|
26
|
-
clientId: config.clientId,
|
|
27
|
-
authorizationParams: {
|
|
28
|
-
redirect_uri: config.redirectUri,
|
|
29
|
-
audience: config.audience,
|
|
30
|
-
scope: config.scope,
|
|
31
|
-
},
|
|
32
|
-
cacheLocation: 'memory',
|
|
33
|
-
useRefreshTokens: true,
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
return auth0Client;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Login with Auth0 using redirect
|
|
41
|
-
*/
|
|
42
|
-
export const loginWithAuth0Redirect = async () => {
|
|
43
|
-
const client = await getAuth0Client();
|
|
44
|
-
|
|
45
|
-
await client.loginWithRedirect({
|
|
46
|
-
authorizationParams: {
|
|
47
|
-
redirect_uri: getAuth0Config().redirectUri,
|
|
48
|
-
},
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Login with Auth0 using popup
|
|
54
|
-
* Returns both ID token and access token
|
|
55
|
-
*/
|
|
56
|
-
export const loginWithAuth0Popup = async (): Promise<{ idToken: string; accessToken: string }> => {
|
|
57
|
-
const client = await getAuth0Client();
|
|
58
|
-
|
|
59
|
-
await client.loginWithPopup();
|
|
60
|
-
|
|
61
|
-
// Get the ID token
|
|
62
|
-
const idTokenClaims = await client.getIdTokenClaims();
|
|
63
|
-
if (!idTokenClaims?.__raw) {
|
|
64
|
-
throw new Error('Failed to get Auth0 ID token');
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// Get the access token
|
|
68
|
-
const accessToken = await client.getTokenSilently();
|
|
69
|
-
|
|
70
|
-
return {
|
|
71
|
-
idToken: idTokenClaims.__raw,
|
|
72
|
-
accessToken: accessToken,
|
|
73
|
-
};
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Handle Auth0 redirect callback
|
|
78
|
-
* Call this on your callback page
|
|
79
|
-
* Returns both ID token and access token
|
|
80
|
-
*/
|
|
81
|
-
export const handleAuth0Callback = async (): Promise<{ idToken: string; accessToken: string }> => {
|
|
82
|
-
const client = await getAuth0Client();
|
|
83
|
-
|
|
84
|
-
// Handle the redirect callback
|
|
85
|
-
await client.handleRedirectCallback();
|
|
86
|
-
|
|
87
|
-
// Get the ID token
|
|
88
|
-
const idTokenClaims = await client.getIdTokenClaims();
|
|
89
|
-
if (!idTokenClaims?.__raw) {
|
|
90
|
-
throw new Error('Failed to get Auth0 ID token after callback');
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// Get the access token
|
|
94
|
-
const accessToken = await client.getTokenSilently();
|
|
95
|
-
|
|
96
|
-
return {
|
|
97
|
-
idToken: idTokenClaims.__raw,
|
|
98
|
-
accessToken: accessToken,
|
|
99
|
-
};
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Get current Auth0 user
|
|
104
|
-
*/
|
|
105
|
-
export const getAuth0User = async () => {
|
|
106
|
-
const client = await getAuth0Client();
|
|
107
|
-
return await client.getUser();
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Check if user is authenticated with Auth0
|
|
112
|
-
*/
|
|
113
|
-
export const isAuth0Authenticated = async (): Promise<boolean> => {
|
|
114
|
-
const client = await getAuth0Client();
|
|
115
|
-
return await client.isAuthenticated();
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Logout from Auth0
|
|
120
|
-
*/
|
|
121
|
-
export const logoutAuth0 = async () => {
|
|
122
|
-
const client = await getAuth0Client();
|
|
123
|
-
|
|
124
|
-
await client.logout({
|
|
125
|
-
logoutParams: {
|
|
126
|
-
returnTo: window.location.origin,
|
|
127
|
-
},
|
|
128
|
-
});
|
|
129
|
-
};
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Get Auth0 access token
|
|
133
|
-
*/
|
|
134
|
-
export const getAuth0AccessToken = async (): Promise<string> => {
|
|
135
|
-
const client = await getAuth0Client();
|
|
136
|
-
|
|
137
|
-
return await client.getTokenSilently();
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Get Auth0 ID token
|
|
142
|
-
*/
|
|
143
|
-
export const getAuth0IdToken = async (): Promise<string> => {
|
|
144
|
-
const client = await getAuth0Client();
|
|
145
|
-
|
|
146
|
-
const token = await client.getIdTokenClaims();
|
|
147
|
-
|
|
148
|
-
if (!token?.__raw) {
|
|
149
|
-
throw new Error('No Auth0 token available');
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
return token.__raw;
|
|
153
|
-
};
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Silently refresh the Auth0 token and update Meteor session
|
|
157
|
-
* This is called automatically when the token is about to expire
|
|
158
|
-
* Returns both ID token and access token
|
|
159
|
-
*/
|
|
160
|
-
export const refreshAuth0Token = async (): Promise<{ idToken: string; accessToken: string }> => {
|
|
161
|
-
const client = await getAuth0Client();
|
|
162
|
-
|
|
163
|
-
// Get a fresh access token silently (using refresh token)
|
|
164
|
-
const accessToken = await client.getTokenSilently({
|
|
165
|
-
cacheMode: 'off', // Force refresh
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
// Get the new ID token
|
|
169
|
-
const idTokenClaims = await client.getIdTokenClaims();
|
|
170
|
-
if (!idTokenClaims?.__raw) {
|
|
171
|
-
throw new Error('Failed to refresh Auth0 ID token');
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
return {
|
|
175
|
-
idToken: idTokenClaims.__raw,
|
|
176
|
-
accessToken: accessToken,
|
|
177
|
-
};
|
|
178
|
-
};
|
|
1
|
+
import { Meteor } from 'meteor/meteor';
|
|
2
|
+
import { Auth0Client } from '@auth0/auth0-spa-js';
|
|
3
|
+
import { getAuth0Config } from '../lib/auth0-config';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Auth0 Client Service
|
|
7
|
+
*
|
|
8
|
+
* This service manages Auth0 authentication on the client side,
|
|
9
|
+
* including login, logout, and token management.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
let auth0Client: Auth0Client | null = null;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Initialize Auth0 client
|
|
16
|
+
*/
|
|
17
|
+
export const getAuth0Client = async (): Promise<Auth0Client> => {
|
|
18
|
+
if (auth0Client) {
|
|
19
|
+
return auth0Client;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const config = getAuth0Config();
|
|
23
|
+
|
|
24
|
+
auth0Client = new Auth0Client({
|
|
25
|
+
domain: config.domain,
|
|
26
|
+
clientId: config.clientId,
|
|
27
|
+
authorizationParams: {
|
|
28
|
+
redirect_uri: config.redirectUri,
|
|
29
|
+
audience: config.audience,
|
|
30
|
+
scope: config.scope,
|
|
31
|
+
},
|
|
32
|
+
cacheLocation: 'memory',
|
|
33
|
+
useRefreshTokens: true,
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
return auth0Client;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Login with Auth0 using redirect
|
|
41
|
+
*/
|
|
42
|
+
export const loginWithAuth0Redirect = async () => {
|
|
43
|
+
const client = await getAuth0Client();
|
|
44
|
+
|
|
45
|
+
await client.loginWithRedirect({
|
|
46
|
+
authorizationParams: {
|
|
47
|
+
redirect_uri: getAuth0Config().redirectUri,
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Login with Auth0 using popup
|
|
54
|
+
* Returns both ID token and access token
|
|
55
|
+
*/
|
|
56
|
+
export const loginWithAuth0Popup = async (): Promise<{ idToken: string; accessToken: string }> => {
|
|
57
|
+
const client = await getAuth0Client();
|
|
58
|
+
|
|
59
|
+
await client.loginWithPopup();
|
|
60
|
+
|
|
61
|
+
// Get the ID token
|
|
62
|
+
const idTokenClaims = await client.getIdTokenClaims();
|
|
63
|
+
if (!idTokenClaims?.__raw) {
|
|
64
|
+
throw new Error('Failed to get Auth0 ID token');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Get the access token
|
|
68
|
+
const accessToken = await client.getTokenSilently();
|
|
69
|
+
|
|
70
|
+
return {
|
|
71
|
+
idToken: idTokenClaims.__raw,
|
|
72
|
+
accessToken: accessToken,
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Handle Auth0 redirect callback
|
|
78
|
+
* Call this on your callback page
|
|
79
|
+
* Returns both ID token and access token
|
|
80
|
+
*/
|
|
81
|
+
export const handleAuth0Callback = async (): Promise<{ idToken: string; accessToken: string }> => {
|
|
82
|
+
const client = await getAuth0Client();
|
|
83
|
+
|
|
84
|
+
// Handle the redirect callback
|
|
85
|
+
await client.handleRedirectCallback();
|
|
86
|
+
|
|
87
|
+
// Get the ID token
|
|
88
|
+
const idTokenClaims = await client.getIdTokenClaims();
|
|
89
|
+
if (!idTokenClaims?.__raw) {
|
|
90
|
+
throw new Error('Failed to get Auth0 ID token after callback');
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Get the access token
|
|
94
|
+
const accessToken = await client.getTokenSilently();
|
|
95
|
+
|
|
96
|
+
return {
|
|
97
|
+
idToken: idTokenClaims.__raw,
|
|
98
|
+
accessToken: accessToken,
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Get current Auth0 user
|
|
104
|
+
*/
|
|
105
|
+
export const getAuth0User = async () => {
|
|
106
|
+
const client = await getAuth0Client();
|
|
107
|
+
return await client.getUser();
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Check if user is authenticated with Auth0
|
|
112
|
+
*/
|
|
113
|
+
export const isAuth0Authenticated = async (): Promise<boolean> => {
|
|
114
|
+
const client = await getAuth0Client();
|
|
115
|
+
return await client.isAuthenticated();
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Logout from Auth0
|
|
120
|
+
*/
|
|
121
|
+
export const logoutAuth0 = async () => {
|
|
122
|
+
const client = await getAuth0Client();
|
|
123
|
+
|
|
124
|
+
await client.logout({
|
|
125
|
+
logoutParams: {
|
|
126
|
+
returnTo: window.location.origin,
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Get Auth0 access token
|
|
133
|
+
*/
|
|
134
|
+
export const getAuth0AccessToken = async (): Promise<string> => {
|
|
135
|
+
const client = await getAuth0Client();
|
|
136
|
+
|
|
137
|
+
return await client.getTokenSilently();
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Get Auth0 ID token
|
|
142
|
+
*/
|
|
143
|
+
export const getAuth0IdToken = async (): Promise<string> => {
|
|
144
|
+
const client = await getAuth0Client();
|
|
145
|
+
|
|
146
|
+
const token = await client.getIdTokenClaims();
|
|
147
|
+
|
|
148
|
+
if (!token?.__raw) {
|
|
149
|
+
throw new Error('No Auth0 token available');
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return token.__raw;
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Silently refresh the Auth0 token and update Meteor session
|
|
157
|
+
* This is called automatically when the token is about to expire
|
|
158
|
+
* Returns both ID token and access token
|
|
159
|
+
*/
|
|
160
|
+
export const refreshAuth0Token = async (): Promise<{ idToken: string; accessToken: string }> => {
|
|
161
|
+
const client = await getAuth0Client();
|
|
162
|
+
|
|
163
|
+
// Get a fresh access token silently (using refresh token)
|
|
164
|
+
const accessToken = await client.getTokenSilently({
|
|
165
|
+
cacheMode: 'off', // Force refresh
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
// Get the new ID token
|
|
169
|
+
const idTokenClaims = await client.getIdTokenClaims();
|
|
170
|
+
if (!idTokenClaims?.__raw) {
|
|
171
|
+
throw new Error('Failed to refresh Auth0 ID token');
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
return {
|
|
175
|
+
idToken: idTokenClaims.__raw,
|
|
176
|
+
accessToken: accessToken,
|
|
177
|
+
};
|
|
178
|
+
};
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auth0 Configuration
|
|
3
|
-
*
|
|
4
|
-
* This file contains the Auth0 configuration settings.
|
|
5
|
-
* Set your Auth0 credentials in Meteor settings or environment variables.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Normalize Auth0 domain by removing protocol and trailing slashes
|
|
10
|
-
*/
|
|
11
|
-
const normalizeDomain = (domain) => {
|
|
12
|
-
return domain
|
|
13
|
-
.replace(/^https?:\/\//, '') // Remove http:// or https://
|
|
14
|
-
.replace(/\/$/, ''); // Remove trailing slash
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Get Auth0 configuration from Meteor settings or environment variables
|
|
19
|
-
*/
|
|
20
|
-
export const getAuth0Config = () => {
|
|
21
|
-
if (Meteor.isClient) {
|
|
22
|
-
const settings = Meteor.settings.public?.auth0;
|
|
23
|
-
|
|
24
|
-
if (!settings?.domain || !settings?.clientId) {
|
|
25
|
-
throw new Error(
|
|
26
|
-
'Auth0 configuration missing. Please add auth0 settings to your Meteor settings.json file.'
|
|
27
|
-
);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const normalizedDomain = normalizeDomain(settings.domain);
|
|
31
|
-
|
|
32
|
-
return {
|
|
33
|
-
domain: normalizedDomain,
|
|
34
|
-
clientId: settings.clientId,
|
|
35
|
-
audience: settings.audience || `https://${normalizedDomain}/api/v2/`,
|
|
36
|
-
redirectUri: settings.redirectUri || window.location.origin + '/auth/callback',
|
|
37
|
-
scope: settings.scope || 'openid profile email',
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// Server-side configuration
|
|
42
|
-
const settings = Meteor.settings?.auth0;
|
|
43
|
-
|
|
44
|
-
if (!settings?.domain || !settings?.clientId) {
|
|
45
|
-
throw new Error(
|
|
46
|
-
'Auth0 configuration missing. Please add auth0 settings to your Meteor settings.json file.'
|
|
47
|
-
);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const normalizedDomain = normalizeDomain(settings.domain);
|
|
51
|
-
|
|
52
|
-
return {
|
|
53
|
-
domain: normalizedDomain,
|
|
54
|
-
clientId: settings.clientId,
|
|
55
|
-
audience: settings.audience || `https://${normalizedDomain}/api/v2/`,
|
|
56
|
-
redirectUri: settings.redirectUri || Meteor.absoluteUrl('auth/callback'),
|
|
57
|
-
scope: settings.scope || 'openid profile email',
|
|
58
|
-
};
|
|
59
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* Auth0 Configuration
|
|
3
|
+
*
|
|
4
|
+
* This file contains the Auth0 configuration settings.
|
|
5
|
+
* Set your Auth0 credentials in Meteor settings or environment variables.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Normalize Auth0 domain by removing protocol and trailing slashes
|
|
10
|
+
*/
|
|
11
|
+
const normalizeDomain = (domain) => {
|
|
12
|
+
return domain
|
|
13
|
+
.replace(/^https?:\/\//, '') // Remove http:// or https://
|
|
14
|
+
.replace(/\/$/, ''); // Remove trailing slash
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Get Auth0 configuration from Meteor settings or environment variables
|
|
19
|
+
*/
|
|
20
|
+
export const getAuth0Config = () => {
|
|
21
|
+
if (Meteor.isClient) {
|
|
22
|
+
const settings = Meteor.settings.public?.auth0;
|
|
23
|
+
|
|
24
|
+
if (!settings?.domain || !settings?.clientId) {
|
|
25
|
+
throw new Error(
|
|
26
|
+
'Auth0 configuration missing. Please add auth0 settings to your Meteor settings.json file.'
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const normalizedDomain = normalizeDomain(settings.domain);
|
|
31
|
+
|
|
32
|
+
return {
|
|
33
|
+
domain: normalizedDomain,
|
|
34
|
+
clientId: settings.clientId,
|
|
35
|
+
audience: settings.audience || `https://${normalizedDomain}/api/v2/`,
|
|
36
|
+
redirectUri: settings.redirectUri || window.location.origin + '/auth/callback',
|
|
37
|
+
scope: settings.scope || 'openid profile email',
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Server-side configuration
|
|
42
|
+
const settings = Meteor.settings?.auth0;
|
|
43
|
+
|
|
44
|
+
if (!settings?.domain || !settings?.clientId) {
|
|
45
|
+
throw new Error(
|
|
46
|
+
'Auth0 configuration missing. Please add auth0 settings to your Meteor settings.json file.'
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const normalizedDomain = normalizeDomain(settings.domain);
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
domain: normalizedDomain,
|
|
54
|
+
clientId: settings.clientId,
|
|
55
|
+
audience: settings.audience || `https://${normalizedDomain}/api/v2/`,
|
|
56
|
+
redirectUri: settings.redirectUri || Meteor.absoluteUrl('auth/callback'),
|
|
57
|
+
scope: settings.scope || 'openid profile email',
|
|
58
|
+
};
|
|
59
|
+
};
|
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auth0 Configuration
|
|
3
|
-
*
|
|
4
|
-
* This file contains the Auth0 configuration settings.
|
|
5
|
-
* Set your Auth0 credentials in Meteor settings or environment variables.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
export interface Auth0Config {
|
|
9
|
-
domain: string;
|
|
10
|
-
clientId: string;
|
|
11
|
-
audience?: string;
|
|
12
|
-
redirectUri: string;
|
|
13
|
-
scope: string;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Normalize Auth0 domain by removing protocol and trailing slashes
|
|
18
|
-
*/
|
|
19
|
-
const normalizeDomain = (domain: string): string => {
|
|
20
|
-
return domain
|
|
21
|
-
.replace(/^https?:\/\//, '') // Remove http:// or https://
|
|
22
|
-
.replace(/\/$/, ''); // Remove trailing slash
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Get Auth0 configuration from Meteor settings or environment variables
|
|
27
|
-
*/
|
|
28
|
-
export const getAuth0Config = (): Auth0Config => {
|
|
29
|
-
if (Meteor.isClient) {
|
|
30
|
-
const settings = Meteor.settings.public?.auth0;
|
|
31
|
-
|
|
32
|
-
if (!settings?.domain || !settings?.clientId) {
|
|
33
|
-
throw new Error(
|
|
34
|
-
'Auth0 configuration missing. Please add auth0 settings to your Meteor settings.json file.'
|
|
35
|
-
);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const normalizedDomain = normalizeDomain(settings.domain);
|
|
39
|
-
|
|
40
|
-
return {
|
|
41
|
-
domain: normalizedDomain,
|
|
42
|
-
clientId: settings.clientId,
|
|
43
|
-
audience: settings.audience || `https://${normalizedDomain}/api/v2/`,
|
|
44
|
-
redirectUri: settings.redirectUri || window.location.origin + '/auth/callback',
|
|
45
|
-
scope: settings.scope || 'openid profile email',
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Server-side configuration
|
|
50
|
-
const settings = Meteor.settings?.auth0;
|
|
51
|
-
|
|
52
|
-
if (!settings?.domain || !settings?.clientId) {
|
|
53
|
-
throw new Error(
|
|
54
|
-
'Auth0 configuration missing. Please add auth0 settings to your Meteor settings.json file.'
|
|
55
|
-
);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const normalizedDomain = normalizeDomain(settings.domain);
|
|
59
|
-
|
|
60
|
-
return {
|
|
61
|
-
domain: normalizedDomain,
|
|
62
|
-
clientId: settings.clientId,
|
|
63
|
-
audience: settings.audience || `https://${normalizedDomain}/api/v2/`,
|
|
64
|
-
redirectUri: settings.redirectUri || Meteor.absoluteUrl('auth/callback'),
|
|
65
|
-
scope: settings.scope || 'openid profile email',
|
|
66
|
-
};
|
|
67
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* Auth0 Configuration
|
|
3
|
+
*
|
|
4
|
+
* This file contains the Auth0 configuration settings.
|
|
5
|
+
* Set your Auth0 credentials in Meteor settings or environment variables.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export interface Auth0Config {
|
|
9
|
+
domain: string;
|
|
10
|
+
clientId: string;
|
|
11
|
+
audience?: string;
|
|
12
|
+
redirectUri: string;
|
|
13
|
+
scope: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Normalize Auth0 domain by removing protocol and trailing slashes
|
|
18
|
+
*/
|
|
19
|
+
const normalizeDomain = (domain: string): string => {
|
|
20
|
+
return domain
|
|
21
|
+
.replace(/^https?:\/\//, '') // Remove http:// or https://
|
|
22
|
+
.replace(/\/$/, ''); // Remove trailing slash
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Get Auth0 configuration from Meteor settings or environment variables
|
|
27
|
+
*/
|
|
28
|
+
export const getAuth0Config = (): Auth0Config => {
|
|
29
|
+
if (Meteor.isClient) {
|
|
30
|
+
const settings = Meteor.settings.public?.auth0;
|
|
31
|
+
|
|
32
|
+
if (!settings?.domain || !settings?.clientId) {
|
|
33
|
+
throw new Error(
|
|
34
|
+
'Auth0 configuration missing. Please add auth0 settings to your Meteor settings.json file.'
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const normalizedDomain = normalizeDomain(settings.domain);
|
|
39
|
+
|
|
40
|
+
return {
|
|
41
|
+
domain: normalizedDomain,
|
|
42
|
+
clientId: settings.clientId,
|
|
43
|
+
audience: settings.audience || `https://${normalizedDomain}/api/v2/`,
|
|
44
|
+
redirectUri: settings.redirectUri || window.location.origin + '/auth/callback',
|
|
45
|
+
scope: settings.scope || 'openid profile email',
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Server-side configuration
|
|
50
|
+
const settings = Meteor.settings?.auth0;
|
|
51
|
+
|
|
52
|
+
if (!settings?.domain || !settings?.clientId) {
|
|
53
|
+
throw new Error(
|
|
54
|
+
'Auth0 configuration missing. Please add auth0 settings to your Meteor settings.json file.'
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const normalizedDomain = normalizeDomain(settings.domain);
|
|
59
|
+
|
|
60
|
+
return {
|
|
61
|
+
domain: normalizedDomain,
|
|
62
|
+
clientId: settings.clientId,
|
|
63
|
+
audience: settings.audience || `https://${normalizedDomain}/api/v2/`,
|
|
64
|
+
redirectUri: settings.redirectUri || Meteor.absoluteUrl('auth/callback'),
|
|
65
|
+
scope: settings.scope || 'openid profile email',
|
|
66
|
+
};
|
|
67
|
+
};
|