| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- 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"])
- +`<div class="services"><h1>Login</h1>`
- +`<a href="${slackUri}"><img src="https://platform.slack-edge.com/img/sign_in_with_slack.png" srcset="https://platform.slack-edge.com/img/sign_in_with_slack.png 1x, https://platform.slack-edge.com/img/sign_in_with_slack@2x.png 2x" /></a>`
- +`</div>`
- +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;
|