From 172e07060af7dc364d55dbdb55ddd1dcf4ddfa4b Mon Sep 17 00:00:00 2001 From: Caleb Burke Date: Thu, 25 Jun 2026 00:59:05 -0700 Subject: [PATCH] SignIn only for existing users --- .../middlewares/authorization-middleware.ts | 3 +- .../users/find-from-auth0-token-service.ts | 35 +++++++++++++++++++ api/src/services/users/index.ts | 1 + web/src/pages/SignInPage.vue | 14 ++------ 4 files changed, 40 insertions(+), 13 deletions(-) create mode 100644 api/src/services/users/find-from-auth0-token-service.ts diff --git a/api/src/middlewares/authorization-middleware.ts b/api/src/middlewares/authorization-middleware.ts index eb6ccdd..e909ee9 100644 --- a/api/src/middlewares/authorization-middleware.ts +++ b/api/src/middlewares/authorization-middleware.ts @@ -38,7 +38,8 @@ export async function authorizationMiddleware( try { const token = req.headers.authorization || "" - const user = await Users.EnsureFromAuth0TokenService.perform(token) + const user = await Users.FindFromAuth0TokenService.perform(token) + //const user = await Users.EnsureFromAuth0TokenService.perform(token) req.currentUser = user return next() } catch (error) { diff --git a/api/src/services/users/find-from-auth0-token-service.ts b/api/src/services/users/find-from-auth0-token-service.ts new file mode 100644 index 0000000..b37f6b2 --- /dev/null +++ b/api/src/services/users/find-from-auth0-token-service.ts @@ -0,0 +1,35 @@ +import { auth0Integration } from "@/integrations" +import { User } from "@/models" +import { Op } from "@sequelize/core" +import BaseService from "@/services/base-service" + +export class FindFromAuth0TokenService extends BaseService { + constructor(private token: string) { + super() + } + + async perform(): Promise { + const { auth0Subject, email } = await auth0Integration.getUserInfo(this.token) + + const existingUser = await User.withScope(["asCurrentUser"]).findOne({ + where: { auth0Subject }, + }) + + if (existingUser) { + return existingUser + } + + const firstTimeUser = await User.withScope(["asCurrentUser"]).findOne({ + where: { [Op.or]: [{ auth0Subject: email }, { email: email }] }, + }) + + if (firstTimeUser) { + await firstTimeUser.update({ auth0Subject }) + return firstTimeUser + } + + throw new Error("No user found for this token.") + } +} + +export default FindFromAuth0TokenService diff --git a/api/src/services/users/index.ts b/api/src/services/users/index.ts index edeffe5..2793bd6 100644 --- a/api/src/services/users/index.ts +++ b/api/src/services/users/index.ts @@ -4,3 +4,4 @@ export { DestroyService } from "./destroy-service" // Special Services export { EnsureFromAuth0TokenService } from "./ensure-from-auth0-token-service" +export { FindFromAuth0TokenService } from "./find-from-auth0-token-service" diff --git a/web/src/pages/SignInPage.vue b/web/src/pages/SignInPage.vue index da0eca6..36f6acb 100644 --- a/web/src/pages/SignInPage.vue +++ b/web/src/pages/SignInPage.vue @@ -23,16 +23,6 @@ > CALEBBURKEDEV -
- Helicopter Maintenance Tracking Platform -
-

- This application is will streamline maintenance control decision making and unlock - operational constraints. -

+