Skip to content

Commit eb3671b

Browse files
committed
Fix duplicate name in script custom executors
1 parent 0d63878 commit eb3671b

3 files changed

Lines changed: 17 additions & 4 deletions

File tree

‎ProcessMaker/Http/Controllers/Api/ScriptExecutorController.php‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public function index(Request $request)
114114
public function store(Request $request, ScriptMicroserviceService $service)
115115
{
116116
$this->checkAuth($request);
117-
$request->validate(ScriptExecutor::rules());
117+
$request->validate(ScriptExecutor::rules(), ScriptExecutor::messages());
118118

119119
$scriptExecutor = ScriptExecutor::create(
120120
$request->only((new ScriptExecutor())->getFillable())
@@ -180,7 +180,7 @@ public function store(Request $request, ScriptMicroserviceService $service)
180180
public function update(Request $request, ScriptExecutor $scriptExecutor, ScriptMicroserviceService $service)
181181
{
182182
$this->checkAuth($request);
183-
$request->validate(ScriptExecutor::rules());
183+
$request->validate(ScriptExecutor::rules($scriptExecutor), ScriptExecutor::messages());
184184

185185
$original = $scriptExecutor->getAttributes();
186186

‎ProcessMaker/Models/ScriptExecutor.php‎

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,11 @@ public static function rules($existing = null)
178178
}
179179

180180
return [
181-
'title' => 'required',
181+
'title' => [
182+
'required',
183+
Rule::unique('script_executors', 'title')
184+
->where('language', request('language'))
185+
->ignore($existing ? $existing->id : 'NULL')],
182186
'language' => [
183187
'required',
184188
Rule::in($allowedLanguages),
@@ -191,12 +195,20 @@ public static function rules($existing = null)
191195
];
192196
}
193197

198+
public static function messages(): array
199+
{
200+
return [
201+
'title.unique' => __("The Name for language :language has already been taken.",
202+
['language' => config("script-runners")[request('language')]["name"] ?? request('language')]),
203+
];
204+
}
205+
194206
public static function list($language = null, $forEditMode = false)
195207
{
196208
$list = [];
197209
$executors =
198210
self::active()->where('is_system', false)->orderBy('language', 'asc')
199-
->orderBy('created_at', 'asc');
211+
->orderBy('created_at', 'asc');
200212

201213
if ($language) {
202214
$executors->where('language', $language);

‎resources/lang/en.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2262,6 +2262,7 @@
22622262
"The launchpad settings were saved.": "The launchpad settings were saved.",
22632263
"The name field is required.": "The name field is required.",
22642264
"The Name has already been taken.": "The Name has already been taken.",
2265+
"The Name for language :language has already been taken.": "The Name for language :language has already been taken.",
22652266
"The name of the button": "The name of the button",
22662267
"The Name of the data name": "The Name of the data name",
22672268
"The name of the Download": "The name of the Download",

0 commit comments

Comments
 (0)