diff --git a/app/Http/Controllers/CustomFieldsController.php b/app/Http/Controllers/CustomFieldsController.php
index aae721243..8e29cba74 100644
--- a/app/Http/Controllers/CustomFieldsController.php
+++ b/app/Http/Controllers/CustomFieldsController.php
@@ -92,6 +92,7 @@ class CustomFieldsController extends Controller
"field_values" => $request->get("field_values"),
"field_encrypted" => $request->get("field_encrypted", 0),
"show_in_email" => $request->get("show_in_email", 0),
+ "is_unique" => $request->get("is_unique", 0),
"user_id" => Auth::id()
]);
@@ -211,6 +212,7 @@ class CustomFieldsController extends Controller
$field->user_id = Auth::id();
$field->help_text = $request->get("help_text");
$field->show_in_email = $request->get("show_in_email", 0);
+ $field->is_unique = $request->get("is_unique", 0);
if ($request->get('format') == 'CUSTOM REGEX') {
$field->format = e($request->get('custom_format'));
diff --git a/app/Http/Requests/ImageUploadRequest.php b/app/Http/Requests/ImageUploadRequest.php
index 45d7bca5e..dd7ba3788 100644
--- a/app/Http/Requests/ImageUploadRequest.php
+++ b/app/Http/Requests/ImageUploadRequest.php
@@ -161,7 +161,6 @@ class ImageUploadRequest extends Request
// If the user isn't uploading anything new but wants to delete their old image, do so
} else {
- \Log::debug('No file passed for '.$form_fieldname);
if ($this->input('image_delete') == '1') {
\Log::debug('Deleting image');
try {
diff --git a/app/Models/CustomField.php b/app/Models/CustomField.php
index 0f5805525..b9b87f11b 100644
--- a/app/Models/CustomField.php
+++ b/app/Models/CustomField.php
@@ -63,6 +63,7 @@ class CustomField extends Model
'field_encrypted',
'help_text',
'show_in_email',
+ 'is_unique',
];
/**
diff --git a/app/Models/CustomFieldset.php b/app/Models/CustomFieldset.php
index bcbe0b81d..1cf1807d8 100644
--- a/app/Models/CustomFieldset.php
+++ b/app/Models/CustomFieldset.php
@@ -83,7 +83,11 @@ class CustomFieldset extends Model
if (($field->field_encrypted != '1') ||
(($field->field_encrypted == '1') && (Gate::allows('admin')))) {
- $rule[] = ($field->pivot->required == '1') ? 'required' : 'nullable';
+ $rule[] = ($field->pivot->required == '1') ? 'required' : 'nullable';
+ }
+
+ if ($field->is_unique == '1') {
+ $rule[] = 'unique';
}
array_push($rule, $field->attributes['format']);
diff --git a/database/migrations/2022_02_16_152431_add_unique_constraint_to_custom_field.php b/database/migrations/2022_02_16_152431_add_unique_constraint_to_custom_field.php
new file mode 100644
index 000000000..346f51d63
--- /dev/null
+++ b/database/migrations/2022_02_16_152431_add_unique_constraint_to_custom_field.php
@@ -0,0 +1,32 @@
+boolean('is_unique')->nullable()->default(0);
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('custom_fields', function (Blueprint $table) {
+ $table->dropColumn('is_unique');
+ });
+ }
+}
diff --git a/resources/lang/en/admin/custom_fields/general.php b/resources/lang/en/admin/custom_fields/general.php
index 8483c67c6..4c7442b2d 100644
--- a/resources/lang/en/admin/custom_fields/general.php
+++ b/resources/lang/en/admin/custom_fields/general.php
@@ -41,5 +41,7 @@ return [
'make_required' => 'Optional - click to make required',
'reorder' => 'Reorder',
'db_field' => 'DB Field',
- 'db_convert_warning' => 'WARNING. This field is in the custom fields table as :db_column
but should be :expected .'
+ 'db_convert_warning' => 'WARNING. This field is in the custom fields table as :db_column
but should be :expected .',
+ 'is_unique' => 'This value must be unique across all assets',
+ 'unique' => 'Unique',
];
diff --git a/resources/views/custom_fields/fields/edit.blade.php b/resources/views/custom_fields/fields/edit.blade.php
index fd9e78ee3..ba2fd0c6e 100644
--- a/resources/views/custom_fields/fields/edit.blade.php
+++ b/resources/views/custom_fields/fields/edit.blade.php
@@ -116,6 +116,17 @@
+
+
{{ $field->convertUnicodeDbSlug() }}
@if ($field->convertUnicodeDbSlug()!=$field->db_column)