fix(plugin-workflow-manual): flatten assignees, assignees parsing bug (#837)
Reviewed-on: daoyoucloud/tachybase#837 Reviewed-by: sealday <zhanglin@daoyoucloud.com> Co-authored-by: bai.zixv <bai.zixv@foxmail.com> Co-committed-by: bai.zixv <bai.zixv@foxmail.com>
This commit is contained in:
parent
021c8a9a16
commit
8dc7a09d29
@ -93,7 +93,7 @@ export default class extends Instruction {
|
|||||||
|
|
||||||
async run(node, prevJob, processor: Processor) {
|
async run(node, prevJob, processor: Processor) {
|
||||||
const { mode, ...config } = node.config as ManualConfig;
|
const { mode, ...config } = node.config as ManualConfig;
|
||||||
const assignees = [...new Set(processor.getParsedValue(config.assignees, node.id) || [])];
|
const assignees = [...new Set(processor.getParsedValue(config.assignees, node.id).flat().filter(Boolean))];
|
||||||
|
|
||||||
const job = await processor.saveJob({
|
const job = await processor.saveJob({
|
||||||
status: JOB_STATUS.PENDING,
|
status: JOB_STATUS.PENDING,
|
||||||
@ -124,7 +124,9 @@ export default class extends Instruction {
|
|||||||
|
|
||||||
async resume(node, job, processor: Processor) {
|
async resume(node, job, processor: Processor) {
|
||||||
// NOTE: check all users jobs related if all done then continue as parallel
|
// NOTE: check all users jobs related if all done then continue as parallel
|
||||||
const { assignees = [], mode } = node.config as ManualConfig;
|
|
||||||
|
const { mode } = node.config as ManualConfig;
|
||||||
|
const assignees = [...new Set(processor.getParsedValue(node.config.assignees, node.id).flat().filter(Boolean))];
|
||||||
|
|
||||||
const UserJobModel = this.workflow.app.db.getModel('users_jobs');
|
const UserJobModel = this.workflow.app.db.getModel('users_jobs');
|
||||||
const distribution = await UserJobModel.count({
|
const distribution = await UserJobModel.count({
|
||||||
|
@ -50,7 +50,10 @@ export async function submit(context: Context, next) {
|
|||||||
await processor.prepare();
|
await processor.prepare();
|
||||||
|
|
||||||
// NOTE: validate assignee
|
// NOTE: validate assignee
|
||||||
const assignees = processor.getParsedValue(userJob.node.config.assignees ?? [], userJob.nodeId);
|
const assignees = processor
|
||||||
|
.getParsedValue(userJob.node.config.assignees ?? [], userJob.nodeId)
|
||||||
|
.flat()
|
||||||
|
.filter(Boolean);
|
||||||
if (!assignees.includes(currentUser.id) || userJob.userId !== currentUser.id) {
|
if (!assignees.includes(currentUser.id) || userJob.userId !== currentUser.id) {
|
||||||
return context.throw(403);
|
return context.throw(403);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user