Even when a patron attribute is marked as "Unique identifier," the SIP2 server cannot find patrons using that attribute value. SIP2 lookup is hard-coded to cardnumber/userid and does not consider extended attributes, even when it is unique. Actual Result: SIP2 returns "|AFInvalid cardnumber" when the SIP client sends a value stored in a unique patron attribute. Expected Result: SIP2 should be able to search by any patron attribute marked as a unique identifier. Impact: - Self-check machines using HID/NFC values fail - Access control systems relying on alternate IDs cannot authenticate patrons I plan to submit a patch that will allow unique extended patron attributes to be used in SIP2 requests.
Created attachment 190311 [details] [review] Bug 41383: Allow patron identification by custom unique attributes in find_by_identifier Currently, Koha::Patrons->find_by_identifier only searches for patrons by userid and cardnumber. This patch extends this method to also search by unique borrower attributes (where unique_id=1). This enhancement allows modules like SIP2 to identify patrons using alternative unique identifiers defined in the system. Test Plan: 1. Apply the patch. 2. Run the tests: prove t/db_dependent/Koha/Patrons.t - Verify that all tests pass, including the new cases for unique attribute lookup. 3. Functional Verification: - Define a new patron attribute type with 'unique_id' set to 1. - Assign a value to a patron for this attribute. - Use a tool (like the SIP2 emulator) that utilizes Koha::Patrons->find_by_identifier to search for the patron using this attribute value. e.g., perl misc/sip_cli_emulator.pl -su term1 -sp term1 -l CPL --host localhost --patron altid123 -m patron_information - Verify the patron is found. - Try with a non-unique attribute (unique_id=0) and verify the patron is NOT found.