diff --git a/src/App.tsx b/src/App.tsx index 08cd435bc0..cd3bdec18f 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -69,7 +69,6 @@ const App = (props: AppProps): JSX.Element => { const { isDialogOpen } = useActionDialog(); const isOpen = isDialogOpen(ActionDialog.ModifyStorage); const { openBackupKeysDialog } = useDownloadBackupKeys(t); - const token = localStorageService.get(LocalStorageItem.UserToken); const newToken = localStorageService.get(LocalStorageItem.NewToken); const params = new URLSearchParams(window.location.search); const isVpnAuth = params.get('vpnAuth') === 'true'; @@ -105,11 +104,11 @@ const App = (props: AppProps): JSX.Element => { } }, [params]); - if ((token && skipSignupIfLoggedIn) || (token && navigationService.history.location.pathname !== '/new')) { + if ((newToken && skipSignupIfLoggedIn) || (newToken && navigationService.history.location.pathname !== '/new')) { /** * In case we receive a valid redirectUrl param, we return to that URL with the current token */ - const redirectUrl = authService.getRedirectUrl(params, token); + const redirectUrl = authService.getRedirectUrl(params, newToken); if (redirectUrl) { window.location.replace(redirectUrl); diff --git a/src/app/core/plugins/axios.plugin.ts b/src/app/core/plugins/axios.plugin.ts index 89acaed29a..54058cac51 100644 --- a/src/app/core/plugins/axios.plugin.ts +++ b/src/app/core/plugins/axios.plugin.ts @@ -11,7 +11,7 @@ const axiosPlugin: AppPlugin = { axios.interceptors.request.use((requestConfig) => { const tokenByWorkspace: { [key in Workspace]: string } = { - [Workspace.Individuals]: localStorageService.get(LocalStorageItem.UserToken) || '', + [Workspace.Individuals]: localStorageService.get(LocalStorageItem.NewToken) || '', [Workspace.Business]: localStorageService.get(LocalStorageItem.TeamToken) || '', }; diff --git a/src/app/core/types.ts b/src/app/core/types.ts index b15c0cc6a4..7fc484f415 100644 --- a/src/app/core/types.ts +++ b/src/app/core/types.ts @@ -132,14 +132,9 @@ export enum LocalStorageItem { Workspace = 'workspace', User = 'xUser', UserMnemonic = 'xMnemonic', - UserToken = 'xToken', Team = 'xTeam', TeamToken = 'xTokenTeam', NewToken = 'xNewToken', - Language = 'language', - ShowSummerBanner = 'showSummerBanner', - InvitedToken = 'xInvitedToken', - ResourcesToken = 'xResourcesToken', } export enum OrderDirection { diff --git a/src/app/store/slices/user/index.ts b/src/app/store/slices/user/index.ts index dab2d21e60..03f8f00a65 100644 --- a/src/app/store/slices/user/index.ts +++ b/src/app/store/slices/user/index.ts @@ -64,7 +64,7 @@ export const initializeUserThunk = createAsyncThunk< export const refreshUserThunk = createAsyncThunk( 'user/refresh', async ({ forceRefresh } = {}, { dispatch, getState }) => { - const userToken = localStorageService.get(LocalStorageItem.UserToken); + const userToken = localStorageService.get(LocalStorageItem.NewToken); const isExpired = isTokenExpired(userToken); const currentUser = getState().user.user; @@ -185,7 +185,7 @@ const updateUserEmailCredentialsThunk = createAsyncThunk< { state: RootState } >('user/updateUser', async (payload, { dispatch, getState }) => { const currentUser = getState().user.user as UserSettings; - const { newUserData, token, newToken } = payload; + const { newUserData, newToken } = payload; const user = { ...currentUser, @@ -193,7 +193,6 @@ const updateUserEmailCredentialsThunk = createAsyncThunk< bridgeUser: newUserData.email, username: newUserData.email, }; - localStorageService.set(LocalStorageItem.UserToken, token); localStorageService.set(LocalStorageItem.NewToken, newToken); dispatch(userActions.setUser(user)); }); @@ -219,7 +218,7 @@ export const userSlice = createSlice({ localStorageService.set(LocalStorageItem.User, JSON.stringify(action.payload)); }, setToken: (state: UserState, action: PayloadAction) => { - localStorageService.set(LocalStorageItem.UserToken, action.payload); + localStorageService.set(LocalStorageItem.NewToken, action.payload); }, resetState: (state: UserState) => { Object.assign(state, initialState); diff --git a/src/services/auth.service.test.ts b/src/services/auth.service.test.ts index 193f0fc9b1..cad02ae247 100644 --- a/src/services/auth.service.test.ts +++ b/src/services/auth.service.test.ts @@ -236,7 +236,6 @@ describe('logIn', () => { }; expect(result).toEqual({ - token: mockToken, newToken: mockNewToken, user: mockClearUser, mnemonic: mockMnemonic, @@ -247,7 +246,6 @@ describe('logIn', () => { const mockToken = 'test-token'; const mockNewToken = 'test-new-token'; const mockLoginType = 'web'; - const mockPassword = 'password123'; const mockMnemonic = 'until bonus summer risk chunk oyster census ability frown win pull steel measure employ rigid improve riot remind system earn inch broken chalk clip'; @@ -324,7 +322,6 @@ describe('logIn', () => { }; expect(result).toEqual({ - token: mockToken, newToken: mockNewToken, user: mockClearUser, mnemonic: mockMnemonic, @@ -405,7 +402,6 @@ describe('signUp', () => { expect(spy).toBeCalledWith(mockClearUser); expect(result).toEqual({ - token: mockToken, newToken: mockNewToken, user: { ...mockUser, @@ -515,7 +511,6 @@ describe('signUp', () => { expect(spy).toBeCalledWith(mockClearUser); expect(result).toEqual({ - token: mockToken, newToken: mockNewToken, user: { ...mockUser, diff --git a/src/services/auth.service.ts b/src/services/auth.service.ts index 7f89d26062..44fbbe2147 100644 --- a/src/services/auth.service.ts +++ b/src/services/auth.service.ts @@ -47,7 +47,6 @@ import vpnAuthService from './vpnAuth.service'; type ProfileInfo = { user: UserSettings; - token: string; newToken: string; mnemonic: string; }; @@ -180,7 +179,7 @@ export const doLogin = async ( return authClient .login(loginDetails, cryptoProvider) .then(async (data) => { - const { user, token, newToken } = data; + const { user, newToken } = data; const { privateKey: encryptedPrivateKey } = user; @@ -211,13 +210,11 @@ export const doLogin = async ( }, }; - localStorageService.set(LocalStorageItem.UserToken, token); localStorageService.set(LocalStorageItem.UserMnemonic, clearMnemonic); localStorageService.set(LocalStorageItem.NewToken, newToken); return { user: clearUser, - token: token, newToken, mnemonic: clearMnemonic, }; @@ -418,8 +415,7 @@ export const changePassword = async (newPassword: string, currentPassword: strin encryptVersion: StorageTypes.EncryptionVersion.Aes03, }) .then((res) => { - const { token, newToken } = res; - if (token) localStorageService.set(LocalStorageItem.UserToken, token); + const { newToken } = res; if (newToken) localStorageService.set(LocalStorageItem.NewToken, newToken); }) .catch((error) => { @@ -556,11 +552,10 @@ export const unblockAccount = (token: string): Promise => { export const signUp = async (params: SignUpParams) => { const { doSignUp, email, password, token, redeemCodeObject, dispatch } = params; - const { xUser, xToken, xNewToken, mnemonic } = await doSignUp(email, password, token); + const { xUser, xNewToken, mnemonic } = await doSignUp(email, password, token); localStorageService.clear(); - localStorageService.set(LocalStorageItem.UserToken, xToken); localStorageService.set(LocalStorageItem.UserMnemonic, mnemonic); localStorageService.set(LocalStorageItem.NewToken, xNewToken); @@ -588,12 +583,12 @@ export const signUp = async (params: SignUpParams) => { await trackSignUp(xUser.uuid); trackLead(xUser.email, xUser.userId); - return { token: xToken, user: xUser, mnemonic, newToken: xNewToken }; + return { user: xUser, mnemonic, newToken: xNewToken }; }; export const logIn = async (params: LogInParams): Promise => { const { email, password, twoFactorCode, dispatch, loginType = 'web' } = params; - const { token, newToken, user, mnemonic } = await doLogin(email, password, twoFactorCode, loginType); + const { newToken, user, mnemonic } = await doLogin(email, password, twoFactorCode, loginType); dispatch(userActions.setUser(user)); try { @@ -609,7 +604,7 @@ export const logIn = async (params: LogInParams): Promise => { userActions.setUser(user); - return { token, user, mnemonic, newToken }; + return { user, mnemonic, newToken }; }; export const authenticateUser = async (params: AuthenticateUserParams): Promise => { diff --git a/src/services/local-storage.service.test.ts b/src/services/local-storage.service.test.ts index 61fe2aca77..b4d28185e2 100644 --- a/src/services/local-storage.service.test.ts +++ b/src/services/local-storage.service.test.ts @@ -409,14 +409,9 @@ describe('Testing the local storage service', () => { const expectedKeysToRemove = [ LocalStorageItem.User, LocalStorageItem.UserMnemonic, - LocalStorageItem.UserToken, LocalStorageItem.NewToken, LocalStorageItem.TeamToken, LocalStorageItem.Workspace, - LocalStorageItem.Language, - LocalStorageItem.ShowSummerBanner, - LocalStorageItem.InvitedToken, - LocalStorageItem.ResourcesToken, STORAGE_KEYS.B2B_WORKSPACE, STORAGE_KEYS.WORKSPACE_CREDENTIALS, ...Object.values(STORAGE_KEYS.THEMES), diff --git a/src/views/Login/UniversalLinkSuccessView.tsx b/src/views/Login/UniversalLinkSuccessView.tsx index 5ab3a8c4d4..78aa7c4ba1 100644 --- a/src/views/Login/UniversalLinkSuccessView.tsx +++ b/src/views/Login/UniversalLinkSuccessView.tsx @@ -26,9 +26,7 @@ export default function UniversalLinkView(): JSX.Element { }, [user]); const getUniversalLinkAuthUrl = (user: UserSettings) => { - const token = localStorageService.get(LocalStorageItem.UserToken); const newToken = localStorageService.get(LocalStorageItem.NewToken); - if (!token) return AppView.Login; if (!newToken) return AppView.Login; let baseURL = DEEPLINK_SUCCESS_REDIRECT_BASE; @@ -36,9 +34,7 @@ export default function UniversalLinkView(): JSX.Element { baseURL = Buffer.from(redirectUri, 'base64').toString(); } - return `${baseURL}?mnemonic=${btoa(user.mnemonic)}&token=${btoa(token)}&newToken=${btoa( - newToken, - )}&privateKey=${btoa(user.privateKey)}`; + return `${baseURL}?mnemonic=${btoa(user.mnemonic)}&newToken=${btoa(newToken)}&privateKey=${btoa(user.privateKey)}`; }; // Should redirect to login in the useEffect diff --git a/src/views/Login/components/LogIn.tsx b/src/views/Login/components/LogIn.tsx index 66843a1137..e8467966ca 100644 --- a/src/views/Login/components/LogIn.tsx +++ b/src/views/Login/components/LogIn.tsx @@ -148,10 +148,13 @@ export default function LogIn(): JSX.Element { } }; - const handleSuccessfulAuth = (token: string, user: UserSettings, mnemonic: string): void => { + const handleSuccessfulAuth = (user: UserSettings, mnemonic: string): void => { const newToken = localStorageService.get(LocalStorageItem.NewToken); - if (isOAuthFlow && newToken) { + if (!newToken) { + throw new Error('No authentication token available'); + } + if (isOAuthFlow) { const success = handleOAuthSuccess(user, newToken); if (!success) { setIsLoggingIn(false); @@ -162,7 +165,7 @@ export default function LogIn(): JSX.Element { return; } - const redirectUrl = authService.getRedirectUrl(urlParams, token); + const redirectUrl = authService.getRedirectUrl(urlParams, newToken); if (redirectUrl && !isUniversalLinkMode && !isSharingInvitation) { globalThis.location.replace(redirectUrl); @@ -195,8 +198,8 @@ export default function LogIn(): JSX.Element { loginType, }; - const { token, user, mnemonic } = await authenticateUser(authParams); - handleSuccessfulAuth(token, user, mnemonic); + const { user, mnemonic } = await authenticateUser(authParams); + handleSuccessfulAuth(user, mnemonic); } else { setShowTwoFactor(true); setLoginError([]); diff --git a/src/views/Signup/components/SignupForm.tsx b/src/views/Signup/components/SignupForm.tsx index d390abbcc9..30f38ba68a 100644 --- a/src/views/Signup/components/SignupForm.tsx +++ b/src/views/Signup/components/SignupForm.tsx @@ -168,9 +168,9 @@ function SignUpForm(): JSX.Element { doSignUp: doRegister, }; - const { token: xToken, newToken: xNewToken } = await authenticateUser(authParams); + const { newToken: xNewToken } = await authenticateUser(authParams); - await redirectTheUserAfterRegistration(xToken, xNewToken, redeemCodeObject); + await redirectTheUserAfterRegistration(xNewToken, redeemCodeObject); } catch (err: unknown) { handleSubmitError(err); } finally { @@ -196,7 +196,6 @@ function SignUpForm(): JSX.Element { }; const redirectTheUserAfterRegistration = async ( - xToken: string, xNewToken: string, redeemCodeObject?: { code: string; @@ -205,7 +204,7 @@ function SignUpForm(): JSX.Element { ) => { const urlParams = new URLSearchParams(globalThis.location.search); const isUniversalLinkMode = urlParams.get('universalLink') == 'true'; - const redirectUrl = authService.getRedirectUrl(urlParams, xToken); + const redirectUrl = authService.getRedirectUrl(urlParams, xNewToken); const isVPNAuth = urlParams.get('vpnAuth'); handleVPNAuth(isVPNAuth, xNewToken); diff --git a/src/views/Signup/utils/guestSignupOnSubmit.test.ts b/src/views/Signup/utils/guestSignupOnSubmit.test.ts index 2daad372e8..3a81f4eba1 100644 --- a/src/views/Signup/utils/guestSignupOnSubmit.test.ts +++ b/src/views/Signup/utils/guestSignupOnSubmit.test.ts @@ -93,7 +93,6 @@ describe('guestSignupOnSubmit', () => { 'recaptcha-token', ); expect(localStorageService.clear).toHaveBeenCalled(); - expect(localStorageService.set).toHaveBeenCalledWith(LocalStorageItem.UserToken, 'access-token'); expect(localStorageService.set).toHaveBeenCalledWith(LocalStorageItem.UserMnemonic, 'test mnemonic'); expect(localStorageService.set).toHaveBeenCalledWith(LocalStorageItem.NewToken, 'refresh-token'); expect(parseAndDecryptUserKeys).toHaveBeenCalledWith(mockRegistrationResponse.xUser, 'password123'); diff --git a/src/views/Signup/utils/guestSignupOnSubmit.ts b/src/views/Signup/utils/guestSignupOnSubmit.ts index b7043408b7..512406f82c 100644 --- a/src/views/Signup/utils/guestSignupOnSubmit.ts +++ b/src/views/Signup/utils/guestSignupOnSubmit.ts @@ -41,16 +41,10 @@ export const guestSignupOnSubmit = async ({ try { const { email, password, token } = formData; - const { xUser, xToken, xNewToken, mnemonic } = await doRegisterPreCreatedUser( - email, - password, - invitationId, - token || '', - ); + const { xUser, xNewToken, mnemonic } = await doRegisterPreCreatedUser(email, password, invitationId, token || ''); localStorageService.clear(); - localStorageService.set(LocalStorageItem.UserToken, xToken); localStorageService.set(LocalStorageItem.UserMnemonic, mnemonic); localStorageService.set(LocalStorageItem.NewToken, xNewToken);