create-nexwire 4.3.0 → 4.4.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 +10 -5
- package/express/src/framework/facade.ts +1 -0
- package/express/src/framework/http/logger.ts +13 -4
- package/express/src/framework/maker-cli/runtime/core.mjs +1 -2
- package/express/src/framework/notification/channels/mail.ts +8 -6
- package/express/src/middlewares/auth-middleware.ts +1 -2
- package/express/src/middlewares/role-middleware.ts +3 -13
- package/express/src/modules/auth/routes/index.ts +1 -2
- package/express/src/providers/notification.ts +2 -2
- package/express/src/resources/src/components/Switch.vue +60 -65
- package/express/src/resources/src/pages/auth/forgetPassword.vue +23 -30
- package/express/src/resources/src/pages/auth/login.vue +25 -28
- package/express/src/resources/src/pages/auth/register.vue +35 -39
- package/express/src/resources/src/pages/auth/resetPassword.vue +29 -37
- package/express/src/resources/src/pages/auth/verifyEmail.vue +15 -19
- package/express/src/resources/src/plugins/gum.ts +519 -203
- package/express/src/resources/src/stores/auth.ts +9 -6
- package/express/src/storage/database/nexwire.sqlite +0 -0
- package/fastify/.dockerignore +14 -0
- package/fastify/.env +44 -0
- package/fastify/.env.example +42 -0
- package/fastify/.vscode/extensions.json +6 -0
- package/fastify/.vscode/settings.json +37 -0
- package/fastify/LICENSE +21 -0
- package/fastify/README.md +232 -0
- package/fastify/biome.json +99 -0
- package/fastify/drizzle.config.ts +25 -0
- package/fastify/gitignore-stub +31 -0
- package/fastify/package.json +130 -0
- package/fastify/public/.gitkeep +0 -0
- package/fastify/src/config/app.ts +41 -0
- package/fastify/src/config/auth.ts +12 -0
- package/fastify/src/config/cache.ts +16 -0
- package/fastify/src/config/cookie.ts +15 -0
- package/fastify/src/config/cors.ts +12 -0
- package/fastify/src/config/database.ts +48 -0
- package/fastify/src/config/index.ts +83 -0
- package/fastify/src/config/jwt.ts +19 -0
- package/fastify/src/config/logging.ts +13 -0
- package/fastify/src/config/mail.ts +24 -0
- package/fastify/src/config/openapi.ts +36 -0
- package/fastify/src/config/queue.ts +30 -0
- package/fastify/src/config/rateLimit.ts +17 -0
- package/fastify/src/config/realtime.ts +15 -0
- package/fastify/src/config/redis.ts +18 -0
- package/fastify/src/config/security.ts +44 -0
- package/fastify/src/config/session.ts +17 -0
- package/fastify/src/config/storage.ts +22 -0
- package/fastify/src/config/validate.ts +50 -0
- package/fastify/src/database/migrations/sqlite/0000_init.sql +48 -0
- package/fastify/src/database/migrations/sqlite/meta/0000_snapshot.json +324 -0
- package/fastify/src/database/migrations/sqlite/meta/_journal.json +13 -0
- package/fastify/src/database/schema.ts +2 -0
- package/fastify/src/env.ts +76 -0
- package/fastify/src/framework/cache/cache.ts +114 -0
- package/fastify/src/framework/circuit-breaker/cb.ts +88 -0
- package/fastify/src/framework/database/app-schema.ts +37 -0
- package/fastify/src/framework/database/connection.ts +223 -0
- package/fastify/src/framework/database/migrate-hooks.ts +87 -0
- package/fastify/src/framework/database/paginate.ts +226 -0
- package/fastify/src/framework/database/schema.ts +20 -0
- package/fastify/src/framework/database/seed.ts +152 -0
- package/fastify/src/framework/events/dispatcher.ts +61 -0
- package/fastify/src/framework/facade.ts +96 -0
- package/fastify/src/framework/http/app.ts +176 -0
- package/fastify/src/framework/http/cors.ts +13 -0
- package/fastify/src/framework/http/fastify.d.ts +13 -0
- package/fastify/src/framework/http/logger.ts +110 -0
- package/fastify/src/framework/http/metrics.ts +22 -0
- package/fastify/src/framework/http/openapi.ts +48 -0
- package/fastify/src/framework/http/ratelimiter.ts +47 -0
- package/fastify/src/framework/http/security.ts +25 -0
- package/fastify/src/framework/http/static.ts +83 -0
- package/fastify/src/framework/http/validation.ts +49 -0
- package/fastify/src/framework/kernel.ts +43 -0
- package/fastify/src/framework/maker-cli/db/core.mjs +291 -0
- package/fastify/src/framework/maker-cli/db/index.mjs +204 -0
- package/fastify/src/framework/maker-cli/deploy/core.mjs +1046 -0
- package/fastify/src/framework/maker-cli/deploy/index.mjs +91 -0
- package/fastify/src/framework/maker-cli/index.mjs +65 -0
- package/fastify/src/framework/maker-cli/middleware/core.mjs +41 -0
- package/fastify/src/framework/maker-cli/middleware/index.mjs +17 -0
- package/fastify/src/framework/maker-cli/module/core.mjs +1066 -0
- package/fastify/src/framework/maker-cli/module/index.mjs +211 -0
- package/fastify/src/framework/maker-cli/provider/core.mjs +49 -0
- package/fastify/src/framework/maker-cli/provider/index.mjs +12 -0
- package/fastify/src/framework/maker-cli/runtime/build-ui.mjs +16 -0
- package/fastify/src/framework/maker-cli/runtime/core.mjs +560 -0
- package/fastify/src/framework/maker-cli/runtime/index.mjs +120 -0
- package/fastify/src/framework/maker-cli/runtime/redis-commander-patch.cjs +20 -0
- package/fastify/src/framework/maker-cli/stubs/controller/openapi.ts.stub +74 -0
- package/fastify/src/framework/maker-cli/stubs/controller/plain.ts.stub +77 -0
- package/fastify/src/framework/maker-cli/stubs/controller/standalone.ts.stub +51 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/Dockerfile.bun.stub +52 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/Dockerfile.pnpm.stub +55 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/Dockerfile.stub +51 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/Dockerfile.yarn.stub +55 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/README.stub +59 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/compose/mysql.server.stub +45 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/compose/postgres.server.stub +45 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/compose/sqlite.stub +45 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/env/mysql.server.stub +68 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/env/postgres.server.stub +68 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/env/sqlite.stub +67 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/scripts/auto-migrate.sh.stub +41 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/server/README.stub +78 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/server/compose/noredis.stub +120 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/server/compose/redis.dev.stub +133 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/server/compose/redis.stub +131 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/server/env/local.example.stub +11 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/server/env/noredis.stub +25 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/server/env/redis.stub +25 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/server/nginx-vhost/README.stub +16 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/server/nginx-vhost/app.example.com.stub +13 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/server/pgadmin/servers.stub +14 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/server/redis/redis.conf.stub +7 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/supervisor/noredis.stub +54 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/supervisor/redis.stub +70 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/workflow/local.json.stub +25 -0
- package/fastify/src/framework/maker-cli/stubs/deploy/workflow/remote.json.stub +24 -0
- package/fastify/src/framework/maker-cli/stubs/facade/name.ts.stub +12 -0
- package/fastify/src/framework/maker-cli/stubs/helper/name.ts.stub +14 -0
- package/fastify/src/framework/maker-cli/stubs/job/name.ts.stub +25 -0
- package/fastify/src/framework/maker-cli/stubs/middleware/name.local.ts.stub +15 -0
- package/fastify/src/framework/maker-cli/stubs/middleware/name.ts.stub +15 -0
- package/fastify/src/framework/maker-cli/stubs/model/name.mysql.ts.stub +10 -0
- package/fastify/src/framework/maker-cli/stubs/model/name.postgresql.ts.stub +10 -0
- package/fastify/src/framework/maker-cli/stubs/model/name.sqlite.ts.stub +10 -0
- package/fastify/src/framework/maker-cli/stubs/notification/controller.ts.stub +79 -0
- package/fastify/src/framework/maker-cli/stubs/notification/job.ts.stub +11 -0
- package/fastify/src/framework/maker-cli/stubs/notification/model.ts.stub +29 -0
- package/fastify/src/framework/maker-cli/stubs/notification/provider.ts.stub +174 -0
- package/fastify/src/framework/maker-cli/stubs/notification/route.api.ts.stub +71 -0
- package/fastify/src/framework/maker-cli/stubs/notification/route.plain.ts.stub +15 -0
- package/fastify/src/framework/maker-cli/stubs/notification/schema.plain.ts.stub +26 -0
- package/fastify/src/framework/maker-cli/stubs/notification/schema.ts.stub +26 -0
- package/fastify/src/framework/maker-cli/stubs/provider/module-barrel.ts.stub +19 -0
- package/fastify/src/framework/maker-cli/stubs/provider/module.ts.stub +21 -0
- package/fastify/src/framework/maker-cli/stubs/provider/name.ts.stub +21 -0
- package/fastify/src/framework/maker-cli/stubs/route/api.ts.stub +101 -0
- package/fastify/src/framework/maker-cli/stubs/route/plain.ts.stub +23 -0
- package/fastify/src/framework/maker-cli/stubs/route/standalone.api.ts.stub +120 -0
- package/fastify/src/framework/maker-cli/stubs/route/standalone.plain.ts.stub +50 -0
- package/fastify/src/framework/maker-cli/stubs/schedule/name.ts.stub +36 -0
- package/fastify/src/framework/maker-cli/stubs/schema/name.plain.ts.stub +14 -0
- package/fastify/src/framework/maker-cli/stubs/schema/name.ts.stub +33 -0
- package/fastify/src/framework/maker-cli/stubs/seeder/name.ts.stub +18 -0
- package/fastify/src/framework/maker-cli/stubs/seeder/standalone.ts.stub +22 -0
- package/fastify/src/framework/maker-cli/stubs/service/name.plain.ts.stub +67 -0
- package/fastify/src/framework/maker-cli/stubs/service/name.ts.stub +65 -0
- package/fastify/src/framework/maker-cli/stubs/test/unit.ts.stub +22 -0
- package/fastify/src/framework/maker-cli/stubs/type/name.ts.stub +22 -0
- package/fastify/src/framework/maker-cli/utils/env-config.mjs +44 -0
- package/fastify/src/framework/maker-cli/utils/env-db.mjs +61 -0
- package/fastify/src/framework/maker-cli/utils/file-ops.mjs +30 -0
- package/fastify/src/framework/maker-cli/utils/flags.mjs +14 -0
- package/fastify/src/framework/maker-cli/utils/help.mjs +379 -0
- package/fastify/src/framework/maker-cli/utils/naming.mjs +119 -0
- package/fastify/src/framework/maker-cli/utils/process.mjs +52 -0
- package/fastify/src/framework/maker-cli/utils/project-commands.mjs +201 -0
- package/fastify/src/framework/modules/discover.ts +57 -0
- package/fastify/src/framework/modules/routes.ts +31 -0
- package/fastify/src/framework/notification/channels/broadcast.ts +15 -0
- package/fastify/src/framework/notification/channels/mail.ts +42 -0
- package/fastify/src/framework/notification/contracts.ts +29 -0
- package/fastify/src/framework/notification/index.ts +59 -0
- package/fastify/src/framework/notification/registry.ts +15 -0
- package/fastify/src/framework/providers/adapter.ts +149 -0
- package/fastify/src/framework/providers/contracts.ts +126 -0
- package/fastify/src/framework/providers/loader.ts +105 -0
- package/fastify/src/framework/providers/registry.ts +88 -0
- package/fastify/src/framework/queue/clear.ts +22 -0
- package/fastify/src/framework/queue/queue.ts +401 -0
- package/fastify/src/framework/queue/ui.ts +194 -0
- package/fastify/src/framework/queue/worker.ts +61 -0
- package/fastify/src/framework/realtime/broadcast.ts +70 -0
- package/fastify/src/framework/realtime/index.ts +2 -0
- package/fastify/src/framework/realtime/socket-cookie.ts +72 -0
- package/fastify/src/framework/realtime/socket.ts +149 -0
- package/fastify/src/framework/realtime/types.ts +6 -0
- package/fastify/src/framework/realtime/ui.ts +16 -0
- package/fastify/src/framework/redis/client.ts +148 -0
- package/fastify/src/framework/runtime/runtime.ts +23 -0
- package/fastify/src/framework/runtime/server-adapter.ts +33 -0
- package/fastify/src/framework/scheduler/lock.ts +128 -0
- package/fastify/src/framework/scheduler/run.ts +48 -0
- package/fastify/src/framework/scheduler/scheduler.ts +155 -0
- package/fastify/src/framework/server.ts +162 -0
- package/fastify/src/framework/session/session.ts +160 -0
- package/fastify/src/framework/storage/storage.ts +744 -0
- package/fastify/src/framework/support/cookie.ts +71 -0
- package/fastify/src/framework/support/jwt.ts +33 -0
- package/fastify/src/framework/support/lifecycle.ts +35 -0
- package/fastify/src/framework/support/logger.ts +148 -0
- package/fastify/src/framework/support/mail.ts +56 -0
- package/fastify/src/framework/support/password.ts +23 -0
- package/fastify/src/framework/support/status-codes.ts +75 -0
- package/fastify/src/framework/support/upload.ts +181 -0
- package/fastify/src/framework/support/url.ts +41 -0
- package/fastify/src/middlewares/auth-middleware.ts +134 -0
- package/fastify/src/middlewares/role-middleware.ts +19 -0
- package/fastify/src/modules/auth/__tests__/forgetpass.test.ts +200 -0
- package/fastify/src/modules/auth/__tests__/login.test.ts +171 -0
- package/fastify/src/modules/auth/__tests__/logout.test.ts +60 -0
- package/fastify/src/modules/auth/__tests__/logoutalldevices.test.ts +49 -0
- package/fastify/src/modules/auth/__tests__/me.test.ts +91 -0
- package/fastify/src/modules/auth/__tests__/refreshtoken.test.ts +305 -0
- package/fastify/src/modules/auth/__tests__/register.test.ts +291 -0
- package/fastify/src/modules/auth/__tests__/resetpass.test.ts +206 -0
- package/fastify/src/modules/auth/__tests__/verifyemail.test.ts +183 -0
- package/fastify/src/modules/auth/controllers/auth.ts +252 -0
- package/fastify/src/modules/auth/controllers/role.ts +35 -0
- package/fastify/src/modules/auth/database/models/role.ts +14 -0
- package/fastify/src/modules/auth/database/models/user.ts +46 -0
- package/fastify/src/modules/auth/database/seeders/role.ts +18 -0
- package/fastify/src/modules/auth/database/seeders/user.ts +35 -0
- package/fastify/src/modules/auth/facade.ts +12 -0
- package/fastify/src/modules/auth/helpers/auth.ts +115 -0
- package/fastify/src/modules/auth/jobs/forgetpass.ts +20 -0
- package/fastify/src/modules/auth/jobs/registeruser.ts +23 -0
- package/fastify/src/modules/auth/jobs/verifyemail.ts +18 -0
- package/fastify/src/modules/auth/routes/index.ts +185 -0
- package/fastify/src/modules/auth/routes/role.ts +56 -0
- package/fastify/src/modules/auth/schemas/auth.ts +116 -0
- package/fastify/src/modules/auth/services/forgetpassword.ts +66 -0
- package/fastify/src/modules/auth/services/login.ts +63 -0
- package/fastify/src/modules/auth/services/logout.ts +25 -0
- package/fastify/src/modules/auth/services/logoutalldevices.ts +19 -0
- package/fastify/src/modules/auth/services/me.ts +31 -0
- package/fastify/src/modules/auth/services/refreshtoken.ts +110 -0
- package/fastify/src/modules/auth/services/register.ts +141 -0
- package/fastify/src/modules/auth/services/resetpassword.ts +69 -0
- package/fastify/src/modules/auth/services/verifyemail.ts +77 -0
- package/fastify/src/modules/auth/types/auth.ts +31 -0
- package/fastify/src/providers/README.md +107 -0
- package/fastify/src/providers/notification.ts +4 -0
- package/fastify/src/resources/index.html +17 -0
- package/fastify/src/resources/src/App.vue +5 -0
- package/fastify/src/resources/src/assets/css/styles.css +14761 -0
- package/fastify/src/resources/src/assets/css/styles.css.map +1 -0
- package/fastify/src/resources/src/assets/fonts/public-sans/public-sans-latin-ext.woff2 +0 -0
- package/fastify/src/resources/src/assets/fonts/public-sans/public-sans-latin.woff2 +0 -0
- package/fastify/src/resources/src/assets/images/favicon/favicon.ico +0 -0
- package/fastify/src/resources/src/assets/images/logo.png +0 -0
- package/fastify/src/resources/src/assets/scss/custom.css +217 -0
- package/fastify/src/resources/src/assets/scss/custom.css.map +1 -0
- package/fastify/src/resources/src/assets/scss/custom.scss +1346 -0
- package/fastify/src/resources/src/components/Button.vue +32 -0
- package/fastify/src/resources/src/components/Checkbox.vue +32 -0
- package/fastify/src/resources/src/components/Datepicker.vue +106 -0
- package/fastify/src/resources/src/components/FeatureButton.vue +53 -0
- package/fastify/src/resources/src/components/FloatButton.vue +33 -0
- package/fastify/src/resources/src/components/Href.vue +32 -0
- package/fastify/src/resources/src/components/Input.vue +243 -0
- package/fastify/src/resources/src/components/InputGroup.vue +147 -0
- package/fastify/src/resources/src/components/InputPasswordToggle.vue +229 -0
- package/fastify/src/resources/src/components/Modal.vue +71 -0
- package/fastify/src/resources/src/components/Pagebar.vue +26 -0
- package/fastify/src/resources/src/components/Refresh.vue +19 -0
- package/fastify/src/resources/src/components/Select.vue +384 -0
- package/fastify/src/resources/src/components/Spinner.vue +42 -0
- package/fastify/src/resources/src/components/Switch.vue +60 -0
- package/fastify/src/resources/src/components/TextArea.vue +117 -0
- package/fastify/src/resources/src/components/Toast.vue +56 -0
- package/fastify/src/resources/src/components/datatable/DataTableSkeleton.vue +98 -0
- package/fastify/src/resources/src/components/datatable/Pagination.vue +147 -0
- package/fastify/src/resources/src/components/datatable/SelectOpption.vue +64 -0
- package/fastify/src/resources/src/components/datatable/index.vue +199 -0
- package/fastify/src/resources/src/composables/useAuth.ts +52 -0
- package/fastify/src/resources/src/helpers/assets.ts +51 -0
- package/fastify/src/resources/src/helpers/nformatter.ts +10 -0
- package/fastify/src/resources/src/helpers/utils.ts +75 -0
- package/fastify/src/resources/src/layouts/AuthLayout.vue +20 -0
- package/fastify/src/resources/src/layouts/Layout/Footer.vue +23 -0
- package/fastify/src/resources/src/layouts/Layout/Header.vue +124 -0
- package/fastify/src/resources/src/layouts/Layout/Sidebar.vue +137 -0
- package/fastify/src/resources/src/layouts/Layout/index.vue +87 -0
- package/fastify/src/resources/src/main.ts +28 -0
- package/fastify/src/resources/src/pages/auth/forgetPassword.vue +76 -0
- package/fastify/src/resources/src/pages/auth/login.vue +96 -0
- package/fastify/src/resources/src/pages/auth/register.vue +129 -0
- package/fastify/src/resources/src/pages/auth/resetPassword.vue +110 -0
- package/fastify/src/resources/src/pages/auth/verifyEmail.vue +64 -0
- package/fastify/src/resources/src/pages/dashboard/index.vue +66 -0
- package/fastify/src/resources/src/plugins/axios.ts +31 -0
- package/fastify/src/resources/src/plugins/browserDetect.ts +55 -0
- package/fastify/src/resources/src/plugins/dialog.ts +216 -0
- package/fastify/src/resources/src/plugins/gum.ts +683 -0
- package/fastify/src/resources/src/plugins/pulse.ts +157 -0
- package/fastify/src/resources/src/plugins/routeProgress.ts +87 -0
- package/fastify/src/resources/src/router/index.ts +85 -0
- package/fastify/src/resources/src/stores/admin-ui.ts +148 -0
- package/fastify/src/resources/src/stores/auth.ts +187 -0
- package/fastify/src/resources/tsconfig.json +19 -0
- package/fastify/src/resources/vite.config.ts +64 -0
- package/fastify/src/storage/app/private/.gitkeep +0 -0
- package/fastify/src/storage/app/public/.gitkeep +0 -0
- package/fastify/src/storage/app/tmp/generated/.gitkeep +0 -0
- package/fastify/src/storage/database/nexwire.sqlite +0 -0
- package/fastify/src/storage/logs/.gitkeep +0 -0
- package/fastify/src/storage/logs/app.log +0 -0
- package/fastify/src/storage/logs/fatal.log +0 -0
- package/fastify/src/storage/tmp/.gitkeep +0 -0
- package/fastify/src/storage/trash/modules/.gitkeep +0 -0
- package/fastify/src/types/global.d.ts +32 -0
- package/fastify/tsconfig.json +19 -0
- package/fastify/vitest.config.ts +38 -0
- package/hono/src/framework/facade.ts +1 -0
- package/hono/src/framework/http/logger.ts +86 -81
- package/hono/src/framework/maker-cli/runtime/core.mjs +1 -2
- package/hono/src/framework/notification/channels/mail.ts +8 -6
- package/hono/src/middlewares/auth-middleware.ts +1 -2
- package/hono/src/middlewares/role-middleware.ts +3 -13
- package/hono/src/modules/auth/routes/index.ts +1 -2
- package/hono/src/providers/notification.ts +2 -2
- package/hono/src/resources/src/components/Switch.vue +60 -65
- package/hono/src/resources/src/pages/auth/forgetPassword.vue +23 -29
- package/hono/src/resources/src/pages/auth/login.vue +26 -29
- package/hono/src/resources/src/pages/auth/register.vue +36 -40
- package/hono/src/resources/src/pages/auth/resetPassword.vue +29 -37
- package/hono/src/resources/src/pages/auth/verifyEmail.vue +15 -19
- package/hono/src/resources/src/plugins/gum.ts +519 -203
- package/hono/src/resources/src/stores/auth.ts +9 -6
- package/hono/src/storage/database/nexwire.sqlite +0 -0
- package/package.json +3 -2
- package/src/index.js +11 -8
|
@@ -3,13 +3,10 @@
|
|
|
3
3
|
<div class="auth col-12 col-sm-9 col-md-7 col-lg-5 col-xl-4 mx-auto py-5">
|
|
4
4
|
<div class="card card-body border-0">
|
|
5
5
|
<div class="d-block mb-2 text-center">
|
|
6
|
-
<img src="@/assets/images/logo.png" alt="nexwire" style="max-height: 60px;"
|
|
6
|
+
<img src="@/assets/images/logo.png" alt="nexwire" style="max-height: 60px;">
|
|
7
7
|
</div>
|
|
8
8
|
<h4 class="text-center">Forget Password</h4>
|
|
9
|
-
<p
|
|
10
|
-
v-if="message"
|
|
11
|
-
class="text-center alert py-1 mt-2"
|
|
12
|
-
:class="isError ? 'alert-danger text-danger' : 'alert-success text-success'">
|
|
9
|
+
<p v-if="message" class="text-center alert py-1 mt-2" :class="isError ? 'alert-danger text-danger' : 'alert-success text-success'">
|
|
13
10
|
{{ message }}
|
|
14
11
|
</p>
|
|
15
12
|
<form id="formAuthentication" @submit.prevent="onSubmit">
|
|
@@ -22,14 +19,10 @@
|
|
|
22
19
|
placeholder="Enter your email..."
|
|
23
20
|
:err="form.errors.email"
|
|
24
21
|
focus
|
|
25
|
-
must
|
|
22
|
+
must
|
|
23
|
+
/>
|
|
26
24
|
</div>
|
|
27
|
-
<Button
|
|
28
|
-
type="submit"
|
|
29
|
-
label="Send Reset Link"
|
|
30
|
-
class="btn btn-primary w-100"
|
|
31
|
-
icon="bi bi-send ms-2"
|
|
32
|
-
:disabled="processing" />
|
|
25
|
+
<Button type="submit" label="Send Reset Link" class="btn btn-primary w-100" icon="bi bi-send ms-2" :disabled="processing" />
|
|
33
26
|
</form>
|
|
34
27
|
<div class="text-center mt-2">
|
|
35
28
|
<router-link to="/login">
|
|
@@ -47,11 +40,14 @@ import { useHead } from "@unhead/vue";
|
|
|
47
40
|
import { ref } from "vue";
|
|
48
41
|
import Button from "@/components/Button.vue";
|
|
49
42
|
import Input from "@/components/Input.vue";
|
|
50
|
-
import {
|
|
43
|
+
import { useGum } from "@/plugins/gum";
|
|
44
|
+
import { type ForgotPayload, useAuthStore } from "@/stores/auth";
|
|
51
45
|
|
|
52
46
|
useHead({ title: "Forget Password" });
|
|
53
47
|
|
|
54
|
-
const
|
|
48
|
+
const auth = useAuthStore();
|
|
49
|
+
const gum = useGum({ email: "" });
|
|
50
|
+
const form = gum.form;
|
|
55
51
|
const processing = form.processing;
|
|
56
52
|
const message = ref("");
|
|
57
53
|
const isError = ref(false);
|
|
@@ -59,23 +55,21 @@ const isError = ref(false);
|
|
|
59
55
|
const onSubmit = async () => {
|
|
60
56
|
message.value = "";
|
|
61
57
|
isError.value = false;
|
|
62
|
-
await form.
|
|
63
|
-
|
|
64
|
-
{
|
|
65
|
-
email: String(
|
|
58
|
+
await form.postWith({
|
|
59
|
+
fetcher: (body) => auth.forgotPassword(body as ForgotPayload),
|
|
60
|
+
transform: (data) => ({
|
|
61
|
+
email: String(data.email || "").trim()
|
|
62
|
+
}),
|
|
63
|
+
onSuccess: (res) => {
|
|
64
|
+
isError.value = false;
|
|
65
|
+
message.value = String(res.data || "If this email exists, a reset link has been sent");
|
|
66
|
+
form.reset();
|
|
66
67
|
},
|
|
67
|
-
{
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
message.value = res.data.message;
|
|
71
|
-
form.reset();
|
|
72
|
-
},
|
|
73
|
-
onError: (_errors, error) => {
|
|
74
|
-
isError.value = true;
|
|
75
|
-
message.value = error instanceof Error ? error.message : "Failed to process request";
|
|
76
|
-
}
|
|
68
|
+
onError: (_errors, error) => {
|
|
69
|
+
isError.value = true;
|
|
70
|
+
message.value = error instanceof Error ? error.message : "Failed to process request";
|
|
77
71
|
}
|
|
78
|
-
);
|
|
72
|
+
});
|
|
79
73
|
};
|
|
80
74
|
</script>
|
|
81
75
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<div class="auth col-12 col-sm-9 col-md-7 col-lg-5 col-xl-4 mx-auto py-5">
|
|
4
4
|
<div class="card card-body border-0">
|
|
5
5
|
<div class="d-block mb-2 text-center">
|
|
6
|
-
<img src="@/assets/images/logo.png" alt="nexwire" style="max-height: 60px;"
|
|
6
|
+
<img src="@/assets/images/logo.png" alt="nexwire" style="max-height: 60px;">
|
|
7
7
|
</div>
|
|
8
8
|
<p v-if="errorMessage" class="text-center alert alert-danger text-danger py-1 mt-2">
|
|
9
9
|
{{ errorMessage }}
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
placeholder="Enter your email..."
|
|
19
19
|
:err="form.errors.email"
|
|
20
20
|
focus
|
|
21
|
-
must
|
|
21
|
+
must
|
|
22
|
+
/>
|
|
22
23
|
</div>
|
|
23
24
|
<div class="mb-4">
|
|
24
25
|
<input-password-toggle
|
|
@@ -27,15 +28,14 @@
|
|
|
27
28
|
label="password"
|
|
28
29
|
placeholder="Enter your password..."
|
|
29
30
|
:err="form.errors.password"
|
|
30
|
-
must
|
|
31
|
+
must
|
|
32
|
+
/>
|
|
31
33
|
</div>
|
|
32
34
|
<div class="mb-4 d-flex align-items-center justify-content-between">
|
|
33
35
|
<Checkbox id="remember-me" v-model="form.data.remember" label="Remember me" />
|
|
34
|
-
<router-link to="/forget-password" class="text-decoration-none mb-1">Forget
|
|
35
|
-
Password?</router-link>
|
|
36
|
+
<router-link to="/forget-password" class="text-decoration-none mb-1">Forget Password?</router-link>
|
|
36
37
|
</div>
|
|
37
|
-
<Button type="submit" class="btn btn-primary w-100" label="Login"
|
|
38
|
-
icon="bi bi-box-arrow-in-right" :disabled="processing" />
|
|
38
|
+
<Button type="submit" class="btn btn-primary w-100" label="Login" icon="bi bi-box-arrow-in-right" :disabled="processing" />
|
|
39
39
|
<div class="text-center mt-3">
|
|
40
40
|
<span class="text-muted">Don't have an account?</span>
|
|
41
41
|
<router-link to="/register" class="ms-1 text-decoration-none">Register</router-link>
|
|
@@ -50,12 +50,12 @@
|
|
|
50
50
|
import { useHead } from "@unhead/vue";
|
|
51
51
|
import { ref } from "vue";
|
|
52
52
|
import { useRouter } from "vue-router";
|
|
53
|
+
import Button from "@/components/Button.vue";
|
|
53
54
|
import Checkbox from "@/components/Checkbox.vue";
|
|
54
55
|
import Input from "@/components/Input.vue";
|
|
55
56
|
import InputPasswordToggle from "@/components/InputPasswordToggle.vue";
|
|
56
|
-
import
|
|
57
|
-
import {
|
|
58
|
-
import { useAuthStore } from "@/stores/auth";
|
|
57
|
+
import { useGum } from "@/plugins/gum";
|
|
58
|
+
import { type LoginPayload, useAuthStore } from "@/stores/auth";
|
|
59
59
|
|
|
60
60
|
useHead({ title: "Login" });
|
|
61
61
|
|
|
@@ -63,36 +63,33 @@ const router = useRouter();
|
|
|
63
63
|
const auth = useAuthStore();
|
|
64
64
|
const errorMessage = ref("");
|
|
65
65
|
|
|
66
|
-
const
|
|
66
|
+
const gum = useGum({
|
|
67
67
|
email: "",
|
|
68
68
|
password: "",
|
|
69
69
|
remember: false
|
|
70
70
|
});
|
|
71
71
|
|
|
72
|
+
const form = gum.form;
|
|
72
73
|
const processing = form.processing;
|
|
73
74
|
|
|
74
75
|
const onSubmit = async () => {
|
|
75
76
|
errorMessage.value = "";
|
|
76
|
-
await form.
|
|
77
|
-
|
|
78
|
-
{
|
|
79
|
-
email: String(
|
|
80
|
-
password:
|
|
81
|
-
remember: !!
|
|
77
|
+
await form.postWith({
|
|
78
|
+
fetcher: (body) => auth.login(body as LoginPayload),
|
|
79
|
+
transform: (data) => ({
|
|
80
|
+
email: String(data.email || "").trim(),
|
|
81
|
+
password: data.password,
|
|
82
|
+
remember: !!data.remember
|
|
83
|
+
}),
|
|
84
|
+
onSuccess: async () => {
|
|
85
|
+
form.reset("password");
|
|
86
|
+
await router.push("/");
|
|
82
87
|
},
|
|
83
|
-
{
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
await auth.bootstrap();
|
|
87
|
-
form.reset("password");
|
|
88
|
-
await router.push("/");
|
|
89
|
-
},
|
|
90
|
-
onError: (_errors, error) => {
|
|
91
|
-
errorMessage.value = error instanceof Error ? error.message : "Unable to login right now";
|
|
92
|
-
form.reset("password");
|
|
93
|
-
}
|
|
88
|
+
onError: (_errors, error) => {
|
|
89
|
+
errorMessage.value = error instanceof Error ? error.message : "Unable to login right now";
|
|
90
|
+
form.reset("password");
|
|
94
91
|
}
|
|
95
|
-
);
|
|
92
|
+
});
|
|
96
93
|
};
|
|
97
94
|
</script>
|
|
98
95
|
|
|
@@ -3,13 +3,10 @@
|
|
|
3
3
|
<div class="auth col-12 col-sm-9 col-md-7 col-lg-5 col-xl-4 mx-auto py-5">
|
|
4
4
|
<div class="card card-body border-0">
|
|
5
5
|
<div class="d-block mb-2 text-center">
|
|
6
|
-
<img src="@/assets/images/logo.png" alt="nexwire" style="max-height: 60px;"
|
|
6
|
+
<img src="@/assets/images/logo.png" alt="nexwire" style="max-height: 60px;">
|
|
7
7
|
</div>
|
|
8
8
|
<h4 class="text-center">Create Account</h4>
|
|
9
|
-
<p
|
|
10
|
-
v-if="message"
|
|
11
|
-
class="text-center alert py-1 mt-2"
|
|
12
|
-
:class="isError ? 'alert-danger text-danger' : 'alert-success text-success'">
|
|
9
|
+
<p v-if="message" class="text-center alert py-1 mt-2" :class="isError ? 'alert-danger text-danger' : 'alert-success text-success'">
|
|
13
10
|
{{ message }}
|
|
14
11
|
</p>
|
|
15
12
|
<form @submit.prevent="onSubmit">
|
|
@@ -22,7 +19,8 @@
|
|
|
22
19
|
placeholder="Enter your name..."
|
|
23
20
|
:err="form.errors.name"
|
|
24
21
|
focus
|
|
25
|
-
must
|
|
22
|
+
must
|
|
23
|
+
/>
|
|
26
24
|
</div>
|
|
27
25
|
<div class="mb-4">
|
|
28
26
|
<Input
|
|
@@ -32,7 +30,8 @@
|
|
|
32
30
|
label="email"
|
|
33
31
|
placeholder="Enter your email..."
|
|
34
32
|
:err="form.errors.email"
|
|
35
|
-
must
|
|
33
|
+
must
|
|
34
|
+
/>
|
|
36
35
|
</div>
|
|
37
36
|
<div class="mb-4">
|
|
38
37
|
<InputPasswordToggle
|
|
@@ -41,7 +40,8 @@
|
|
|
41
40
|
label="password"
|
|
42
41
|
placeholder="Create a password..."
|
|
43
42
|
:err="form.errors.password"
|
|
44
|
-
must
|
|
43
|
+
must
|
|
44
|
+
/>
|
|
45
45
|
</div>
|
|
46
46
|
<div class="mb-4">
|
|
47
47
|
<InputPasswordToggle
|
|
@@ -50,10 +50,10 @@
|
|
|
50
50
|
label="confirm password"
|
|
51
51
|
placeholder="Confirm your password..."
|
|
52
52
|
:err="form.errors.password_confirmation"
|
|
53
|
-
must
|
|
53
|
+
must
|
|
54
|
+
/>
|
|
54
55
|
</div>
|
|
55
|
-
<Button type="submit" class="btn btn-primary w-100" label="Create Account"
|
|
56
|
-
icon="bi bi-person-plus" :disabled="processing" />
|
|
56
|
+
<Button type="submit" class="btn btn-primary w-100" label="Create Account" icon="bi bi-person-plus" :disabled="processing" />
|
|
57
57
|
</form>
|
|
58
58
|
<div class="text-center mt-3">
|
|
59
59
|
<span class="text-muted">Already have an account?</span>
|
|
@@ -68,24 +68,25 @@
|
|
|
68
68
|
import { useHead } from "@unhead/vue";
|
|
69
69
|
import { ref } from "vue";
|
|
70
70
|
import { useRouter } from "vue-router";
|
|
71
|
+
import Button from "@/components/Button.vue";
|
|
71
72
|
import Input from "@/components/Input.vue";
|
|
72
73
|
import InputPasswordToggle from "@/components/InputPasswordToggle.vue";
|
|
73
|
-
import
|
|
74
|
-
import {
|
|
75
|
-
import { useAuthStore } from "@/stores/auth";
|
|
74
|
+
import { useGum } from "@/plugins/gum";
|
|
75
|
+
import { type RegisterPayload, useAuthStore } from "@/stores/auth";
|
|
76
76
|
|
|
77
77
|
useHead({ title: "Register" });
|
|
78
78
|
|
|
79
79
|
const router = useRouter();
|
|
80
80
|
const auth = useAuthStore();
|
|
81
81
|
|
|
82
|
-
const
|
|
82
|
+
const gum = useGum({
|
|
83
83
|
name: "",
|
|
84
84
|
email: "",
|
|
85
85
|
password: "",
|
|
86
86
|
password_confirmation: ""
|
|
87
87
|
});
|
|
88
88
|
|
|
89
|
+
const form = gum.form;
|
|
89
90
|
const processing = form.processing;
|
|
90
91
|
const message = ref("");
|
|
91
92
|
const isError = ref(false);
|
|
@@ -100,33 +101,28 @@ const onSubmit = async () => {
|
|
|
100
101
|
return;
|
|
101
102
|
}
|
|
102
103
|
|
|
103
|
-
await form.
|
|
104
|
-
|
|
105
|
-
{
|
|
106
|
-
name: String(
|
|
107
|
-
email: String(
|
|
108
|
-
password:
|
|
109
|
-
password_confirmation:
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
if (auth.isAuthenticated) {
|
|
117
|
-
await router.push("/");
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
message.value = "Registration successful. Please verify your email.";
|
|
122
|
-
form.reset();
|
|
123
|
-
},
|
|
124
|
-
onError: (_errors, error) => {
|
|
125
|
-
isError.value = true;
|
|
126
|
-
message.value = error instanceof Error ? error.message : "Unable to register right now";
|
|
104
|
+
await form.postWith({
|
|
105
|
+
fetcher: (body) => auth.register(body as RegisterPayload),
|
|
106
|
+
transform: (data) => ({
|
|
107
|
+
name: String(data.name || "").trim(),
|
|
108
|
+
email: String(data.email || "").trim(),
|
|
109
|
+
password: data.password,
|
|
110
|
+
password_confirmation: data.password_confirmation
|
|
111
|
+
}),
|
|
112
|
+
onSuccess: async () => {
|
|
113
|
+
if (auth.isAuthenticated) {
|
|
114
|
+
await router.push("/");
|
|
115
|
+
return;
|
|
127
116
|
}
|
|
117
|
+
|
|
118
|
+
message.value = "Registration successful. Please verify your email.";
|
|
119
|
+
form.reset();
|
|
120
|
+
},
|
|
121
|
+
onError: (_errors, error) => {
|
|
122
|
+
isError.value = true;
|
|
123
|
+
message.value = error instanceof Error ? error.message : "Unable to register right now";
|
|
128
124
|
}
|
|
129
|
-
);
|
|
125
|
+
});
|
|
130
126
|
};
|
|
131
127
|
</script>
|
|
132
128
|
|
|
@@ -3,19 +3,13 @@
|
|
|
3
3
|
<div class="auth col-12 col-sm-9 col-md-7 col-lg-5 col-xl-4 mx-auto py-5">
|
|
4
4
|
<div class="card card-body border-0">
|
|
5
5
|
<div class="d-block mb-2 text-center">
|
|
6
|
-
<img src="@/assets/images/logo.png" alt="nexwire" style="max-height: 60px;"
|
|
6
|
+
<img src="@/assets/images/logo.png" alt="nexwire" style="max-height: 60px;">
|
|
7
7
|
</div>
|
|
8
8
|
<h4 class="text-center">Reset Password</h4>
|
|
9
|
-
<p
|
|
10
|
-
v-if="message"
|
|
11
|
-
class="text-center alert py-1 mt-2"
|
|
12
|
-
:class="isError ? 'alert-danger text-danger' : 'alert-success text-success'">
|
|
9
|
+
<p v-if="message" class="text-center alert py-1 mt-2" :class="isError ? 'alert-danger text-danger' : 'alert-success text-success'">
|
|
13
10
|
{{ message }}
|
|
14
11
|
</p>
|
|
15
|
-
<form
|
|
16
|
-
id="formAuthentication"
|
|
17
|
-
:class="{ 'pe-none opacity-50': !isLinkValid }"
|
|
18
|
-
@submit.prevent="onSubmit">
|
|
12
|
+
<form id="formAuthentication" :class="{ 'pe-none opacity-50': !isLinkValid }" @submit.prevent="onSubmit">
|
|
19
13
|
<div class="mb-4">
|
|
20
14
|
<input-password-toggle
|
|
21
15
|
id="password"
|
|
@@ -23,7 +17,8 @@
|
|
|
23
17
|
label="new password"
|
|
24
18
|
placeholder="Enter your password..."
|
|
25
19
|
:err="form.errors.password"
|
|
26
|
-
must
|
|
20
|
+
must
|
|
21
|
+
/>
|
|
27
22
|
</div>
|
|
28
23
|
<div class="mb-4">
|
|
29
24
|
<input-password-toggle
|
|
@@ -32,14 +27,10 @@
|
|
|
32
27
|
label="confirm password"
|
|
33
28
|
placeholder="Confirm new password..."
|
|
34
29
|
:err="form.errors.password_confirmation"
|
|
35
|
-
must
|
|
30
|
+
must
|
|
31
|
+
/>
|
|
36
32
|
</div>
|
|
37
|
-
<Button
|
|
38
|
-
type="submit"
|
|
39
|
-
label="Reset Password"
|
|
40
|
-
class="btn btn-primary w-100"
|
|
41
|
-
icon="bi bi-key ms-2"
|
|
42
|
-
:disabled="processing" />
|
|
33
|
+
<Button type="submit" label="Reset Password" class="btn btn-primary w-100" icon="bi bi-key ms-2" :disabled="processing" />
|
|
43
34
|
</form>
|
|
44
35
|
<div class="text-center mt-2">
|
|
45
36
|
<router-link to="/login">
|
|
@@ -58,23 +49,26 @@ import { ref } from "vue";
|
|
|
58
49
|
import { useRoute, useRouter } from "vue-router";
|
|
59
50
|
import Button from "@/components/Button.vue";
|
|
60
51
|
import InputPasswordToggle from "@/components/InputPasswordToggle.vue";
|
|
61
|
-
import {
|
|
52
|
+
import { useGum } from "@/plugins/gum";
|
|
53
|
+
import { type ResetPayload, useAuthStore } from "@/stores/auth";
|
|
62
54
|
|
|
63
55
|
useHead({ title: "Reset Password" });
|
|
64
56
|
|
|
65
57
|
const route = useRoute();
|
|
66
58
|
const router = useRouter();
|
|
59
|
+
const auth = useAuthStore();
|
|
67
60
|
|
|
68
61
|
const email = String(route.query.email || "");
|
|
69
62
|
const token = String(route.query.token || "");
|
|
70
63
|
|
|
71
|
-
const
|
|
64
|
+
const gum = useGum({
|
|
72
65
|
email,
|
|
73
66
|
token,
|
|
74
67
|
password: "",
|
|
75
68
|
password_confirmation: ""
|
|
76
69
|
});
|
|
77
70
|
|
|
71
|
+
const form = gum.form;
|
|
78
72
|
const processing = form.processing;
|
|
79
73
|
const isLinkValid = !!(token && email);
|
|
80
74
|
const message = ref(isLinkValid ? "Set your new password" : "Invalid reset link. Please request a new one.");
|
|
@@ -92,26 +86,24 @@ const onSubmit = async () => {
|
|
|
92
86
|
return;
|
|
93
87
|
}
|
|
94
88
|
|
|
95
|
-
await form.
|
|
96
|
-
|
|
97
|
-
{
|
|
98
|
-
email: String(
|
|
99
|
-
token: String(
|
|
100
|
-
password:
|
|
101
|
-
password_confirmation:
|
|
89
|
+
await form.postWith({
|
|
90
|
+
fetcher: (body) => auth.resetPassword(body as ResetPayload),
|
|
91
|
+
transform: (data) => ({
|
|
92
|
+
email: String(data.email || "").trim(),
|
|
93
|
+
token: String(data.token || "").trim(),
|
|
94
|
+
password: data.password,
|
|
95
|
+
password_confirmation: data.password_confirmation
|
|
96
|
+
}),
|
|
97
|
+
onSuccess: (res) => {
|
|
98
|
+
isError.value = false;
|
|
99
|
+
message.value = String(res.data || "Password reset successfully");
|
|
100
|
+
void router.push("/login");
|
|
102
101
|
},
|
|
103
|
-
{
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
message.value = res.data.message;
|
|
107
|
-
router.push("/login");
|
|
108
|
-
},
|
|
109
|
-
onError: (_errors, error) => {
|
|
110
|
-
isError.value = true;
|
|
111
|
-
message.value = error instanceof Error ? error.message : "Failed to reset password";
|
|
112
|
-
}
|
|
102
|
+
onError: (_errors, error) => {
|
|
103
|
+
isError.value = true;
|
|
104
|
+
message.value = error instanceof Error ? error.message : "Failed to reset password";
|
|
113
105
|
}
|
|
114
|
-
);
|
|
106
|
+
});
|
|
115
107
|
};
|
|
116
108
|
</script>
|
|
117
109
|
|
|
@@ -3,13 +3,10 @@
|
|
|
3
3
|
<div class="auth col-12 col-sm-9 col-md-7 col-lg-5 col-xl-4 mx-auto py-5">
|
|
4
4
|
<div class="card card-body border-0">
|
|
5
5
|
<div class="d-block mb-2 text-center">
|
|
6
|
-
<img src="@/assets/images/logo.png" alt="nexwire" style="max-height: 60px;"
|
|
6
|
+
<img src="@/assets/images/logo.png" alt="nexwire" style="max-height: 60px;">
|
|
7
7
|
</div>
|
|
8
8
|
<h4 class="text-center">Email Verification</h4>
|
|
9
|
-
<p
|
|
10
|
-
v-if="message"
|
|
11
|
-
class="text-center alert py-2 mt-2"
|
|
12
|
-
:class="isError ? 'alert-danger text-danger' : 'alert-success text-success'">
|
|
9
|
+
<p v-if="message" class="text-center alert py-2 mt-2" :class="isError ? 'alert-danger text-danger' : 'alert-success text-success'">
|
|
13
10
|
{{ message }}
|
|
14
11
|
</p>
|
|
15
12
|
<div class="text-center mt-2">
|
|
@@ -27,17 +24,19 @@ import { useHead } from "@unhead/vue";
|
|
|
27
24
|
import { ref } from "vue";
|
|
28
25
|
import { useRoute } from "vue-router";
|
|
29
26
|
import { useGum } from "@/plugins/gum";
|
|
27
|
+
import { useAuthStore } from "@/stores/auth";
|
|
30
28
|
|
|
31
29
|
useHead({ title: "Verify Email" });
|
|
32
30
|
|
|
33
31
|
const route = useRoute();
|
|
32
|
+
const auth = useAuthStore();
|
|
34
33
|
|
|
35
34
|
const email = String(route.query.email || "").trim();
|
|
36
35
|
const token = String(route.query.token || "").trim();
|
|
37
36
|
const message = ref("Verifying your email...");
|
|
38
37
|
const isError = ref(false);
|
|
39
38
|
|
|
40
|
-
const
|
|
39
|
+
const gum = useGum();
|
|
41
40
|
|
|
42
41
|
const verify = async () => {
|
|
43
42
|
if (!email || !token) {
|
|
@@ -46,20 +45,17 @@ const verify = async () => {
|
|
|
46
45
|
return;
|
|
47
46
|
}
|
|
48
47
|
|
|
49
|
-
await
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
isError.value = true;
|
|
59
|
-
message.value = error instanceof Error ? error.message : "Failed to verify email";
|
|
60
|
-
}
|
|
48
|
+
await gum.postWith({
|
|
49
|
+
fetcher: () => auth.verifyEmail({ email, token }),
|
|
50
|
+
onSuccess: (res) => {
|
|
51
|
+
isError.value = false;
|
|
52
|
+
message.value = String(res.data || "Email verified successfully. You can now login.");
|
|
53
|
+
},
|
|
54
|
+
onError: (_errors, error) => {
|
|
55
|
+
isError.value = true;
|
|
56
|
+
message.value = error instanceof Error ? error.message : "Failed to verify email";
|
|
61
57
|
}
|
|
62
|
-
);
|
|
58
|
+
});
|
|
63
59
|
};
|
|
64
60
|
|
|
65
61
|
void verify();
|