|
@@ -42,7 +42,7 @@ OAuth.registerService('oidc', 2, null, function (query) {
|
|
|
|
|
|
if (userinfo.ocs) userinfo = userinfo.ocs.data; // Nextcloud hack
|
|
|
if (userinfo.metadata) userinfo = userinfo.metadata // Openshift hack
|
|
|
- if (debug) console.log('XXX: userinfo:', userinfo);
|
|
|
+ if (debug) console.log('IIII: userinfo:', userinfo);
|
|
|
|
|
|
serviceData.id = userinfo[process.env.OAUTH2_ID_MAP]; // || userinfo["id"];
|
|
|
serviceData.username = userinfo[process.env.OAUTH2_USERNAME_MAP]; // || userinfo["uid"];
|
|
@@ -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,
|
|
@@ -304,6 +305,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);
|
|
|
};
|