BREAKING - feat(auth): refactor tokens logic & enhance email verification flow (#13487)

- Replaced `getAuthTokensFromLoginToken` with
`getAccessTokensFromLoginToken` for clarity.
- Introduced `getWorkspaceAgnosticTokenFromEmailVerificationToken`.
- Extended mutation inputs to include `locale` and
`verifyEmailNextPath`.
- Added email verification check and sending to various handlers.
- Updated GraphQL types and hooks to reflect these changes.


Fix #13412

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
Co-authored-by: Félix Malfait <felix@twenty.com>
This commit is contained in:
Antoine Moreaux
2025-07-31 12:00:59 +02:00
committed by GitHub
parent 463e2e89c8
commit 00d12e854a
53 changed files with 594 additions and 306 deletions
@@ -7,9 +7,9 @@ export const AUTH_TOKEN = gql`
}
`;
export const AUTH_TOKENS = gql`
fragment AuthTokensFragment on AuthTokenPair {
accessToken {
export const AUTH_TOKEN_PAIR = gql`
fragment AuthTokenPairFragment on AuthTokenPair {
accessOrWorkspaceAgnosticToken {
...AuthTokenFragment
}
refreshToken {
@@ -1,10 +1,10 @@
import { gql } from '@apollo/client';
export const GET_AUTH_TOKENS_FROM_LOGIN_TOKEN = gql`
mutation GetAuthTokensFromLoginToken($loginToken: String!, $origin: String!) {
mutation getAuthTokensFromLoginToken($loginToken: String!, $origin: String!) {
getAuthTokensFromLoginToken(loginToken: $loginToken, origin: $origin) {
tokens {
...AuthTokensFragment
...AuthTokenPairFragment
}
}
}
@@ -14,7 +14,7 @@ export const GET_AUTH_TOKENS_FROM_OTP = gql`
origin: $origin
) {
tokens {
...AuthTokensFragment
...AuthTokenPairFragment
}
}
}
@@ -0,0 +1,22 @@
import { gql } from '@apollo/client';
export const GET_WORKSPACE_AGNOSTIC_TOKEN_FROM_EMAIL_VERIFICATION_TOKEN = gql`
mutation GetWorkspaceAgnosticTokenFromEmailVerificationToken(
$emailVerificationToken: String!
$email: String!
$captchaToken: String
) {
getWorkspaceAgnosticTokenFromEmailVerificationToken(
emailVerificationToken: $emailVerificationToken
email: $email
captchaToken: $captchaToken
) {
availableWorkspaces {
...AvailableWorkspacesFragment
}
tokens {
...AuthTokenPairFragment
}
}
}
`;
@@ -4,7 +4,7 @@ export const RENEW_TOKEN = gql`
mutation RenewToken($appToken: String!) {
renewToken(appToken: $appToken) {
tokens {
...AuthTokensFragment
...AuthTokenPairFragment
}
}
}
@@ -7,7 +7,7 @@ export const SIGN_IN = gql`
...AvailableWorkspacesFragment
}
tokens {
...AuthTokensFragment
...AuthTokenPairFragment
}
}
}
@@ -1,13 +1,25 @@
import { gql } from '@apollo/client';
export const SIGN_UP = gql`
mutation SignUp($email: String!, $password: String!, $captchaToken: String) {
signUp(email: $email, password: $password, captchaToken: $captchaToken) {
mutation SignUp(
$email: String!
$password: String!
$captchaToken: String
$locale: String
$verifyEmailRedirectPath: String
) {
signUp(
email: $email
password: $password
captchaToken: $captchaToken
locale: $locale
verifyEmailRedirectPath: $verifyEmailRedirectPath
) {
availableWorkspaces {
...AvailableWorkspacesFragment
}
tokens {
...AuthTokensFragment
...AuthTokenPairFragment
}
}
}
@@ -9,7 +9,7 @@ export const SIGN_UP_IN_WORKSPACE = gql`
$captchaToken: String
$workspaceId: String
$locale: String
$verifyEmailNextPath: String
$verifyEmailRedirectPath: String
) {
signUpInWorkspace(
email: $email
@@ -19,7 +19,7 @@ export const SIGN_UP_IN_WORKSPACE = gql`
captchaToken: $captchaToken
workspaceId: $workspaceId
locale: $locale
verifyEmailNextPath: $verifyEmailNextPath
verifyEmailRedirectPath: $verifyEmailRedirectPath
) {
loginToken {
...AuthTokenFragment