Skip to content

Commit 883a7ac

Browse files
committed
#11779 Validate stageId and use emailTemplateKey
1 parent 2b415e3 commit 883a7ac

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

api/v1/editTaskTemplates/PKPEditTaskTemplateController.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
use PKP\security\authorization\ContextAccessPolicy;
2727
use PKP\security\Role;
2828
use PKP\editorialTask\Template;
29+
use APP\facades\Repo;
2930
use PKP\API\v1\editTaskTemplates\formRequests\AddEditTaskTemplate;
3031
use PKP\API\v1\editTaskTemplates\resources\EditTaskTemplateResource;
3132

@@ -69,12 +70,17 @@ public function add(AddEditTaskTemplate $illuminateRequest): JsonResponse
6970
$validated = $illuminateRequest->validated();
7071

7172
$template = DB::transaction(function () use ($validated, $context) {
73+
$emailTemplateId = null;
74+
if (!empty($validated['emailTemplateKey'])) {
75+
$et = Repo::emailTemplate()->getByKey($context->getId(), $validated['emailTemplateKey']);
76+
$emailTemplateId = $et?->getId();
77+
}
7278
$tpl = Template::create([
7379
'stage_id' => $validated['stageId'],
7480
'title' => $validated['title'],
7581
'context_id' => $context->getId(),
7682
'include' => $validated['include'] ?? false,
77-
'email_template_id' => $validated['emailTemplateId'] ?? null,
83+
'email_template_id' => $emailTemplateId,
7884
]);
7985

8086
$tpl->userGroups()->sync($validated['userGroupIds']);

api/v1/editTaskTemplates/formRequests/AddEditTaskTemplate.php

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Copyright (c) 2025 John Willinsky
88
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
99
*
10-
* @class AddEditTaskTemplates
10+
* @class AddEditTaskTemplate
1111
*
1212
* @brief Handle API requests validation for adding editorial template operations.
1313
*
@@ -16,6 +16,7 @@
1616
namespace PKP\API\v1\editTaskTemplates\formRequests;
1717

1818
use APP\core\Application;
19+
use APP\facades\Repo;
1920
use Illuminate\Foundation\Http\FormRequest;
2021
use Illuminate\Validation\Rule;
2122

@@ -29,12 +30,20 @@ public function authorize(): bool
2930
public function rules(): array
3031
{
3132
$contextId = Application::get()->getRequest()->getContext()->getId();
32-
33+
$stageIds = array_keys(Application::getApplicationStages());
34+
$emailKeys = Repo::emailTemplate()
35+
->getCollector($contextId)
36+
->getMany()
37+
->map(fn ($t) => $t->getData('key'))
38+
->filter()
39+
->values()
40+
->all();
41+
3342
return [
34-
'stageId' => ['required', 'integer', 'min:1'],
43+
'stageId' => ['required', 'integer', Rule::in($stageIds)],
3544
'title' => ['required', 'string', 'max:255'],
36-
'include' => ['sometimes', 'boolean'],
37-
'emailTemplateId' => ['sometimes', 'nullable', 'integer', Rule::exists('email_templates', 'email_id')],
45+
'include' => ['boolean'],
46+
'emailTemplateKey' => ['sometimes', 'nullable', 'string', 'max:255', Rule::in($emailKeys)],
3847
'userGroupIds' => ['required', 'array', 'min:1'],
3948
'userGroupIds.*' => [
4049
'integer',
@@ -61,7 +70,7 @@ public function validated($key = null, $default = null)
6170
'stageId' => (int) $data['stageId'],
6271
'title' => $data['title'],
6372
'include' => $data['include'] ?? false,
64-
'emailTemplateId' => $data['emailTemplateId'] ?? null,
73+
'emailTemplateKey' => $data['emailTemplateKey'] ?? null,
6574
'userGroupIds' => $data['userGroupIds'],
6675
];
6776
}

0 commit comments

Comments
 (0)