@toruslabs/customauth
Version:
CustomAuth login with torus to get user private key
67 lines (64 loc) • 2.32 kB
JavaScript
import { AUTH_CONNECTION } from '../utils/enums.js';
import DiscordHandler from './DiscordHandler.js';
import FacebookHandler from './FacebookHandler.js';
import GoogleHandler from './GoogleHandler.js';
import JwtHandler from './JwtHandler.js';
import MockLoginHandler from './MockLoginHandler.js';
import PasskeysHandler from './PasskeysHandler.js';
import TelegramHandler from './TelegramHandler.js';
import TwitchHandler from './TwitchHandler.js';
import Web3AuthPasswordlessHandler from './Web3AuthPasswordlessHandler.js';
const createHandler = params => {
const {
authConnectionId,
authConnection,
clientId,
jwtParams
} = params;
if (!authConnectionId || !authConnection || !clientId) {
throw new Error("Invalid params. Missing authConnectionId, authConnection or clientId");
}
const {
domain,
login_hint,
id_token,
access_token
} = jwtParams || {};
switch (authConnection) {
case AUTH_CONNECTION.GOOGLE:
return new GoogleHandler(params);
case AUTH_CONNECTION.TELEGRAM:
return new TelegramHandler(params);
case AUTH_CONNECTION.FACEBOOK:
return new FacebookHandler(params);
case AUTH_CONNECTION.TWITCH:
return new TwitchHandler(params);
case AUTH_CONNECTION.DISCORD:
return new DiscordHandler(params);
case AUTH_CONNECTION.EMAIL_PASSWORDLESS:
case AUTH_CONNECTION.SMS_PASSWORDLESS:
if (!login_hint) throw new Error("Invalid params. Missing login_hint for web3auth passwordless login");
return new Web3AuthPasswordlessHandler(params);
case AUTH_CONNECTION.APPLE:
case AUTH_CONNECTION.GITHUB:
case AUTH_CONNECTION.LINKEDIN:
case AUTH_CONNECTION.TWITTER:
case AUTH_CONNECTION.LINE:
case AUTH_CONNECTION.CUSTOM:
case AUTH_CONNECTION.REDDIT:
case AUTH_CONNECTION.WECHAT:
case AUTH_CONNECTION.KAKAO:
case AUTH_CONNECTION.FARCASTER:
case AUTH_CONNECTION.AUTHENTICATOR:
if (id_token || access_token) {
return new MockLoginHandler(params);
}
if (!domain) throw new Error("Invalid params for jwt login. Missing domain");
return new JwtHandler(params);
case AUTH_CONNECTION.PASSKEYS:
return new PasskeysHandler(params);
default:
throw new Error("Unsupported login type");
}
};
export { createHandler };