import auth0 from 'auth0-js' class Auth0JS { constructor(config) { this.config = config this.webAuth = new auth0.WebAuth({ domain: config.auth0.domain, clientID: config.auth0.clientID, redirectUri: config.baseURL, responseType: 'id_token', scope: 'openid profile email', }) } login(language) { if (language) { const uiLocales = language === 'zh' ? 'zh-CN' : language this.webAuth.authorize({ ui_locales: uiLocales, responseType: 'code', redirectUri: `${this.config.apiURL}/login/auth0` }) } else this.webAuth.authorize() } signup(lang) { const uiLocales = lang === 'zh' ? 'zh-CN' : lang if (uiLocales) this.webAuth.authorize({ ui_locales: uiLocales, screen_hint: 'signup', redirectUri: `${this.config.apiURL}/login/auth0` }) else webAuth.authorize({ screen_hint: 'signup', redirectUri: `${this.config.apiURL}/login/auth0` }) } logout() { this.webAuth.logout({ returnTo: this.config.baseURL, // Allowed logout URL listed in dashboard clientID: this.config.auth0.clientID, // Your client ID process.env.AUTH0_CLIENT_ID }) } checkSession() { return new Promise((resolve, reject) => { this.webAuth.checkSession({}, async (err, authResult) => { if (authResult) { resolve(true) } else { resolve(false) } }) }) } } export default function (context, inject) { const runtimeConfig = context.$config const auth0JS = new Auth0JS(runtimeConfig) inject('auth0JS', auth0JS) }