diff --git a/app/plugins/OrcidSource/config/plugin.json b/app/plugins/OrcidSource/config/plugin.json index f7e625558..e3113e8b1 100644 --- a/app/plugins/OrcidSource/config/plugin.json +++ b/app/plugins/OrcidSource/config/plugin.json @@ -49,8 +49,7 @@ }, "indexes": { "orcid_source_tokens_i1": { - "columns": [ "orcid_source_id", "orcid_identifier"], - "unique": true + "columns": [ "orcid_source_id", "orcid_identifier"] }, "orcid_source_tokens_i2": { "columns": [ "orcid_identifier" ] }, "orcid_source_tokens_i3": { "needed": false, "columns": [ "orcid_source_id" ] } diff --git a/app/plugins/OrcidSource/resources/locales/en_US/orcid_source.po b/app/plugins/OrcidSource/resources/locales/en_US/orcid_source.po index a670369b1..b8cf16f62 100644 --- a/app/plugins/OrcidSource/resources/locales/en_US/orcid_source.po +++ b/app/plugins/OrcidSource/resources/locales/en_US/orcid_source.po @@ -58,6 +58,9 @@ msgstr "{0} was not found" msgid "error.response.no_orcid" msgstr "ORCID identifier missing from response." +msgid "error.exists" +msgstr "Orcid Token already exists with this Identifier" + msgid "field.OrcidSources.api_type" msgstr "API Type" diff --git a/app/plugins/OrcidSource/src/Model/Table/OrcidTokensTable.php b/app/plugins/OrcidSource/src/Model/Table/OrcidTokensTable.php index 9a2519a1c..6db305dc1 100644 --- a/app/plugins/OrcidSource/src/Model/Table/OrcidTokensTable.php +++ b/app/plugins/OrcidSource/src/Model/Table/OrcidTokensTable.php @@ -29,6 +29,7 @@ namespace OrcidSource\Model\Table; +use Cake\ORM\RulesChecker; use Cake\ORM\Table; use Cake\Utility\Security; use Cake\Validation\Validator; @@ -119,6 +120,24 @@ public function beforeMarshal(EventInterface $event, \ArrayObject $data, \ArrayO } + /** + * Define business rules. + * + * @since COmanage Registry v5.2.0 + * @param RulesChecker $rules RulesChecker object + * @return RulesChecker + */ + + public function buildRules(RulesChecker $rules): RulesChecker { + $rules->add( + $rules->isUnique( + ["orcid_source_id", "orcid_identifier"]), + __d('orcid_source', 'error.exists') + ); + + return $rules; + } + /** * Unencrypt a value previously encrypted using salt *