代码拉取完成,页面将自动刷新
'use strict';
const axios = require('axios');
const winston = require.main.require('winston');
const user = require.main.require('./src/user');
const meta = require.main.require('./src/meta');
const controllers = require('./lib/controllers');
const authentication = require.main.require('./src/controllers/authentication.js');
const plugin = {};
let settings;
plugin.init = async (params) => {
const { router, middleware } = params;
const routeHelpers = require.main.require('./src/routes/helpers');
/** GET PLUGIN SETTINGS */
settings = await meta.settings.get('code-autologin')
/** IF ENABLED, INITIALIZE AUTOLOGIN ROUTE */
if (settings['autologin-enabled'] === 'on') {
routeHelpers.setupPageRoute(router, '/autologin/:code', middleware, [autologinRoute], (req, res) => {
// res.sendStatus(200);
});
}
/** ADMIN PAGE FOR PLUGIN SETUP */
routeHelpers.setupAdminPageRoute(router, '/admin/plugins/code-autologin', middleware, [], controllers.renderAdminPage);
};
/*****************************************************************************
* AUTOLOGIN ROUTE
* Converts a CODE to a EMAIL by calling a custom endpoint
*************************************************************************** */
const autologinRoute = async (req, res, next) => {
const { code } = req.params;
const endpoint = settings['endpoint'];
let status;
let email;
/** CALL ENDPOINT WITH CODE AND EXPECT AN EXISTING EMAIL ADDRESS */
try {
const { data } = await axios.get(`${endpoint}?code=${code}`);
({ status, email } = data);
} catch (error) {
winston.info(`Autologin: request failed using code ${code}`);
return res.sendStatus(404);
}
/** CHECK FOR A VALID RESPONSE */
if (status !== 'ok' || email === '') {
return res.sendStatus(404);
}
/** TRIES TO AUTHENTICATE RETURNED EMAIL */
user.getUidByEmail(email, function (err, uid) {
if (!uid) {
return res.sendStatus(404);
}
authentication.doLogin(req, uid, function (err) {
if (err) {
res.statusCode = 500;
res.end('Error: ' + err);
return winston.error(`Autologin: Could not log in: ${err}`);
}
winston.info(`Autologin: successfully logged uid ${uid}, redirect to home`);
res.setHeader('Location', '/');
res.statusCode = 302;
res.end();
});
});
setImmediate(next);
}
/*****************************************************************************
* ADDS PLUGIN SETTINGS IN ADMIN DASHBOARD
*************************************************************************** */
plugin.addAdminNavigation = function (header, callback) {
header.plugins.push({
route: '/plugins/code-autologin',
icon: 'fa-unlock',
name: 'Code Autologin',
});
callback(null, header);
};
module.exports = plugin;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。