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