@maka/maka-cli 5.123.1 → 5.125.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/adept-powers.d.ts +0 -8
- package/bundle/typescript/src/commands/game/sideQuest/adept-powers.js +6 -50
- package/bundle/typescript/src/commands/game/sideQuest/adept-powers.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.js +3 -3
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/augmentations.d.ts +0 -4
- package/bundle/typescript/src/commands/game/sideQuest/augmentations.js +0 -1342
- package/bundle/typescript/src/commands/game/sideQuest/augmentations.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.d.ts +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.js +5 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js +13 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js +5 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.d.ts +0 -38
- package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js +11 -45
- package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/install.js +5 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/install.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/jump.js +10 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/jump.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.d.ts +7 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.js +58 -9
- package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js +10 -7
- package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js +7 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +9 -9
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +12 -8
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sin.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/sin.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/source.js +8 -8
- package/bundle/typescript/src/commands/game/sideQuest/commands/source.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +22 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.d.ts +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +24 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.d.ts +39 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.js +110 -35
- package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +445 -445
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +6 -6
- package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +42 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.js +118 -43
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/metamagics.d.ts +32 -0
- package/bundle/typescript/src/commands/game/sideQuest/metamagics.js +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/metamagics.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/metatypes.d.ts +6 -4
- package/bundle/typescript/src/commands/game/sideQuest/metatypes.js +3 -83
- package/bundle/typescript/src/commands/game/sideQuest/metatypes.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/home-containers.d.ts +36 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/home-containers.js +62 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/home-containers.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +206 -206
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +5 -5
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +10 -14
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js +24 -10
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/qualities.d.ts +3 -7
- package/bundle/typescript/src/commands/game/sideQuest/qualities.js +15 -715
- package/bundle/typescript/src/commands/game/sideQuest/qualities.js.map +1 -1
- 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/spells.d.ts +5 -7
- package/bundle/typescript/src/commands/game/sideQuest/spells.js +5 -63
- package/bundle/typescript/src/commands/game/sideQuest/spells.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +8 -0
- package/bundle/typescript/src/commands/game/sideQuest/ui.js +22 -0
- package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.d.ts +36 -20
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.js +24 -658
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.d.ts +100 -20
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.js +314 -57
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.d.ts +32 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.js +45 -5
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ephemeral.js +14 -14
- package/bundle/typescript/src/commands/game/sideQuest/utilities/owned-drones.d.ts +32 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/owned-drones.js +24 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/owned-drones.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.d.ts +34 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +66 -29
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +28 -2
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
- 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/error.js +1 -1
- package/bundle/typescript/src/error.js.map +1 -1
- 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/tool.d.ts +2 -0
- package/bundle/typescript/src/tool.js +5 -2
- package/bundle/typescript/src/tool.js.map +1 -1
- package/package.json +120 -120
|
@@ -1,199 +1,199 @@
|
|
|
1
|
-
import { Meteor } from 'meteor/meteor';
|
|
2
|
-
import { Accounts } from 'meteor/accounts-base';
|
|
3
|
-
import jwt from 'jsonwebtoken';
|
|
4
|
-
import jwksClient from 'jwks-rsa';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Auth0 JWT Token Validator
|
|
8
|
-
*
|
|
9
|
-
* This module handles server-side validation of Auth0 JWT tokens
|
|
10
|
-
* and creates/updates Meteor user accounts based on Auth0 user data.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
interface Auth0TokenPayload {
|
|
14
|
-
sub: string; // Auth0 user ID
|
|
15
|
-
email?: string;
|
|
16
|
-
email_verified?: boolean;
|
|
17
|
-
name?: string;
|
|
18
|
-
nickname?: string;
|
|
19
|
-
picture?: string;
|
|
20
|
-
aud: string | string[];
|
|
21
|
-
iss: string;
|
|
22
|
-
exp: number;
|
|
23
|
-
iat: number;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Normalize Auth0 domain by removing protocol and trailing slashes
|
|
28
|
-
*/
|
|
29
|
-
const normalizeDomain = (domain: string): string => {
|
|
30
|
-
return domain
|
|
31
|
-
.replace(/^https?:\/\//, '') // Remove http:// or https://
|
|
32
|
-
.replace(/\/$/, ''); // Remove trailing slash
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Create JWKS client for verifying Auth0 tokens
|
|
37
|
-
*/
|
|
38
|
-
const getJwksClient = () => {
|
|
39
|
-
const auth0Domain = Meteor.settings?.auth0?.domain;
|
|
40
|
-
|
|
41
|
-
if (!auth0Domain) {
|
|
42
|
-
throw new Meteor.Error('auth0-config-missing', 'Auth0 domain not configured');
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const normalizedDomain = normalizeDomain(auth0Domain);
|
|
46
|
-
|
|
47
|
-
return jwksClient({
|
|
48
|
-
jwksUri: `https://${normalizedDomain}/.well-known/jwks.json`,
|
|
49
|
-
cache: true,
|
|
50
|
-
cacheMaxAge: 86400000, // 24 hours
|
|
51
|
-
});
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Get signing key for JWT verification
|
|
56
|
-
*/
|
|
57
|
-
const getKey = (header: any, callback: any) => {
|
|
58
|
-
const client = getJwksClient();
|
|
59
|
-
|
|
60
|
-
client.getSigningKey(header.kid, (err, key) => {
|
|
61
|
-
if (err) {
|
|
62
|
-
callback(err);
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
const signingKey = key?.getPublicKey();
|
|
66
|
-
callback(null, signingKey);
|
|
67
|
-
});
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Verify Auth0 JWT token
|
|
72
|
-
*/
|
|
73
|
-
export const verifyAuth0Token = (token: string): Promise<Auth0TokenPayload> => {
|
|
74
|
-
return new Promise((resolve, reject) => {
|
|
75
|
-
const auth0Config = Meteor.settings?.auth0;
|
|
76
|
-
|
|
77
|
-
if (!auth0Config?.domain || !auth0Config?.clientId) {
|
|
78
|
-
reject(new Meteor.Error('auth0-config-missing', 'Auth0 configuration missing'));
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
const normalizedDomain = normalizeDomain(auth0Config.domain);
|
|
83
|
-
|
|
84
|
-
jwt.verify(
|
|
85
|
-
token,
|
|
86
|
-
getKey,
|
|
87
|
-
{
|
|
88
|
-
audience: auth0Config.clientId,
|
|
89
|
-
issuer: `https://${normalizedDomain}/`,
|
|
90
|
-
algorithms: ['RS256'],
|
|
91
|
-
},
|
|
92
|
-
(err, decoded) => {
|
|
93
|
-
if (err) {
|
|
94
|
-
reject(new Meteor.Error('auth0-invalid-token', 'Invalid Auth0 token', err));
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
resolve(decoded as Auth0TokenPayload);
|
|
98
|
-
}
|
|
99
|
-
);
|
|
100
|
-
});
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Find or create a Meteor user from Auth0 data
|
|
105
|
-
*/
|
|
106
|
-
export const findOrCreateUserFromAuth0 = async (
|
|
107
|
-
tokenPayload: Auth0TokenPayload,
|
|
108
|
-
idToken: string,
|
|
109
|
-
accessToken?: string
|
|
110
|
-
): Promise<string> => {
|
|
111
|
-
const auth0Id = tokenPayload.sub;
|
|
112
|
-
const email = tokenPayload.email;
|
|
113
|
-
const now = new Date();
|
|
114
|
-
|
|
115
|
-
// Try to find existing user by Auth0 ID
|
|
116
|
-
let user = await Meteor.users.findOneAsync({
|
|
117
|
-
'services.auth0.id': auth0Id,
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
if (user) {
|
|
121
|
-
// Update user profile and token data
|
|
122
|
-
await Meteor.users.updateAsync(user._id, {
|
|
123
|
-
$set: {
|
|
124
|
-
// Profile data (client-accessible)
|
|
125
|
-
'profile.auth0': {
|
|
126
|
-
name: tokenPayload.name,
|
|
127
|
-
picture: tokenPayload.picture,
|
|
128
|
-
email: email,
|
|
129
|
-
email_verified: tokenPayload.email_verified,
|
|
130
|
-
},
|
|
131
|
-
// Token data (server-only)
|
|
132
|
-
'services.auth0.id': auth0Id,
|
|
133
|
-
'services.auth0.idToken': idToken,
|
|
134
|
-
'services.auth0.accessToken': accessToken,
|
|
135
|
-
'services.auth0.expiresAt': new Date(tokenPayload.exp * 1000),
|
|
136
|
-
'services.auth0.issuedAt': new Date(tokenPayload.iat * 1000),
|
|
137
|
-
},
|
|
138
|
-
});
|
|
139
|
-
return user._id;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
// Try to find by email if email exists
|
|
143
|
-
if (email) {
|
|
144
|
-
user = await Meteor.users.findOneAsync({
|
|
145
|
-
'emails.address': email,
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
if (user) {
|
|
149
|
-
// Link Auth0 account to existing user
|
|
150
|
-
await Meteor.users.updateAsync(user._id, {
|
|
151
|
-
$set: {
|
|
152
|
-
// Profile data (client-accessible)
|
|
153
|
-
'profile.auth0': {
|
|
154
|
-
name: tokenPayload.name,
|
|
155
|
-
picture: tokenPayload.picture,
|
|
156
|
-
email: email,
|
|
157
|
-
email_verified: tokenPayload.email_verified,
|
|
158
|
-
},
|
|
159
|
-
// Token data (server-only)
|
|
160
|
-
'services.auth0': {
|
|
161
|
-
id: auth0Id,
|
|
162
|
-
idToken: idToken,
|
|
163
|
-
accessToken: accessToken,
|
|
164
|
-
expiresAt: new Date(tokenPayload.exp * 1000),
|
|
165
|
-
issuedAt: new Date(tokenPayload.iat * 1000),
|
|
166
|
-
},
|
|
167
|
-
},
|
|
168
|
-
});
|
|
169
|
-
return user._id;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// Create new user
|
|
174
|
-
const userId = Accounts.insertUserDoc({}, {
|
|
175
|
-
emails: email ? [{ address: email, verified: tokenPayload.email_verified || false }] : [],
|
|
176
|
-
profile: {
|
|
177
|
-
name: tokenPayload.name || tokenPayload.nickname || 'Auth0 User',
|
|
178
|
-
// Auth0 profile data (client-accessible)
|
|
179
|
-
auth0: {
|
|
180
|
-
name: tokenPayload.name,
|
|
181
|
-
picture: tokenPayload.picture,
|
|
182
|
-
email: email,
|
|
183
|
-
email_verified: tokenPayload.email_verified,
|
|
184
|
-
},
|
|
185
|
-
},
|
|
186
|
-
services: {
|
|
187
|
-
// Token data (server-only)
|
|
188
|
-
auth0: {
|
|
189
|
-
id: auth0Id,
|
|
190
|
-
idToken: idToken,
|
|
191
|
-
accessToken: accessToken,
|
|
192
|
-
expiresAt: new Date(tokenPayload.exp * 1000),
|
|
193
|
-
issuedAt: new Date(tokenPayload.iat * 1000),
|
|
194
|
-
},
|
|
195
|
-
},
|
|
196
|
-
});
|
|
197
|
-
|
|
198
|
-
return userId;
|
|
199
|
-
};
|
|
1
|
+
import { Meteor } from 'meteor/meteor';
|
|
2
|
+
import { Accounts } from 'meteor/accounts-base';
|
|
3
|
+
import jwt from 'jsonwebtoken';
|
|
4
|
+
import jwksClient from 'jwks-rsa';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Auth0 JWT Token Validator
|
|
8
|
+
*
|
|
9
|
+
* This module handles server-side validation of Auth0 JWT tokens
|
|
10
|
+
* and creates/updates Meteor user accounts based on Auth0 user data.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
interface Auth0TokenPayload {
|
|
14
|
+
sub: string; // Auth0 user ID
|
|
15
|
+
email?: string;
|
|
16
|
+
email_verified?: boolean;
|
|
17
|
+
name?: string;
|
|
18
|
+
nickname?: string;
|
|
19
|
+
picture?: string;
|
|
20
|
+
aud: string | string[];
|
|
21
|
+
iss: string;
|
|
22
|
+
exp: number;
|
|
23
|
+
iat: number;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Normalize Auth0 domain by removing protocol and trailing slashes
|
|
28
|
+
*/
|
|
29
|
+
const normalizeDomain = (domain: string): string => {
|
|
30
|
+
return domain
|
|
31
|
+
.replace(/^https?:\/\//, '') // Remove http:// or https://
|
|
32
|
+
.replace(/\/$/, ''); // Remove trailing slash
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Create JWKS client for verifying Auth0 tokens
|
|
37
|
+
*/
|
|
38
|
+
const getJwksClient = () => {
|
|
39
|
+
const auth0Domain = Meteor.settings?.auth0?.domain;
|
|
40
|
+
|
|
41
|
+
if (!auth0Domain) {
|
|
42
|
+
throw new Meteor.Error('auth0-config-missing', 'Auth0 domain not configured');
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const normalizedDomain = normalizeDomain(auth0Domain);
|
|
46
|
+
|
|
47
|
+
return jwksClient({
|
|
48
|
+
jwksUri: `https://${normalizedDomain}/.well-known/jwks.json`,
|
|
49
|
+
cache: true,
|
|
50
|
+
cacheMaxAge: 86400000, // 24 hours
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Get signing key for JWT verification
|
|
56
|
+
*/
|
|
57
|
+
const getKey = (header: any, callback: any) => {
|
|
58
|
+
const client = getJwksClient();
|
|
59
|
+
|
|
60
|
+
client.getSigningKey(header.kid, (err, key) => {
|
|
61
|
+
if (err) {
|
|
62
|
+
callback(err);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const signingKey = key?.getPublicKey();
|
|
66
|
+
callback(null, signingKey);
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Verify Auth0 JWT token
|
|
72
|
+
*/
|
|
73
|
+
export const verifyAuth0Token = (token: string): Promise<Auth0TokenPayload> => {
|
|
74
|
+
return new Promise((resolve, reject) => {
|
|
75
|
+
const auth0Config = Meteor.settings?.auth0;
|
|
76
|
+
|
|
77
|
+
if (!auth0Config?.domain || !auth0Config?.clientId) {
|
|
78
|
+
reject(new Meteor.Error('auth0-config-missing', 'Auth0 configuration missing'));
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const normalizedDomain = normalizeDomain(auth0Config.domain);
|
|
83
|
+
|
|
84
|
+
jwt.verify(
|
|
85
|
+
token,
|
|
86
|
+
getKey,
|
|
87
|
+
{
|
|
88
|
+
audience: auth0Config.clientId,
|
|
89
|
+
issuer: `https://${normalizedDomain}/`,
|
|
90
|
+
algorithms: ['RS256'],
|
|
91
|
+
},
|
|
92
|
+
(err, decoded) => {
|
|
93
|
+
if (err) {
|
|
94
|
+
reject(new Meteor.Error('auth0-invalid-token', 'Invalid Auth0 token', err));
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
resolve(decoded as Auth0TokenPayload);
|
|
98
|
+
}
|
|
99
|
+
);
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Find or create a Meteor user from Auth0 data
|
|
105
|
+
*/
|
|
106
|
+
export const findOrCreateUserFromAuth0 = async (
|
|
107
|
+
tokenPayload: Auth0TokenPayload,
|
|
108
|
+
idToken: string,
|
|
109
|
+
accessToken?: string
|
|
110
|
+
): Promise<string> => {
|
|
111
|
+
const auth0Id = tokenPayload.sub;
|
|
112
|
+
const email = tokenPayload.email;
|
|
113
|
+
const now = new Date();
|
|
114
|
+
|
|
115
|
+
// Try to find existing user by Auth0 ID
|
|
116
|
+
let user = await Meteor.users.findOneAsync({
|
|
117
|
+
'services.auth0.id': auth0Id,
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
if (user) {
|
|
121
|
+
// Update user profile and token data
|
|
122
|
+
await Meteor.users.updateAsync(user._id, {
|
|
123
|
+
$set: {
|
|
124
|
+
// Profile data (client-accessible)
|
|
125
|
+
'profile.auth0': {
|
|
126
|
+
name: tokenPayload.name,
|
|
127
|
+
picture: tokenPayload.picture,
|
|
128
|
+
email: email,
|
|
129
|
+
email_verified: tokenPayload.email_verified,
|
|
130
|
+
},
|
|
131
|
+
// Token data (server-only)
|
|
132
|
+
'services.auth0.id': auth0Id,
|
|
133
|
+
'services.auth0.idToken': idToken,
|
|
134
|
+
'services.auth0.accessToken': accessToken,
|
|
135
|
+
'services.auth0.expiresAt': new Date(tokenPayload.exp * 1000),
|
|
136
|
+
'services.auth0.issuedAt': new Date(tokenPayload.iat * 1000),
|
|
137
|
+
},
|
|
138
|
+
});
|
|
139
|
+
return user._id;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Try to find by email if email exists
|
|
143
|
+
if (email) {
|
|
144
|
+
user = await Meteor.users.findOneAsync({
|
|
145
|
+
'emails.address': email,
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
if (user) {
|
|
149
|
+
// Link Auth0 account to existing user
|
|
150
|
+
await Meteor.users.updateAsync(user._id, {
|
|
151
|
+
$set: {
|
|
152
|
+
// Profile data (client-accessible)
|
|
153
|
+
'profile.auth0': {
|
|
154
|
+
name: tokenPayload.name,
|
|
155
|
+
picture: tokenPayload.picture,
|
|
156
|
+
email: email,
|
|
157
|
+
email_verified: tokenPayload.email_verified,
|
|
158
|
+
},
|
|
159
|
+
// Token data (server-only)
|
|
160
|
+
'services.auth0': {
|
|
161
|
+
id: auth0Id,
|
|
162
|
+
idToken: idToken,
|
|
163
|
+
accessToken: accessToken,
|
|
164
|
+
expiresAt: new Date(tokenPayload.exp * 1000),
|
|
165
|
+
issuedAt: new Date(tokenPayload.iat * 1000),
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
return user._id;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Create new user
|
|
174
|
+
const userId = Accounts.insertUserDoc({}, {
|
|
175
|
+
emails: email ? [{ address: email, verified: tokenPayload.email_verified || false }] : [],
|
|
176
|
+
profile: {
|
|
177
|
+
name: tokenPayload.name || tokenPayload.nickname || 'Auth0 User',
|
|
178
|
+
// Auth0 profile data (client-accessible)
|
|
179
|
+
auth0: {
|
|
180
|
+
name: tokenPayload.name,
|
|
181
|
+
picture: tokenPayload.picture,
|
|
182
|
+
email: email,
|
|
183
|
+
email_verified: tokenPayload.email_verified,
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
services: {
|
|
187
|
+
// Token data (server-only)
|
|
188
|
+
auth0: {
|
|
189
|
+
id: auth0Id,
|
|
190
|
+
idToken: idToken,
|
|
191
|
+
accessToken: accessToken,
|
|
192
|
+
expiresAt: new Date(tokenPayload.exp * 1000),
|
|
193
|
+
issuedAt: new Date(tokenPayload.iat * 1000),
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
return userId;
|
|
199
|
+
};
|
|
@@ -1,138 +1,138 @@
|
|
|
1
|
-
import { Meteor } from 'meteor/meteor';
|
|
2
|
-
// import { Roles } from 'meteor/alanning:roles';
|
|
3
|
-
import { Accounts } from 'meteor/accounts-base';
|
|
4
|
-
|
|
5
|
-
class AuthService {
|
|
6
|
-
static getUserQuerySelector(username) {
|
|
7
|
-
// if the username is an email address, use the email field
|
|
8
|
-
if (username.indexOf('@') > -1) {
|
|
9
|
-
return { email: username };
|
|
10
|
-
} else {
|
|
11
|
-
return { username };
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
static async authenticateUser(username, password) {
|
|
16
|
-
// Implement Meteor-specific login logic
|
|
17
|
-
try {
|
|
18
|
-
const selector = AuthService.getUserQuerySelector(username);
|
|
19
|
-
return new Promise((resolve, reject) => {
|
|
20
|
-
Meteor.loginWithPassword(selector, password, (error) => {
|
|
21
|
-
if (error) {
|
|
22
|
-
reject(error);
|
|
23
|
-
} else {
|
|
24
|
-
resolve(Meteor.user());
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
} catch (error) {
|
|
30
|
-
console.error('Meteor authentication failed:', error);
|
|
31
|
-
throw error;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
static async authenticateToken() {
|
|
36
|
-
// Implement token validation logic using Meteor
|
|
37
|
-
try {
|
|
38
|
-
return new Promise((resolve, reject) => {
|
|
39
|
-
const token = localStorage.getItem('Meteor.loginToken');
|
|
40
|
-
if (token) {
|
|
41
|
-
Meteor.loginWithToken(token, (error) => {
|
|
42
|
-
if (error) {
|
|
43
|
-
reject(error);
|
|
44
|
-
} else {
|
|
45
|
-
resolve(Meteor.user());
|
|
46
|
-
}
|
|
47
|
-
})
|
|
48
|
-
} else {
|
|
49
|
-
resolve(null);
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
} catch (error) {
|
|
53
|
-
console.error('Token validation failed:', error);
|
|
54
|
-
throw error;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
static async getUserAuthorizations(userId) {
|
|
59
|
-
// Implement logic to fetch user permissions from Meteor
|
|
60
|
-
try {
|
|
61
|
-
return new Promise((resolve) => {
|
|
62
|
-
const roles = [];
|
|
63
|
-
resolve(roles);
|
|
64
|
-
});
|
|
65
|
-
} catch (error) {
|
|
66
|
-
console.error('Failed to fetch user permissions:', error);
|
|
67
|
-
throw error;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
static async deauthenticateUser() {
|
|
72
|
-
// Implement logout logic using Meteor
|
|
73
|
-
try {
|
|
74
|
-
return new Promise((resolve, reject) => {
|
|
75
|
-
Meteor.logout((error) => {
|
|
76
|
-
if (error) {
|
|
77
|
-
reject(error);
|
|
78
|
-
}
|
|
79
|
-
resolve(true);
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
} catch (error) {
|
|
83
|
-
console.error('Logout failed:', error);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
static async registerNewUser(username, password) {
|
|
88
|
-
try {
|
|
89
|
-
const selector = AuthService.getUserQuerySelector(username);
|
|
90
|
-
selector.password = password;
|
|
91
|
-
|
|
92
|
-
// Implement user registration logic using Meteor
|
|
93
|
-
await Accounts.createUserAsync(selector);
|
|
94
|
-
return Meteor.user();
|
|
95
|
-
} catch (error) {
|
|
96
|
-
console.error('Registration failed:', error);
|
|
97
|
-
throw error;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
static async sendForgotPasswordEmail(email) {
|
|
102
|
-
try {
|
|
103
|
-
// Implement password reset logic using Meteor
|
|
104
|
-
return new Promise ((resolve, reject) => {
|
|
105
|
-
Accounts.forgotPassword({ email }, (error) => {
|
|
106
|
-
if (error) {
|
|
107
|
-
reject(error);
|
|
108
|
-
} else {
|
|
109
|
-
resolve();
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
} catch (error) {
|
|
114
|
-
console.error('Password reset failed:', error);
|
|
115
|
-
throw error;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
static async resetPasswordWithToken(token, password) {
|
|
120
|
-
try {
|
|
121
|
-
// Implement password reset logic using Meteor
|
|
122
|
-
return new Promise ((resolve, reject) => {
|
|
123
|
-
Accounts.resetPassword(token, password, (error) => {
|
|
124
|
-
if (error) {
|
|
125
|
-
reject(error);
|
|
126
|
-
} else {
|
|
127
|
-
resolve(Meteor.user());
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
} catch (error) {
|
|
132
|
-
console.error('Password reset failed:', error);
|
|
133
|
-
throw error;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
export default AuthService;
|
|
1
|
+
import { Meteor } from 'meteor/meteor';
|
|
2
|
+
// import { Roles } from 'meteor/alanning:roles';
|
|
3
|
+
import { Accounts } from 'meteor/accounts-base';
|
|
4
|
+
|
|
5
|
+
class AuthService {
|
|
6
|
+
static getUserQuerySelector(username) {
|
|
7
|
+
// if the username is an email address, use the email field
|
|
8
|
+
if (username.indexOf('@') > -1) {
|
|
9
|
+
return { email: username };
|
|
10
|
+
} else {
|
|
11
|
+
return { username };
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
static async authenticateUser(username, password) {
|
|
16
|
+
// Implement Meteor-specific login logic
|
|
17
|
+
try {
|
|
18
|
+
const selector = AuthService.getUserQuerySelector(username);
|
|
19
|
+
return new Promise((resolve, reject) => {
|
|
20
|
+
Meteor.loginWithPassword(selector, password, (error) => {
|
|
21
|
+
if (error) {
|
|
22
|
+
reject(error);
|
|
23
|
+
} else {
|
|
24
|
+
resolve(Meteor.user());
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
} catch (error) {
|
|
30
|
+
console.error('Meteor authentication failed:', error);
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
static async authenticateToken() {
|
|
36
|
+
// Implement token validation logic using Meteor
|
|
37
|
+
try {
|
|
38
|
+
return new Promise((resolve, reject) => {
|
|
39
|
+
const token = localStorage.getItem('Meteor.loginToken');
|
|
40
|
+
if (token) {
|
|
41
|
+
Meteor.loginWithToken(token, (error) => {
|
|
42
|
+
if (error) {
|
|
43
|
+
reject(error);
|
|
44
|
+
} else {
|
|
45
|
+
resolve(Meteor.user());
|
|
46
|
+
}
|
|
47
|
+
})
|
|
48
|
+
} else {
|
|
49
|
+
resolve(null);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
} catch (error) {
|
|
53
|
+
console.error('Token validation failed:', error);
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
static async getUserAuthorizations(userId) {
|
|
59
|
+
// Implement logic to fetch user permissions from Meteor
|
|
60
|
+
try {
|
|
61
|
+
return new Promise((resolve) => {
|
|
62
|
+
const roles = [];
|
|
63
|
+
resolve(roles);
|
|
64
|
+
});
|
|
65
|
+
} catch (error) {
|
|
66
|
+
console.error('Failed to fetch user permissions:', error);
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
static async deauthenticateUser() {
|
|
72
|
+
// Implement logout logic using Meteor
|
|
73
|
+
try {
|
|
74
|
+
return new Promise((resolve, reject) => {
|
|
75
|
+
Meteor.logout((error) => {
|
|
76
|
+
if (error) {
|
|
77
|
+
reject(error);
|
|
78
|
+
}
|
|
79
|
+
resolve(true);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
} catch (error) {
|
|
83
|
+
console.error('Logout failed:', error);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
static async registerNewUser(username, password) {
|
|
88
|
+
try {
|
|
89
|
+
const selector = AuthService.getUserQuerySelector(username);
|
|
90
|
+
selector.password = password;
|
|
91
|
+
|
|
92
|
+
// Implement user registration logic using Meteor
|
|
93
|
+
await Accounts.createUserAsync(selector);
|
|
94
|
+
return Meteor.user();
|
|
95
|
+
} catch (error) {
|
|
96
|
+
console.error('Registration failed:', error);
|
|
97
|
+
throw error;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
static async sendForgotPasswordEmail(email) {
|
|
102
|
+
try {
|
|
103
|
+
// Implement password reset logic using Meteor
|
|
104
|
+
return new Promise ((resolve, reject) => {
|
|
105
|
+
Accounts.forgotPassword({ email }, (error) => {
|
|
106
|
+
if (error) {
|
|
107
|
+
reject(error);
|
|
108
|
+
} else {
|
|
109
|
+
resolve();
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
} catch (error) {
|
|
114
|
+
console.error('Password reset failed:', error);
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
static async resetPasswordWithToken(token, password) {
|
|
120
|
+
try {
|
|
121
|
+
// Implement password reset logic using Meteor
|
|
122
|
+
return new Promise ((resolve, reject) => {
|
|
123
|
+
Accounts.resetPassword(token, password, (error) => {
|
|
124
|
+
if (error) {
|
|
125
|
+
reject(error);
|
|
126
|
+
} else {
|
|
127
|
+
resolve(Meteor.user());
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
} catch (error) {
|
|
132
|
+
console.error('Password reset failed:', error);
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export default AuthService;
|