const crypto = require('crypto'); const cheerio = require('cheerio'); const {defaultPermissions, defaultSettings} = require('../util/default.json'); const Wiki = require('../util/wiki.js'); const Lang = require('./i18n.js'); const dashboardLang = new Lang(defaultSettings.lang); const {got, settingsData, sendMsg, createNotice, hasPerm} = require('./util.js'); const DiscordOauth2 = require('discord-oauth2'); const oauth = new DiscordOauth2( { clientId: process.env.bot, clientSecret: process.env.secret, redirectUri: process.env.dashboard } ); const file = require('fs').readFileSync('./dashboard/login.html'); /** * Let a user login * @param {import('http').ServerResponse} res - The server response * @param {String} [state] - The user state * @param {String} [action] - The action the user made */ function dashboard_login(res, state, action) { if ( state && settingsData.has(state) ) { if ( !action ) { res.writeHead(302, {Location: '/'}); return res.end(); } settingsData.delete(state); } var $ = cheerio.load(file); let responseCode = 200; let prompt = 'none'; if ( process.env.READONLY ) createNotice($, 'readonly', dashboardLang); if ( action ) createNotice($, action, dashboardLang); if ( action === 'unauthorized' ) $('head').append( $('