mirror of
https://github.com/plankanban/planka.git
synced 2025-07-19 05:09:43 +02:00
feat: Webhooks configuration, all events support, refactoring
This commit is contained in:
parent
193daf6cfb
commit
87683fe523
96 changed files with 1280 additions and 509 deletions
|
@ -27,6 +27,10 @@ module.exports = {
|
|||
custom: valuesValidator,
|
||||
required: true,
|
||||
},
|
||||
actorUser: {
|
||||
type: 'ref',
|
||||
required: true,
|
||||
},
|
||||
request: {
|
||||
type: 'ref',
|
||||
},
|
||||
|
@ -84,21 +88,12 @@ module.exports = {
|
|||
);
|
||||
});
|
||||
|
||||
/* The user could be created manually by an user or via OIDC. We hijack the id field, so one can differentiate between the two on the webhook side. */
|
||||
let initiator;
|
||||
if (inputs.request && inputs.request.currentUser) {
|
||||
initiator = inputs.request.currentUser;
|
||||
} else {
|
||||
initiator = {
|
||||
id: 'oidc',
|
||||
};
|
||||
}
|
||||
|
||||
await sails.helpers.utils.sendWebhook.with({
|
||||
event: 'USER_CREATE',
|
||||
data: { ...user, password: undefined },
|
||||
projectId: '',
|
||||
user: initiator,
|
||||
sails.helpers.utils.sendWebhooks.with({
|
||||
event: 'userCreate',
|
||||
data: {
|
||||
item: user,
|
||||
},
|
||||
user: inputs.actorUser,
|
||||
});
|
||||
|
||||
return user;
|
||||
|
|
|
@ -4,6 +4,10 @@ module.exports = {
|
|||
type: 'ref',
|
||||
required: true,
|
||||
},
|
||||
actorUser: {
|
||||
type: 'ref',
|
||||
required: true,
|
||||
},
|
||||
request: {
|
||||
type: 'ref',
|
||||
},
|
||||
|
@ -60,11 +64,12 @@ module.exports = {
|
|||
);
|
||||
});
|
||||
|
||||
await sails.helpers.utils.sendWebhook.with({
|
||||
event: 'USER_DELETE',
|
||||
data: { ...user, password: undefined },
|
||||
projectId: '',
|
||||
user: inputs.request.currentUser,
|
||||
sails.helpers.utils.sendWebhooks.with({
|
||||
event: 'userDelete',
|
||||
data: {
|
||||
item: user,
|
||||
},
|
||||
user: inputs.actorUser,
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -88,8 +88,11 @@ module.exports = {
|
|||
|
||||
// Otherwise, create a new user.
|
||||
if (!user) {
|
||||
user = await sails.helpers.users
|
||||
.createOne(values)
|
||||
user = await sails.helpers.users.createOne
|
||||
.with({
|
||||
values,
|
||||
actorUser: User.OIDC,
|
||||
})
|
||||
.intercept('usernameAlreadyInUse', 'usernameAlreadyInUse');
|
||||
}
|
||||
|
||||
|
@ -115,8 +118,12 @@ module.exports = {
|
|||
}
|
||||
|
||||
if (Object.keys(updateValues).length > 0) {
|
||||
user = await sails.helpers.users
|
||||
.updateOne(user, updateValues, {}) // FIXME: hack for last parameter
|
||||
user = await sails.helpers.users.updateOne
|
||||
.with({
|
||||
record: user,
|
||||
values: updateValues,
|
||||
actorUser: User.OIDC,
|
||||
})
|
||||
.intercept('emailAlreadyInUse', 'emailAlreadyInUse')
|
||||
.intercept('usernameAlreadyInUse', 'usernameAlreadyInUse');
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ module.exports = {
|
|||
custom: valuesValidator,
|
||||
required: true,
|
||||
},
|
||||
user: {
|
||||
actorUser: {
|
||||
type: 'ref',
|
||||
required: true,
|
||||
},
|
||||
|
@ -62,14 +62,14 @@ module.exports = {
|
|||
let isOnlyPasswordChange = false;
|
||||
|
||||
if (!_.isUndefined(values.password)) {
|
||||
if (Object.keys(values).length === 1) {
|
||||
isOnlyPasswordChange = true;
|
||||
}
|
||||
|
||||
Object.assign(values, {
|
||||
password: bcrypt.hashSync(values.password, 10),
|
||||
passwordChangedAt: new Date().toISOString(),
|
||||
});
|
||||
|
||||
if (Object.keys(values).length === 1) {
|
||||
isOnlyPasswordChange = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (values.username) {
|
||||
|
@ -118,7 +118,7 @@ module.exports = {
|
|||
inputs.request,
|
||||
);
|
||||
|
||||
if (user.id === inputs.user.id && inputs.request && inputs.request.isSocket) {
|
||||
if (user.id === inputs.actorUser.id && inputs.request && inputs.request.isSocket) {
|
||||
const tempRoom = uuid();
|
||||
|
||||
sails.sockets.addRoomMembersToRooms(`@user:${user.id}`, tempRoom, () => {
|
||||
|
@ -153,14 +153,15 @@ module.exports = {
|
|||
inputs.request,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
await sails.helpers.utils.sendWebhook.with({
|
||||
event: 'USER_UPDATE',
|
||||
data: { ...user, password: undefined },
|
||||
projectId: '',
|
||||
user: inputs.request.currentUser,
|
||||
});
|
||||
sails.helpers.utils.sendWebhooks.with({
|
||||
event: 'userUpdate',
|
||||
data: {
|
||||
item: user,
|
||||
},
|
||||
user: inputs.actorUser,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return user;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue