mirror of
https://github.com/wekan/wekan.git
synced 2026-02-13 03:34:20 +01:00
Migrate wekan-oidc to async API for Meteor 3.0
This commit is contained in:
parent
eb0c9ac1e6
commit
0fcdf47545
3 changed files with 25 additions and 24 deletions
|
|
@ -57,7 +57,7 @@ module.exports = {
|
|||
// isAdmin: [true, false] -> admin group becomes admin in wekan
|
||||
// isOrganization: [true, false] -> creates org and adds to user
|
||||
// displayName: "string"
|
||||
addGroupsWithAttributes: function (user, groups){
|
||||
addGroupsWithAttributes: async function (user, groups){
|
||||
teamArray=[];
|
||||
orgArray=[];
|
||||
isAdmin = [];
|
||||
|
|
@ -76,7 +76,7 @@ addGroupsWithAttributes: function (user, groups){
|
|||
isAdmin.push(group.isAdmin || false);
|
||||
if (isOrg)
|
||||
{
|
||||
org = Org.findOne({"orgDisplayName": group.displayName});
|
||||
org = await Org.findOneAsync({"orgDisplayName": group.displayName});
|
||||
if(org)
|
||||
{
|
||||
if(contains(orgs, org, "org"))
|
||||
|
|
@ -89,7 +89,7 @@ addGroupsWithAttributes: function (user, groups){
|
|||
else if(forceCreate)
|
||||
{
|
||||
createObject(initAttributes, "Org");
|
||||
org = Org.findOne({'orgDisplayName': group.displayName});
|
||||
org = await Org.findOneAsync({'orgDisplayName': group.displayName});
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -102,7 +102,7 @@ addGroupsWithAttributes: function (user, groups){
|
|||
else
|
||||
{
|
||||
//start team routine
|
||||
team = Team.findOne({"teamDisplayName": group.displayName});
|
||||
team = await Team.findOneAsync({"teamDisplayName": group.displayName});
|
||||
if (team)
|
||||
{
|
||||
if(contains(teams, team, "team"))
|
||||
|
|
@ -115,7 +115,7 @@ addGroupsWithAttributes: function (user, groups){
|
|||
else if(forceCreate)
|
||||
{
|
||||
createObject(initAttributes, "Team");
|
||||
team = Team.findOne({'teamDisplayName': group.displayName});
|
||||
team = await Team.findOneAsync({'teamDisplayName': group.displayName});
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -129,28 +129,28 @@ addGroupsWithAttributes: function (user, groups){
|
|||
// hence user will get admin privileges in wekan
|
||||
// E.g. Admin rights will be withdrawn if no group in oidc provider has isAdmin set to true
|
||||
|
||||
users.update({ _id: user._id }, { $set: {isAdmin: isAdmin.some(i => (i === true))}});
|
||||
await users.updateAsync({ _id: user._id }, { $set: {isAdmin: isAdmin.some(i => (i === true))}});
|
||||
teams = {'teams': {'$each': teamArray}};
|
||||
orgs = {'orgs': {'$each': orgArray}};
|
||||
users.update({ _id: user._id }, { $push: teams});
|
||||
users.update({ _id: user._id }, { $push: orgs});
|
||||
await users.updateAsync({ _id: user._id }, { $push: teams});
|
||||
await users.updateAsync({ _id: user._id }, { $push: orgs});
|
||||
// remove temporary oidc data from user collection
|
||||
users.update({ _id: user._id }, { $unset: {"services.oidc.groups": []}});
|
||||
await users.updateAsync({ _id: user._id }, { $unset: {"services.oidc.groups": []}});
|
||||
|
||||
return;
|
||||
},
|
||||
|
||||
changeUsername: function(user, name)
|
||||
changeUsername: async function(user, name)
|
||||
{
|
||||
username = {'username': name};
|
||||
if (user.username != username) users.update({ _id: user._id }, { $set: username});
|
||||
if (user.username != username) await users.updateAsync({ _id: user._id }, { $set: username});
|
||||
},
|
||||
changeFullname: function(user, name)
|
||||
changeFullname: async function(user, name)
|
||||
{
|
||||
username = {'profile.fullname': name};
|
||||
if (user.username != username) users.update({ _id: user._id }, { $set: username});
|
||||
if (user.username != username) await users.updateAsync({ _id: user._id }, { $set: username});
|
||||
},
|
||||
addEmail: function(user, email)
|
||||
addEmail: async function(user, email)
|
||||
{
|
||||
user_email = user.emails || [];
|
||||
var contained = false;
|
||||
|
|
@ -173,7 +173,7 @@ addEmail: function(user, email)
|
|||
{
|
||||
user_email.unshift({'address': email, 'verified': true});
|
||||
user_email = {'emails': user_email};
|
||||
users.update({ _id: user._id }, { $set: user_email});
|
||||
await users.updateAsync({ _id: user._id }, { $set: user_email});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -295,24 +295,24 @@ var getTokenContent = function (token) {
|
|||
return content;
|
||||
}
|
||||
Meteor.methods({
|
||||
'groupRoutineOnLogin': function(info, userId)
|
||||
'groupRoutineOnLogin': async function(info, userId)
|
||||
{
|
||||
check(info, Object);
|
||||
check(userId, String);
|
||||
var propagateOidcData = process.env.PROPAGATE_OIDC_DATA || false;
|
||||
if (propagateOidcData) {
|
||||
users= Meteor.users;
|
||||
user = users.findOne({'services.oidc.id': userId});
|
||||
user = await users.findOneAsync({'services.oidc.id': userId});
|
||||
|
||||
if(user) {
|
||||
//updates/creates Groups and user admin privileges accordingly if not undefined
|
||||
if (info.groups) {
|
||||
addGroupsWithAttributes(user, info.groups);
|
||||
await addGroupsWithAttributes(user, info.groups);
|
||||
}
|
||||
|
||||
if(info.email) addEmail(user, info.email);
|
||||
if(info.fullname) changeFullname(user, info.fullname);
|
||||
if(info.username) changeUsername(user, info.username);
|
||||
if(info.email) await addEmail(user, info.email);
|
||||
if(info.fullname) await changeFullname(user, info.fullname);
|
||||
if(info.username) await changeUsername(user, info.username);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -328,8 +328,9 @@ Meteor.methods({
|
|||
const defaultBoardId = defaultBoardParams.shift()
|
||||
if (!defaultBoardId) return
|
||||
|
||||
const board = Boards.findOne(defaultBoardId)
|
||||
const userId = Users.findOne({ 'services.oidc.id': oidcUserId })?._id
|
||||
const board = await Boards.findOneAsync(defaultBoardId)
|
||||
const user = await Users.findOneAsync({ 'services.oidc.id': oidcUserId })
|
||||
const userId = user?._id
|
||||
const memberIndex = _.pluck(board?.members, 'userId').indexOf(userId);
|
||||
if(!board || !userId || memberIndex > -1) return
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
Package.describe({
|
||||
summary: "OpenID Connect (OIDC) flow for Meteor",
|
||||
version: "1.0.12",
|
||||
version: "1.1.0",
|
||||
name: "wekan-oidc",
|
||||
git: "https://github.com/wekan/wekan-oidc.git",
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue