const config = require("../config.js") ,Slack = require("../src/slack.js").Slack ,slackManager = require("../src/slackManager.js").SlackManager ,accountManager = require("../src/accounts.js").accountManager ,templates = require('./_templates.js'); function checkTokens(service, req, cb) { switch (service) { case "slack": if (req.urlObj.queryTokens.code) { Slack.getUserMail(req.urlObj.queryTokens.code, config.login.slack.redirect_uri, (email) => { cb(email); }); } else { cb(null); } break; default: cb(null); break; } } function makeLoginPage() { var slackUri = "https://slack.com/oauth/authorize" +"?client_id=" +config.login.slack.clientId +"&scope=" +slackManager.getAuthScope().join(',') +"&redirect_uri=" +config.login.slack.redirect_uri; return templates.header("Mimou - login", ["login.css"]) +`
` +templates.footer(); } module.exports.match = function(url) { if (url.urlParts.length === 1) { return true; } else if (url.urlParts.length === 2 && Object.keys(config.login).indexOf(url.urlParts[1]) >= 0) { return true; } return false; }; module.exports.exec = function(req, res) { if (!req.urlObj.urlParts[1]) { res.end(makeLoginPage()); } else { checkTokens(req.urlObj.urlParts[1], req, (email) => { if (email) { req.account = accountManager.fromSlackEmail(email) req.session = sessionManager.lazyForRequest(req); req.session.setSlackToken(req.reqT, token); res.writeHeader("302", { Location: config.rootUrl ,"Set-Cookie": "sessID="+req.session.sessId }); sessionManager.saveSession(req.session); res.end(); } else { res.end(makeLoginPage()); } }); } }; module.exports.needLogin = false;