UNPKG

@toruslabs/customauth

Version:

CustomAuth login with torus to get user private key

61 lines (57 loc) 1.98 kB
'use strict'; var _defineProperty = require('@babel/runtime/helpers/defineProperty'); var httpHelpers = require('@toruslabs/http-helpers'); var deepmerge = require('deepmerge'); var AbstractLoginHandler = require('./AbstractLoginHandler.js'); class DiscordHandler extends AbstractLoginHandler { constructor(params) { super(params); _defineProperty(this, "RESPONSE_TYPE", "token"); _defineProperty(this, "SCOPE", "identify email"); this.setFinalUrl(); } setFinalUrl() { const finalUrl = new URL("https://discord.com/api/oauth2/authorize"); const clonedParams = JSON.parse(JSON.stringify(this.params.jwtParams || {})); const finalJwtParams = deepmerge({ state: this.state, response_type: this.RESPONSE_TYPE, client_id: this.params.clientId, redirect_uri: this.params.redirect_uri, scope: this.SCOPE }, clonedParams); Object.keys(finalJwtParams).forEach(key => { const localKey = key; if (finalJwtParams[localKey]) finalUrl.searchParams.append(localKey, finalJwtParams[localKey]); }); this.finalURL = finalUrl; } async getUserInfo(params) { const { accessToken } = params; const userInfo = await httpHelpers.get("https://discord.com/api/users/@me", { headers: { Authorization: `Bearer ${accessToken}` } }); const { id, avatar, email = "", username: name = "", discriminator = "" } = userInfo; const profileImage = avatar === null ? `https://cdn.discordapp.com/embed/avatars/${Number(discriminator) % 5}.png` : `https://cdn.discordapp.com/avatars/${id}/${avatar}.png?size=2048`; return { profileImage, name: `${name}#${discriminator}`, email, userId: id, authConnectionId: this.params.authConnectionId, authConnection: this.params.authConnection, groupedAuthConnectionId: this.params.groupedAuthConnectionId }; } } module.exports = DiscordHandler;