diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 7578da440..65f306f1c 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -835,7 +835,6 @@ export const registerRoutes = async ( projectDAL, permissionService, projectUserMembershipRoleDAL, - userDAL, projectBotDAL, projectKeyDAL, projectMembershipDAL diff --git a/backend/src/server/routes/v3/login-router.ts b/backend/src/server/routes/v3/login-router.ts index 5f83b19f4..07923fd6c 100644 --- a/backend/src/server/routes/v3/login-router.ts +++ b/backend/src/server/routes/v3/login-router.ts @@ -206,7 +206,7 @@ export const registerLoginRouter = async (server: FastifyZodProvider) => { const userAgent = req.headers["user-agent"]; if (!userAgent) throw new Error("user agent header is required"); - const { tokens, mfaEnabled } = await server.services.login.login({ + const { tokens } = await server.services.login.login({ email: req.body.email, password: req.body.password, ip: req.realIp, @@ -233,7 +233,7 @@ export const registerLoginRouter = async (server: FastifyZodProvider) => { maxAge: 0 }); - return { accessToken: tokens.accessToken, mfaEnabled }; + return { accessToken: tokens.accessToken }; } }); }; diff --git a/backend/src/services/auth/auth-login-service.ts b/backend/src/services/auth/auth-login-service.ts index 35fdd78a6..7dd1d3aa4 100644 --- a/backend/src/services/auth/auth-login-service.ts +++ b/backend/src/services/auth/auth-login-service.ts @@ -382,6 +382,15 @@ export const authLoginServiceFactory = ({ await verifyCaptcha(userEnc, captchaToken); if (!(await crypto.hashing().compareHash(password, userEnc.hashedPassword))) { + await userDAL.update( + { id: userEnc.userId }, + { + $incr: { + consecutiveFailedPasswordAttempts: 1 + } + } + ); + throw new BadRequestError({ message: "Invalid username or email" }); } @@ -397,7 +406,6 @@ export const authLoginServiceFactory = ({ }); return { - mfaEnabled: userEnc.isMfaEnabled, tokens: { accessToken: token.access, refreshToken: token.refresh diff --git a/backend/src/services/org-admin/org-admin-service.ts b/backend/src/services/org-admin/org-admin-service.ts index 60f46dabb..39013808f 100644 --- a/backend/src/services/org-admin/org-admin-service.ts +++ b/backend/src/services/org-admin/org-admin-service.ts @@ -11,7 +11,6 @@ import { TProjectKeyDALFactory } from "../project-key/project-key-dal"; import { TProjectMembershipDALFactory } from "../project-membership/project-membership-dal"; import { TProjectUserMembershipRoleDALFactory } from "../project-membership/project-user-membership-role-dal"; import { SmtpTemplates, TSmtpService } from "../smtp/smtp-service"; -import { TUserDALFactory } from "../user/user-dal"; import { TAccessProjectDTO, TListOrgProjectsDTO } from "./org-admin-types"; type TOrgAdminServiceFactoryDep = { @@ -23,7 +22,6 @@ type TOrgAdminServiceFactoryDep = { >; projectKeyDAL: Pick; projectBotDAL: Pick; - userDAL: Pick; projectUserMembershipRoleDAL: Pick; smtpService: Pick; }; @@ -36,7 +34,6 @@ export const orgAdminServiceFactory = ({ projectMembershipDAL, projectKeyDAL, projectBotDAL, - userDAL, projectUserMembershipRoleDAL, smtpService }: TOrgAdminServiceFactoryDep) => { @@ -142,10 +139,6 @@ export const orgAdminServiceFactory = ({ }); } - const userEncryptionKey = await userDAL.findUserEncKeyByUserId(actorId); - if (!userEncryptionKey) - throw new NotFoundError({ message: `User encryption key for user with ID '${actorId}' not found` }); - const updatedMembership = await projectMembershipDAL.transaction(async (tx) => { const newProjectMembership = await projectMembershipDAL.create( { diff --git a/backend/src/services/project/project-queue.ts b/backend/src/services/project/project-queue.ts index 41406ea2f..e557b7c96 100644 --- a/backend/src/services/project/project-queue.ts +++ b/backend/src/services/project/project-queue.ts @@ -191,10 +191,6 @@ export const projectQueueFactory = ({ approvalSecrets.push(...secretApprovals); } - if (!oldProjectKey.sender.publicKey) { - throw new Error("Old project key is not valid"); - } - const decryptedSecrets = decryptSecrets(secrets, userPrivateKey, oldProjectKey); const decryptedSecretVersions = decryptSecretVersions(secretVersions, userPrivateKey, oldProjectKey); const decryptedApprovalSecrets = decryptSecretApprovals(approvalSecrets, userPrivateKey, oldProjectKey); diff --git a/frontend/src/components/auth/UserInfoStep.tsx b/frontend/src/components/auth/UserInfoStep.tsx index 11c425ae3..fac3c3584 100644 --- a/frontend/src/components/auth/UserInfoStep.tsx +++ b/frontend/src/components/auth/UserInfoStep.tsx @@ -110,8 +110,6 @@ export default function UserInfoStep({ attributionSource }); - console.log("Signed up", JSON.stringify(response, null, 2)); - // unset signup JWT token and set JWT token SecurityClient.setSignupToken(""); SecurityClient.setToken(response.token); diff --git a/frontend/src/components/utilities/attemptCliLogin.ts b/frontend/src/components/utilities/attemptCliLogin.ts index dd61dc466..ddc68e200 100644 --- a/frontend/src/components/utilities/attemptCliLogin.ts +++ b/frontend/src/components/utilities/attemptCliLogin.ts @@ -43,7 +43,7 @@ const attemptLogin = async ({ const telemetry = new Telemetry().getInstance(); if (loginMode === LoginMode.ServerSide) { - console.log("attempting login with server side"); + console.log("Attempting login with server side..."); const data = await loginV3({ email, password, @@ -51,7 +51,7 @@ const attemptLogin = async ({ captchaToken }).catch((err) => { if (axios.isAxiosError(err) && err.response?.status === 400) { - if (err.response.data.error === "LegacyEncryptionScheme") { + if (err.response?.data?.error === "LegacyEncryptionScheme") { createNotification({ text: "Failed to login without SRP, attempting to authenticate with legacy SRP authentication.", type: "error" diff --git a/frontend/src/components/utilities/attemptLogin.ts b/frontend/src/components/utilities/attemptLogin.ts index 1bf673cc6..a81264417 100644 --- a/frontend/src/components/utilities/attemptLogin.ts +++ b/frontend/src/components/utilities/attemptLogin.ts @@ -39,7 +39,7 @@ const attemptLogin = async ({ const telemetry = new Telemetry().getInstance(); if (loginMode === LoginMode.ServerSide) { - console.log("attempting login with server side"); + console.log("Attempting login with server side..."); const data = await loginV3({ email, password, @@ -47,7 +47,7 @@ const attemptLogin = async ({ captchaToken }).catch((err) => { if (axios.isAxiosError(err) && err.response?.status === 400) { - if (err.response.data.error === "LegacyEncryptionScheme") { + if (err.response?.data?.error === "LegacyEncryptionScheme") { createNotification({ text: "Failed to login without SRP, attempting to authenticate with legacy SRP authentication.", type: "error" diff --git a/frontend/src/pages/auth/SignUpInvitePage/SignUpInvitePage.tsx b/frontend/src/pages/auth/SignUpInvitePage/SignUpInvitePage.tsx index 3bd8f6bc4..e05e0f2ad 100644 --- a/frontend/src/pages/auth/SignUpInvitePage/SignUpInvitePage.tsx +++ b/frontend/src/pages/auth/SignUpInvitePage/SignUpInvitePage.tsx @@ -1,6 +1,3 @@ -/* eslint-disable no-nested-ternary */ -/* eslint-disable @typescript-eslint/no-unused-vars */ - import { useState } from "react"; import { Helmet } from "react-helmet"; import { faXmark } from "@fortawesome/free-solid-svg-icons";