UNPKG

@alore/auth-react-native-ui

Version:
215 lines (204 loc) 4.77 kB
import { AuthProviderConfig } from '@alore/auth-react-native-sdk/src/types'; import { PasskeyCreateRequest, PasskeyCreateResult, PasskeyGetRequest, PasskeyGetResult, } from 'react-native-passkey/lib/typescript/PasskeyTypes'; import { authService } from '.'; import { Locale } from '../types'; export type SessionUser = { created_at: string; device: string; device_created_at: string; email: string; id: string; last_login: string | null; last_transaction: string | null; nickname: string; status: string; }; export interface AuthMachineContext { userId?: string; authProviderConfigs?: AuthProviderConfig; googleId?: string; sessionUser?: SessionUser; locale: Locale; sessionId?: string; CCRPublicKey?: { publicKey: PasskeyCreateRequest }; passkeyRegistrationResult?: PasskeyCreateResult; RCRPublicKey?: { publicKey: PasskeyGetRequest }; passkeyLoginResult?: PasskeyGetResult; salt?: string; error?: Error; registerUser?: { email: string; nickname: string; salt?: string; }; googleOtpCode?: string; googleUser?: { email: string; nickname: string }; authMethods?: { password?: boolean; passkey?: boolean; google?: boolean; }; userEmail?: string; isFirstLogin?: boolean; } interface Error { type: string; message: string; } export type AuthMachineEvents = | { type: 'INITIALIZE' } | { type: 'LOGOUT' } | { type: 'RESET_CONTEXT' } | { type: 'REGISTER_STEP' } | { type: 'LOGIN_STEP' } | { type: 'BACK' } | { type: 'NEXT' } | { type: 'INACTIVATE_USER' } | { type: 'START_PASSKEY_LOGIN'; payload?: { email: string; }; } | { type: 'USER_INPUT_PASSKEY_LOGIN'; payload: { RCRPublicKey: { publicKey: PasskeyGetRequest }; }; } | { type: 'FINISH_PASSKEY_LOGIN'; payload: { passkeyAuth: PasskeyGetResult; }; } | { type: 'START_PASSKEY_REGISTER'; payload: { device: string; email: string; nickname: string; }; } | { type: 'USER_INPUT_PASSKEY_REGISTER'; payload: { CCRPublicKey: { publicKey: PasskeyCreateRequest }; email: string; nickname: string; }; } | { type: 'FINISH_PASSKEY_REGISTER'; payload: { passkeyRegistration: PasskeyCreateResult; email: string; nickname: string; device: string; }; } | { type: 'FETCH_SALT'; payload: { email: string } } | { type: 'GOOGLE_LOGIN'; googleToken: string; } | { type: 'SEND_REGISTRATION_EMAIL'; payload: { email: string; nickname: string; isForgeClaim?: boolean; locale?: string; }; } | { type: 'RESEND_CODE'; payload: { email: string; nickname?: string; device?: string; passwordHash?: string; isForgeClaim?: boolean; locale?: string; }; } | { type: 'VERIFY_EMAIL'; payload: { secureCode: string } } | { type: 'COMPLETE_REGISTRATION'; payload: { email?: string; nickname?: string; passwordHash: string; device: string; }; } | { type: 'SEND_CODE'; payload: { email: string } } | { type: 'VERIFY_LOGIN'; payload: { email: string; device: string; passwordHash: string; isForgeClaim?: boolean; locale?: string; }; } | { type: 'VERIFY_EMAIL_2FA'; payload: { email: string; secureCode: string; passwordHash: string }; }; type AuthReturn = { data: { error?: string; salt?: string; sessionId?: string; }; }; export type ValidSession = { data: SessionUser; }; export type TwoFactorAuth = { id: string; name: string | null; twoFaTypeId: number; }; export type AuthMachineServices = { completeRegistration: ValidSession; confirmPassword: AuthReturn; registerUser: AuthReturn; retrieveSalt: AuthReturn; sendCode: AuthReturn; signIn: AuthReturn; verify2faCode: ValidSession; authenticateWebauthn: ValidSession; verifyDeviceCode: ValidSession; verifyEmail: AuthReturn; verifyLogin: AuthReturn; verifyEmail2fa: ValidSession; inactivateUser: ValidSession; sendConfirmationEmail: AuthReturn; googleLogin: { data: {} }; verifyGoogleLogin: ValidSession; fetchForgeData: { data: any }; healthCheck: { data: boolean }; verifyEmailEligibility: { data: {}; }; verifyClaimNftEmail2fa: { data: {}; }; startRegisterPasskey: { data: {}; }; startPasskeyAuth: { data: {}; }; finishPasskeyAuth: ValidSession; finishRegisterPasskey: ValidSession; }; export type AuthInstance = Awaited<ReturnType<typeof authService>>;