diff --git a/packages/backend/server/src/core/auth/controller.ts b/packages/backend/server/src/core/auth/controller.ts index 3f483274dc..34a4693c7b 100644 --- a/packages/backend/server/src/core/auth/controller.ts +++ b/packages/backend/server/src/core/auth/controller.ts @@ -299,6 +299,7 @@ export class AuthController { res.send({ id: user.id }); } + @UseNamedGuard('version') @Throttle('default', { limit: 1200 }) @Public() @Get('/session') diff --git a/packages/frontend/core/src/components/sign-in/sign-in.tsx b/packages/frontend/core/src/components/sign-in/sign-in.tsx index ec80f1a1c5..9a9f33e99b 100644 --- a/packages/frontend/core/src/components/sign-in/sign-in.tsx +++ b/packages/frontend/core/src/components/sign-in/sign-in.tsx @@ -134,12 +134,13 @@ export const SignInStep = ({ }); } } - } catch (err) { + } catch (err: any) { console.error(err); // TODO(@eyhn): better error handling notify.error({ - title: 'Failed to send email. Please try again.', + title: 'Failed to sign in', + message: err.message, }); } diff --git a/packages/frontend/core/src/modules/cloud/entities/session.ts b/packages/frontend/core/src/modules/cloud/entities/session.ts index ae5e50072f..701e67b6fd 100644 --- a/packages/frontend/core/src/modules/cloud/entities/session.ts +++ b/packages/frontend/core/src/modules/cloud/entities/session.ts @@ -12,6 +12,7 @@ import { isEqual } from 'lodash-es'; import { EMPTY, mergeMap } from 'rxjs'; import { validateAndReduceImage } from '../../../utils/reduce-image'; +import { BackendError } from '../error'; import type { AccountProfile, AuthStore } from '../stores/auth'; export interface AuthSessionInfo { @@ -94,22 +95,32 @@ export class AuthSession extends Entity { ); private async getSession(): Promise { - const session = await this.store.fetchSession(); + try { + const session = await this.store.fetchSession(); - if (session?.user) { - const account = { - id: session.user.id, - email: session.user.email, - label: session.user.name, - avatar: session.user.avatarUrl, - info: session.user, - }; - const result = { - account, - }; - return result; - } else { - return null; + if (session?.user) { + const account = { + id: session.user.id, + email: session.user.email, + label: session.user.name, + avatar: session.user.avatarUrl, + info: session.user, + }; + const result = { + account, + }; + return result; + } else { + return null; + } + } catch (e) { + if ( + e instanceof BackendError && + e.originError.name === 'UNSUPPORTED_CLIENT_VERSION' + ) { + return null; + } + throw e; } }