@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,71 +1,71 @@
|
|
|
1
|
-
import React, { useEffect, useState } from 'react';
|
|
2
|
-
import { useNavigate } from 'react-router-dom';
|
|
3
|
-
import { Box, CircularProgress, Typography, Alert } from '@mui/material';
|
|
4
|
-
import AuthService from '<%= authServicePath %>';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Auth0 Callback Component
|
|
8
|
-
*
|
|
9
|
-
* This component handles the OAuth callback from Auth0.
|
|
10
|
-
* It exchanges the authorization code for tokens and logs the user into Meteor.
|
|
11
|
-
*/
|
|
12
|
-
export const AuthCallback = () => {
|
|
13
|
-
const navigate = useNavigate();
|
|
14
|
-
const [error, setError] = useState<string | null>(null);
|
|
15
|
-
|
|
16
|
-
useEffect(() => {
|
|
17
|
-
const handleCallback = async () => {
|
|
18
|
-
try {
|
|
19
|
-
// Handle the Auth0 callback and login to Meteor
|
|
20
|
-
await AuthService.handleAuth0Callback();
|
|
21
|
-
|
|
22
|
-
// Redirect to home page after successful login
|
|
23
|
-
navigate('/', { replace: true });
|
|
24
|
-
} catch (err) {
|
|
25
|
-
console.error('Auth0 callback error:', err);
|
|
26
|
-
setError(err instanceof Error ? err.message : 'Authentication failed');
|
|
27
|
-
|
|
28
|
-
// Redirect to login page after a delay
|
|
29
|
-
setTimeout(() => {
|
|
30
|
-
navigate('/login', { replace: true });
|
|
31
|
-
}, 3000);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
handleCallback();
|
|
36
|
-
}, [navigate]);
|
|
37
|
-
|
|
38
|
-
return (
|
|
39
|
-
<Box
|
|
40
|
-
sx={{
|
|
41
|
-
display: 'flex',
|
|
42
|
-
flexDirection: 'column',
|
|
43
|
-
alignItems: 'center',
|
|
44
|
-
justifyContent: 'center',
|
|
45
|
-
minHeight: '100vh',
|
|
46
|
-
gap: 2,
|
|
47
|
-
}}
|
|
48
|
-
>
|
|
49
|
-
{error ? (
|
|
50
|
-
<>
|
|
51
|
-
<Alert severity="error" sx={{ maxWidth: 600 }}>
|
|
52
|
-
{error}
|
|
53
|
-
</Alert>
|
|
54
|
-
<Typography variant="body2" color="text.secondary">
|
|
55
|
-
Redirecting to login page...
|
|
56
|
-
</Typography>
|
|
57
|
-
</>
|
|
58
|
-
) : (
|
|
59
|
-
<>
|
|
60
|
-
<CircularProgress size={60} />
|
|
61
|
-
<Typography variant="h6" sx={{ mt: 2 }}>
|
|
62
|
-
Completing authentication...
|
|
63
|
-
</Typography>
|
|
64
|
-
<Typography variant="body2" color="text.secondary">
|
|
65
|
-
Please wait while we log you in.
|
|
66
|
-
</Typography>
|
|
67
|
-
</>
|
|
68
|
-
)}
|
|
69
|
-
</Box>
|
|
70
|
-
);
|
|
71
|
-
};
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
import { useNavigate } from 'react-router-dom';
|
|
3
|
+
import { Box, CircularProgress, Typography, Alert } from '@mui/material';
|
|
4
|
+
import AuthService from '<%= authServicePath %>';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Auth0 Callback Component
|
|
8
|
+
*
|
|
9
|
+
* This component handles the OAuth callback from Auth0.
|
|
10
|
+
* It exchanges the authorization code for tokens and logs the user into Meteor.
|
|
11
|
+
*/
|
|
12
|
+
export const AuthCallback = () => {
|
|
13
|
+
const navigate = useNavigate();
|
|
14
|
+
const [error, setError] = useState<string | null>(null);
|
|
15
|
+
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
const handleCallback = async () => {
|
|
18
|
+
try {
|
|
19
|
+
// Handle the Auth0 callback and login to Meteor
|
|
20
|
+
await AuthService.handleAuth0Callback();
|
|
21
|
+
|
|
22
|
+
// Redirect to home page after successful login
|
|
23
|
+
navigate('/', { replace: true });
|
|
24
|
+
} catch (err) {
|
|
25
|
+
console.error('Auth0 callback error:', err);
|
|
26
|
+
setError(err instanceof Error ? err.message : 'Authentication failed');
|
|
27
|
+
|
|
28
|
+
// Redirect to login page after a delay
|
|
29
|
+
setTimeout(() => {
|
|
30
|
+
navigate('/login', { replace: true });
|
|
31
|
+
}, 3000);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
handleCallback();
|
|
36
|
+
}, [navigate]);
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<Box
|
|
40
|
+
sx={{
|
|
41
|
+
display: 'flex',
|
|
42
|
+
flexDirection: 'column',
|
|
43
|
+
alignItems: 'center',
|
|
44
|
+
justifyContent: 'center',
|
|
45
|
+
minHeight: '100vh',
|
|
46
|
+
gap: 2,
|
|
47
|
+
}}
|
|
48
|
+
>
|
|
49
|
+
{error ? (
|
|
50
|
+
<>
|
|
51
|
+
<Alert severity="error" sx={{ maxWidth: 600 }}>
|
|
52
|
+
{error}
|
|
53
|
+
</Alert>
|
|
54
|
+
<Typography variant="body2" color="text.secondary">
|
|
55
|
+
Redirecting to login page...
|
|
56
|
+
</Typography>
|
|
57
|
+
</>
|
|
58
|
+
) : (
|
|
59
|
+
<>
|
|
60
|
+
<CircularProgress size={60} />
|
|
61
|
+
<Typography variant="h6" sx={{ mt: 2 }}>
|
|
62
|
+
Completing authentication...
|
|
63
|
+
</Typography>
|
|
64
|
+
<Typography variant="body2" color="text.secondary">
|
|
65
|
+
Please wait while we log you in.
|
|
66
|
+
</Typography>
|
|
67
|
+
</>
|
|
68
|
+
)}
|
|
69
|
+
</Box>
|
|
70
|
+
);
|
|
71
|
+
};
|
|
@@ -1,123 +1,123 @@
|
|
|
1
|
-
import React, { useContext, useState } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
Box,
|
|
4
|
-
Card,
|
|
5
|
-
CardContent,
|
|
6
|
-
Typography,
|
|
7
|
-
Button,
|
|
8
|
-
Alert,
|
|
9
|
-
CircularProgress,
|
|
10
|
-
} from '@mui/material';
|
|
11
|
-
import { Meteor } from 'meteor/meteor';
|
|
12
|
-
import { AuthContext } from '<%= authContextPath %>';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Auth0 Account Settings Component
|
|
16
|
-
*
|
|
17
|
-
* Displays Auth0 account status and allows linking/unlinking
|
|
18
|
-
* Auth0 account to/from the current Meteor user.
|
|
19
|
-
*/
|
|
20
|
-
export const Auth0AccountSettings = () => {
|
|
21
|
-
const auth = useContext(AuthContext);
|
|
22
|
-
const [loading, setLoading] = useState(false);
|
|
23
|
-
const [message, setMessage] = useState(null);
|
|
24
|
-
|
|
25
|
-
if (!auth?.currentUser) {
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const user = Meteor.user();
|
|
30
|
-
const hasAuth0Account = Boolean(user?.services?.auth0);
|
|
31
|
-
|
|
32
|
-
const handleLinkAccount = async () => {
|
|
33
|
-
setLoading(true);
|
|
34
|
-
setMessage(null);
|
|
35
|
-
|
|
36
|
-
try {
|
|
37
|
-
const success = await auth.linkAuth0Account?.();
|
|
38
|
-
if (success) {
|
|
39
|
-
setMessage({ type: 'success', text: 'Auth0 account linked successfully!' });
|
|
40
|
-
}
|
|
41
|
-
} catch (error) {
|
|
42
|
-
setMessage({
|
|
43
|
-
type: 'error',
|
|
44
|
-
text: error instanceof Error ? error.message : 'Failed to link Auth0 account',
|
|
45
|
-
});
|
|
46
|
-
} finally {
|
|
47
|
-
setLoading(false);
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
const handleUnlinkAccount = async () => {
|
|
52
|
-
setLoading(true);
|
|
53
|
-
setMessage(null);
|
|
54
|
-
|
|
55
|
-
try {
|
|
56
|
-
const success = await auth.unlinkAuth0Account?.();
|
|
57
|
-
if (success) {
|
|
58
|
-
setMessage({ type: 'success', text: 'Auth0 account unlinked successfully!' });
|
|
59
|
-
}
|
|
60
|
-
} catch (error) {
|
|
61
|
-
setMessage({
|
|
62
|
-
type: 'error',
|
|
63
|
-
text: error instanceof Error ? error.message : 'Failed to unlink Auth0 account',
|
|
64
|
-
});
|
|
65
|
-
} finally {
|
|
66
|
-
setLoading(false);
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
return (
|
|
71
|
-
<Card>
|
|
72
|
-
<CardContent>
|
|
73
|
-
<Typography variant="h6" gutterBottom>
|
|
74
|
-
Auth0 Integration
|
|
75
|
-
</Typography>
|
|
76
|
-
|
|
77
|
-
{message && (
|
|
78
|
-
<Alert severity={message.type} sx={{ mb: 2 }}>
|
|
79
|
-
{message.text}
|
|
80
|
-
</Alert>
|
|
81
|
-
)}
|
|
82
|
-
|
|
83
|
-
{hasAuth0Account ? (
|
|
84
|
-
<Box>
|
|
85
|
-
<Alert severity="success" sx={{ mb: 2 }}>
|
|
86
|
-
Your account is linked with Auth0
|
|
87
|
-
</Alert>
|
|
88
|
-
<Typography variant="body2" color="text.secondary" gutterBottom>
|
|
89
|
-
Email: {user?.services?.auth0?.email || 'N/A'}
|
|
90
|
-
</Typography>
|
|
91
|
-
<Typography variant="body2" color="text.secondary" gutterBottom>
|
|
92
|
-
Name: {user?.services?.auth0?.name || 'N/A'}
|
|
93
|
-
</Typography>
|
|
94
|
-
<Button
|
|
95
|
-
variant="outlined"
|
|
96
|
-
color="error"
|
|
97
|
-
onClick={handleUnlinkAccount}
|
|
98
|
-
disabled={loading}
|
|
99
|
-
sx={{ mt: 2 }}
|
|
100
|
-
startIcon={loading ? <CircularProgress size={20} /> : undefined}
|
|
101
|
-
>
|
|
102
|
-
{loading ? 'Unlinking...' : 'Unlink Auth0 Account'}
|
|
103
|
-
</Button>
|
|
104
|
-
</Box>
|
|
105
|
-
) : (
|
|
106
|
-
<Box>
|
|
107
|
-
<Alert severity="info" sx={{ mb: 2 }}>
|
|
108
|
-
Link your account with Auth0 for easier login
|
|
109
|
-
</Alert>
|
|
110
|
-
<Button
|
|
111
|
-
variant="contained"
|
|
112
|
-
onClick={handleLinkAccount}
|
|
113
|
-
disabled={loading}
|
|
114
|
-
startIcon={loading ? <CircularProgress size={20} /> : undefined}
|
|
115
|
-
>
|
|
116
|
-
{loading ? 'Linking...' : 'Link Auth0 Account'}
|
|
117
|
-
</Button>
|
|
118
|
-
</Box>
|
|
119
|
-
)}
|
|
120
|
-
</CardContent>
|
|
121
|
-
</Card>
|
|
122
|
-
);
|
|
123
|
-
};
|
|
1
|
+
import React, { useContext, useState } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Box,
|
|
4
|
+
Card,
|
|
5
|
+
CardContent,
|
|
6
|
+
Typography,
|
|
7
|
+
Button,
|
|
8
|
+
Alert,
|
|
9
|
+
CircularProgress,
|
|
10
|
+
} from '@mui/material';
|
|
11
|
+
import { Meteor } from 'meteor/meteor';
|
|
12
|
+
import { AuthContext } from '<%= authContextPath %>';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Auth0 Account Settings Component
|
|
16
|
+
*
|
|
17
|
+
* Displays Auth0 account status and allows linking/unlinking
|
|
18
|
+
* Auth0 account to/from the current Meteor user.
|
|
19
|
+
*/
|
|
20
|
+
export const Auth0AccountSettings = () => {
|
|
21
|
+
const auth = useContext(AuthContext);
|
|
22
|
+
const [loading, setLoading] = useState(false);
|
|
23
|
+
const [message, setMessage] = useState(null);
|
|
24
|
+
|
|
25
|
+
if (!auth?.currentUser) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const user = Meteor.user();
|
|
30
|
+
const hasAuth0Account = Boolean(user?.services?.auth0);
|
|
31
|
+
|
|
32
|
+
const handleLinkAccount = async () => {
|
|
33
|
+
setLoading(true);
|
|
34
|
+
setMessage(null);
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
const success = await auth.linkAuth0Account?.();
|
|
38
|
+
if (success) {
|
|
39
|
+
setMessage({ type: 'success', text: 'Auth0 account linked successfully!' });
|
|
40
|
+
}
|
|
41
|
+
} catch (error) {
|
|
42
|
+
setMessage({
|
|
43
|
+
type: 'error',
|
|
44
|
+
text: error instanceof Error ? error.message : 'Failed to link Auth0 account',
|
|
45
|
+
});
|
|
46
|
+
} finally {
|
|
47
|
+
setLoading(false);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const handleUnlinkAccount = async () => {
|
|
52
|
+
setLoading(true);
|
|
53
|
+
setMessage(null);
|
|
54
|
+
|
|
55
|
+
try {
|
|
56
|
+
const success = await auth.unlinkAuth0Account?.();
|
|
57
|
+
if (success) {
|
|
58
|
+
setMessage({ type: 'success', text: 'Auth0 account unlinked successfully!' });
|
|
59
|
+
}
|
|
60
|
+
} catch (error) {
|
|
61
|
+
setMessage({
|
|
62
|
+
type: 'error',
|
|
63
|
+
text: error instanceof Error ? error.message : 'Failed to unlink Auth0 account',
|
|
64
|
+
});
|
|
65
|
+
} finally {
|
|
66
|
+
setLoading(false);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
return (
|
|
71
|
+
<Card>
|
|
72
|
+
<CardContent>
|
|
73
|
+
<Typography variant="h6" gutterBottom>
|
|
74
|
+
Auth0 Integration
|
|
75
|
+
</Typography>
|
|
76
|
+
|
|
77
|
+
{message && (
|
|
78
|
+
<Alert severity={message.type} sx={{ mb: 2 }}>
|
|
79
|
+
{message.text}
|
|
80
|
+
</Alert>
|
|
81
|
+
)}
|
|
82
|
+
|
|
83
|
+
{hasAuth0Account ? (
|
|
84
|
+
<Box>
|
|
85
|
+
<Alert severity="success" sx={{ mb: 2 }}>
|
|
86
|
+
Your account is linked with Auth0
|
|
87
|
+
</Alert>
|
|
88
|
+
<Typography variant="body2" color="text.secondary" gutterBottom>
|
|
89
|
+
Email: {user?.services?.auth0?.email || 'N/A'}
|
|
90
|
+
</Typography>
|
|
91
|
+
<Typography variant="body2" color="text.secondary" gutterBottom>
|
|
92
|
+
Name: {user?.services?.auth0?.name || 'N/A'}
|
|
93
|
+
</Typography>
|
|
94
|
+
<Button
|
|
95
|
+
variant="outlined"
|
|
96
|
+
color="error"
|
|
97
|
+
onClick={handleUnlinkAccount}
|
|
98
|
+
disabled={loading}
|
|
99
|
+
sx={{ mt: 2 }}
|
|
100
|
+
startIcon={loading ? <CircularProgress size={20} /> : undefined}
|
|
101
|
+
>
|
|
102
|
+
{loading ? 'Unlinking...' : 'Unlink Auth0 Account'}
|
|
103
|
+
</Button>
|
|
104
|
+
</Box>
|
|
105
|
+
) : (
|
|
106
|
+
<Box>
|
|
107
|
+
<Alert severity="info" sx={{ mb: 2 }}>
|
|
108
|
+
Link your account with Auth0 for easier login
|
|
109
|
+
</Alert>
|
|
110
|
+
<Button
|
|
111
|
+
variant="contained"
|
|
112
|
+
onClick={handleLinkAccount}
|
|
113
|
+
disabled={loading}
|
|
114
|
+
startIcon={loading ? <CircularProgress size={20} /> : undefined}
|
|
115
|
+
>
|
|
116
|
+
{loading ? 'Linking...' : 'Link Auth0 Account'}
|
|
117
|
+
</Button>
|
|
118
|
+
</Box>
|
|
119
|
+
)}
|
|
120
|
+
</CardContent>
|
|
121
|
+
</Card>
|
|
122
|
+
);
|
|
123
|
+
};
|
|
@@ -1,123 +1,123 @@
|
|
|
1
|
-
import React, { useContext, useState } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
Box,
|
|
4
|
-
Card,
|
|
5
|
-
CardContent,
|
|
6
|
-
Typography,
|
|
7
|
-
Button,
|
|
8
|
-
Alert,
|
|
9
|
-
CircularProgress,
|
|
10
|
-
} from '@mui/material';
|
|
11
|
-
import { Meteor } from 'meteor/meteor';
|
|
12
|
-
import { AuthContext } from '<%= authContextPath %>';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Auth0 Account Settings Component
|
|
16
|
-
*
|
|
17
|
-
* Displays Auth0 account status and allows linking/unlinking
|
|
18
|
-
* Auth0 account to/from the current Meteor user.
|
|
19
|
-
*/
|
|
20
|
-
export const Auth0AccountSettings: React.FC = () => {
|
|
21
|
-
const auth = useContext(AuthContext);
|
|
22
|
-
const [loading, setLoading] = useState(false);
|
|
23
|
-
const [message, setMessage] = useState<{ type: 'success' | 'error'; text: string } | null>(null);
|
|
24
|
-
|
|
25
|
-
if (!auth?.currentUser) {
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const user = Meteor.user();
|
|
30
|
-
const hasAuth0Account = Boolean(user?.services?.auth0);
|
|
31
|
-
|
|
32
|
-
const handleLinkAccount = async () => {
|
|
33
|
-
setLoading(true);
|
|
34
|
-
setMessage(null);
|
|
35
|
-
|
|
36
|
-
try {
|
|
37
|
-
const success = await auth.linkAuth0Account?.();
|
|
38
|
-
if (success) {
|
|
39
|
-
setMessage({ type: 'success', text: 'Auth0 account linked successfully!' });
|
|
40
|
-
}
|
|
41
|
-
} catch (error) {
|
|
42
|
-
setMessage({
|
|
43
|
-
type: 'error',
|
|
44
|
-
text: error instanceof Error ? error.message : 'Failed to link Auth0 account',
|
|
45
|
-
});
|
|
46
|
-
} finally {
|
|
47
|
-
setLoading(false);
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
const handleUnlinkAccount = async () => {
|
|
52
|
-
setLoading(true);
|
|
53
|
-
setMessage(null);
|
|
54
|
-
|
|
55
|
-
try {
|
|
56
|
-
const success = await auth.unlinkAuth0Account?.();
|
|
57
|
-
if (success) {
|
|
58
|
-
setMessage({ type: 'success', text: 'Auth0 account unlinked successfully!' });
|
|
59
|
-
}
|
|
60
|
-
} catch (error) {
|
|
61
|
-
setMessage({
|
|
62
|
-
type: 'error',
|
|
63
|
-
text: error instanceof Error ? error.message : 'Failed to unlink Auth0 account',
|
|
64
|
-
});
|
|
65
|
-
} finally {
|
|
66
|
-
setLoading(false);
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
return (
|
|
71
|
-
<Card>
|
|
72
|
-
<CardContent>
|
|
73
|
-
<Typography variant="h6" gutterBottom>
|
|
74
|
-
Auth0 Integration
|
|
75
|
-
</Typography>
|
|
76
|
-
|
|
77
|
-
{message && (
|
|
78
|
-
<Alert severity={message.type} sx={{ mb: 2 }}>
|
|
79
|
-
{message.text}
|
|
80
|
-
</Alert>
|
|
81
|
-
)}
|
|
82
|
-
|
|
83
|
-
{hasAuth0Account ? (
|
|
84
|
-
<Box>
|
|
85
|
-
<Alert severity="success" sx={{ mb: 2 }}>
|
|
86
|
-
Your account is linked with Auth0
|
|
87
|
-
</Alert>
|
|
88
|
-
<Typography variant="body2" color="text.secondary" gutterBottom>
|
|
89
|
-
Email: {user?.services?.auth0?.email || 'N/A'}
|
|
90
|
-
</Typography>
|
|
91
|
-
<Typography variant="body2" color="text.secondary" gutterBottom>
|
|
92
|
-
Name: {user?.services?.auth0?.name || 'N/A'}
|
|
93
|
-
</Typography>
|
|
94
|
-
<Button
|
|
95
|
-
variant="outlined"
|
|
96
|
-
color="error"
|
|
97
|
-
onClick={handleUnlinkAccount}
|
|
98
|
-
disabled={loading}
|
|
99
|
-
sx={{ mt: 2 }}
|
|
100
|
-
startIcon={loading ? <CircularProgress size={20} /> : undefined}
|
|
101
|
-
>
|
|
102
|
-
{loading ? 'Unlinking...' : 'Unlink Auth0 Account'}
|
|
103
|
-
</Button>
|
|
104
|
-
</Box>
|
|
105
|
-
) : (
|
|
106
|
-
<Box>
|
|
107
|
-
<Alert severity="info" sx={{ mb: 2 }}>
|
|
108
|
-
Link your account with Auth0 for easier login
|
|
109
|
-
</Alert>
|
|
110
|
-
<Button
|
|
111
|
-
variant="contained"
|
|
112
|
-
onClick={handleLinkAccount}
|
|
113
|
-
disabled={loading}
|
|
114
|
-
startIcon={loading ? <CircularProgress size={20} /> : undefined}
|
|
115
|
-
>
|
|
116
|
-
{loading ? 'Linking...' : 'Link Auth0 Account'}
|
|
117
|
-
</Button>
|
|
118
|
-
</Box>
|
|
119
|
-
)}
|
|
120
|
-
</CardContent>
|
|
121
|
-
</Card>
|
|
122
|
-
);
|
|
123
|
-
};
|
|
1
|
+
import React, { useContext, useState } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Box,
|
|
4
|
+
Card,
|
|
5
|
+
CardContent,
|
|
6
|
+
Typography,
|
|
7
|
+
Button,
|
|
8
|
+
Alert,
|
|
9
|
+
CircularProgress,
|
|
10
|
+
} from '@mui/material';
|
|
11
|
+
import { Meteor } from 'meteor/meteor';
|
|
12
|
+
import { AuthContext } from '<%= authContextPath %>';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Auth0 Account Settings Component
|
|
16
|
+
*
|
|
17
|
+
* Displays Auth0 account status and allows linking/unlinking
|
|
18
|
+
* Auth0 account to/from the current Meteor user.
|
|
19
|
+
*/
|
|
20
|
+
export const Auth0AccountSettings: React.FC = () => {
|
|
21
|
+
const auth = useContext(AuthContext);
|
|
22
|
+
const [loading, setLoading] = useState(false);
|
|
23
|
+
const [message, setMessage] = useState<{ type: 'success' | 'error'; text: string } | null>(null);
|
|
24
|
+
|
|
25
|
+
if (!auth?.currentUser) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const user = Meteor.user();
|
|
30
|
+
const hasAuth0Account = Boolean(user?.services?.auth0);
|
|
31
|
+
|
|
32
|
+
const handleLinkAccount = async () => {
|
|
33
|
+
setLoading(true);
|
|
34
|
+
setMessage(null);
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
const success = await auth.linkAuth0Account?.();
|
|
38
|
+
if (success) {
|
|
39
|
+
setMessage({ type: 'success', text: 'Auth0 account linked successfully!' });
|
|
40
|
+
}
|
|
41
|
+
} catch (error) {
|
|
42
|
+
setMessage({
|
|
43
|
+
type: 'error',
|
|
44
|
+
text: error instanceof Error ? error.message : 'Failed to link Auth0 account',
|
|
45
|
+
});
|
|
46
|
+
} finally {
|
|
47
|
+
setLoading(false);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const handleUnlinkAccount = async () => {
|
|
52
|
+
setLoading(true);
|
|
53
|
+
setMessage(null);
|
|
54
|
+
|
|
55
|
+
try {
|
|
56
|
+
const success = await auth.unlinkAuth0Account?.();
|
|
57
|
+
if (success) {
|
|
58
|
+
setMessage({ type: 'success', text: 'Auth0 account unlinked successfully!' });
|
|
59
|
+
}
|
|
60
|
+
} catch (error) {
|
|
61
|
+
setMessage({
|
|
62
|
+
type: 'error',
|
|
63
|
+
text: error instanceof Error ? error.message : 'Failed to unlink Auth0 account',
|
|
64
|
+
});
|
|
65
|
+
} finally {
|
|
66
|
+
setLoading(false);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
return (
|
|
71
|
+
<Card>
|
|
72
|
+
<CardContent>
|
|
73
|
+
<Typography variant="h6" gutterBottom>
|
|
74
|
+
Auth0 Integration
|
|
75
|
+
</Typography>
|
|
76
|
+
|
|
77
|
+
{message && (
|
|
78
|
+
<Alert severity={message.type} sx={{ mb: 2 }}>
|
|
79
|
+
{message.text}
|
|
80
|
+
</Alert>
|
|
81
|
+
)}
|
|
82
|
+
|
|
83
|
+
{hasAuth0Account ? (
|
|
84
|
+
<Box>
|
|
85
|
+
<Alert severity="success" sx={{ mb: 2 }}>
|
|
86
|
+
Your account is linked with Auth0
|
|
87
|
+
</Alert>
|
|
88
|
+
<Typography variant="body2" color="text.secondary" gutterBottom>
|
|
89
|
+
Email: {user?.services?.auth0?.email || 'N/A'}
|
|
90
|
+
</Typography>
|
|
91
|
+
<Typography variant="body2" color="text.secondary" gutterBottom>
|
|
92
|
+
Name: {user?.services?.auth0?.name || 'N/A'}
|
|
93
|
+
</Typography>
|
|
94
|
+
<Button
|
|
95
|
+
variant="outlined"
|
|
96
|
+
color="error"
|
|
97
|
+
onClick={handleUnlinkAccount}
|
|
98
|
+
disabled={loading}
|
|
99
|
+
sx={{ mt: 2 }}
|
|
100
|
+
startIcon={loading ? <CircularProgress size={20} /> : undefined}
|
|
101
|
+
>
|
|
102
|
+
{loading ? 'Unlinking...' : 'Unlink Auth0 Account'}
|
|
103
|
+
</Button>
|
|
104
|
+
</Box>
|
|
105
|
+
) : (
|
|
106
|
+
<Box>
|
|
107
|
+
<Alert severity="info" sx={{ mb: 2 }}>
|
|
108
|
+
Link your account with Auth0 for easier login
|
|
109
|
+
</Alert>
|
|
110
|
+
<Button
|
|
111
|
+
variant="contained"
|
|
112
|
+
onClick={handleLinkAccount}
|
|
113
|
+
disabled={loading}
|
|
114
|
+
startIcon={loading ? <CircularProgress size={20} /> : undefined}
|
|
115
|
+
>
|
|
116
|
+
{loading ? 'Linking...' : 'Link Auth0 Account'}
|
|
117
|
+
</Button>
|
|
118
|
+
</Box>
|
|
119
|
+
)}
|
|
120
|
+
</CardContent>
|
|
121
|
+
</Card>
|
|
122
|
+
);
|
|
123
|
+
};
|