B Thibault 8 lat temu
rodzic
commit
fa31e91aaa
3 zmienionych plików z 20 dodań i 2 usunięć
  1. 3 1
      srv/src/httpServ.js
  2. 2 1
      srv/src/session.js
  3. 15 0
      srv/src/slack.js

+ 3 - 1
srv/src/httpServ.js

@@ -76,6 +76,7 @@ Server.prototype.onRequest = function(req, res) {
     req.reqT = Date.now();
     req.cookies = Server.parseCookies(req);
     req.session = sessionManager.forRequest(req);
+    req.account = req.session ? AccountManager.forId(req.session.accountId);
     req.urlObj = new Url(req.url);
 
     if (req.urlObj.isTemplate() && req.urlObj.template.needLogin === false) {
@@ -85,8 +86,9 @@ Server.prototype.onRequest = function(req, res) {
         return;
     } else if (!req.session || !req.session.slackToken) {
         if (req.urlObj.queryTokens.code) {
-            Slack.getOauthToken(req.urlObj.queryTokens.code, config.rootUrl, (token) => {
+            Slack.getUserMail(req.urlObj.queryTokens.code, config.rootUrl, (token) => {
                 if (token) {
+                    req.account = AccountManager.fromSlackEmail()
                     req.session = sessionManager.lazyForRequest(req);
                     req.session.setSlackToken(req.reqT, token);
                     res.writeHeader("302", {

+ 2 - 1
srv/src/session.js

@@ -9,8 +9,9 @@ function SessionManager() {
 
 SessionManager.defaultTtl = 60 * 60 * 24; // keep sessions 24h
 
-function Session(reqT, sessId) {
+function Session(reqT, sessId, accountId) {
     this.sessId = sessId;
+    this.accountId = accountId;
     this.slackToken = null;
     this.modifiedAt = reqT;
 }

+ 15 - 0
srv/src/slack.js

@@ -313,6 +313,21 @@ Slack.prototype.close = function() {
     }
 };
 
+Slack.getUserMail = function(code, redirectUri, cb) {
+    httpsRequest(SLACK_ENDPOINT+GETAPI.oauth
+        +"?client_id=" +config.services.Slack.clientId
+        +"&client_secret=" +config.services.Slack.clientSecret
+        +"&redirect_uri=" +redirectUri
+        +"&code=" +code,
+    (status, resp) => {
+        if (status === 200 && resp.ok) {
+            cb(resp);
+        } else {
+            cb(null);
+        }
+    });
+};
+
 Slack.getOauthToken = function(code, redirectUri, cb) {
     httpsRequest(SLACK_ENDPOINT+GETAPI.oauth
         +"?client_id=" +config.services.Slack.clientId