Răsfoiți Sursa

Merge pull request #5098 from scout-ch/feature/default-board-for-users

Proposal: default board for users
Lauri Ojansivu 1 an în urmă
părinte
comite
65a231a040
1 a modificat fișierele cu 23 adăugiri și 0 ștergeri
  1. 23 0
      packages/wekan-oidc/oidc_server.js

+ 23 - 0
packages/wekan-oidc/oidc_server.js

@@ -108,6 +108,7 @@ OAuth.registerService('oidc', 2, null, function (query) {
   // Fix OIDC login loop for integer user ID. Thanks to danielkaiser.
   // https://github.com/wekan/wekan/issues/4795
   Meteor.call('groupRoutineOnLogin',serviceData, ""+serviceData.id);
+  Meteor.call('boardRoutineOnLogin',serviceData, ""+serviceData.id);
 
   return {
     serviceData: serviceData,
@@ -305,6 +306,28 @@ Meteor.methods({
   }
 });
 
+Meteor.methods({
+  'boardRoutineOnLogin': function(info, oidcUserId)
+  {
+    check(info, Object);
+    check(oidcUserId, String);
+
+    const defaultBoardId = process.env.DEFAULT_BOARD_ID || false;
+
+    if (defaultBoardId)
+    {
+      const board = Boards.findOne(defaultBoardId)
+      const user = Users.findOne({ 'services.oidc.id': oidcUserId })
+      const memberIndex = _.pluck(board.members, 'userId').indexOf(user._id);
+
+      if(board && memberIndex < 0)
+      {
+        board.addMember(user._id)
+      }
+    }
+  }
+});
+
 Oidc.retrieveCredential = function (credentialToken, credentialSecret) {
   return OAuth.retrieveCredential(credentialToken, credentialSecret);
 };