Jelajahi Sumber

ensure to be able to disconnect from Slack

Yuki Takei 8 tahun lalu
induk
melakukan
deee04cb22
3 mengubah file dengan 18 tambahan dan 0 penghapusan
  1. 14 0
      lib/routes/admin.js
  2. 1 0
      lib/routes/index.js
  3. 3 0
      lib/views/admin/notification.html

+ 14 - 0
lib/routes/admin.js

@@ -218,6 +218,20 @@ module.exports = function(crowi, app) {
     });
   };
 
+  // app.post('/admin/notification/slackSetting/disconnect');
+  actions.notification.disconnectFromSlack = function(req, res) {
+    const config = crowi.getConfig();
+    const slack = crowi.slack;
+
+    Config.updateNamespaceByArray('notification', {'slack:token': ''}, function(err, config) {
+      Config.updateConfigCache('notification', config);
+      req.flash('successMessage', ['Successfully Disconnected!']);
+
+      slack.createBot(true);
+      return res.redirect('/admin/notification');
+    });
+  };
+
   actions.search = {};
   actions.search.index = function(req, res) {
     var search = crowi.getSearcher();

+ 1 - 0
lib/routes/index.js

@@ -66,6 +66,7 @@ module.exports = function(crowi, app) {
   app.get('/admin/notification'              , loginRequired(crowi, app) , middleware.adminRequired() , admin.notification.index);
   app.post('/admin/notification/slackSetting', loginRequired(crowi, app) , middleware.adminRequired() , csrf, form.admin.slackSetting, admin.notification.slackSetting);
   app.get('/admin/notification/slackAuth'    , loginRequired(crowi, app) , middleware.adminRequired() , admin.notification.slackAuth);
+  app.get('/admin/notification/slackSetting/disconnect', loginRequired(crowi, app) , middleware.adminRequired() , admin.notification.disconnectFromSlack);
   app.post('/_api/admin/notification.add'    , loginRequired(crowi, app) , middleware.adminRequired() , csrf, admin.api.notificationAdd);
   app.post('/_api/admin/notification.remove' , loginRequired(crowi, app) , middleware.adminRequired() , csrf, admin.api.notificationRemove);
   app.get('/_api/admin/users.search'         , loginRequired(crowi, app) , middleware.adminRequired() , admin.api.usersSearch);

+ 3 - 0
lib/views/admin/notification.html

@@ -82,6 +82,9 @@
       <div class="text-center">
         {% if hasSlackToken %}
         <p>Crowi and Slack is already <strong>connected</strong>. You can re-connect to refresh and overwirte the token with your Slack account.</p>
+        <a class="btn btn-warning" href="/admin/notification/slackSetting/disconnect">
+          <i class="fa fa-slack"></i> Disconnect from Slack
+        </a>
         <a class="btn btn-default" href="{{ slackAuthUrl }}" target="_blank">
           <i class="fa fa-slack"></i> Reconnect to Slack
         </a>