[Bug 43710] New: OPAC self-registration crashes with 500 if an attribute type is mandatory+opac_editable but not opac_mandatory
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=43710 Bug ID: 43710 Summary: OPAC self-registration crashes with 500 if an attribute type is mandatory+opac_editable but not opac_mandatory Initiative type: --- Sponsorship --- status: Product: Koha Version: Main Hardware: All OS: All Status: NEW Severity: normal Priority: P5 - low Component: OPAC Assignee: oleonard@myacpl.org Reporter: adolfo.rodriguez@xercode.es QA Contact: testopia@bugs.koha-community.org Target Milestone: --- If a patron attribute type is configured with mandatory=1 and opac_editable=1 but opac_mandatory=0, OPAC self-registration crashes with an uncaught-exception 500 instead of completing. Root cause: opac/opac-memberentry.pl's own CheckMandatoryAttributes() only checks the opac_mandatory flag to decide which fields to require on the registration form. But Koha::Patron->extended_attributes()'s internal mandatory check (Koha/Patron.pm, ~line 2884) uses mandatory + opac_editable instead, and ignores opac_mandatory entirely: if ( $interface eq 'opac' ) { $params->{opac_editable} = 1; } my @required_attribute_types = Koha::Patron::Attribute::Types->search( $params, ... )->get_column('code'); So a type with mandatory=1, opac_editable=1, opac_mandatory=0 is never required by the OPAC form, but IS required by extended_attributes()'s own check. If the patron leaves it blank, Koha::Exceptions::Patron::MissingMandatoryExtendedAttribute is thrown at opac/opac-memberentry.pl's call to $patron->extended_attributes($attributes), which is not caught, and the request dies with a 500. By that point the Koha::Patron row has already been created and stored (a few lines earlier); only the extended-attributes save fails, and that save is wrapped in a DBIx::Class txn_do, so the failure rolls back cleanly with no partially-saved attributes. The account itself is valid — only the attribute type configuration is inconsistent. Steps to reproduce: 1. Administration > Patron attribute types: create or edit a type with Mandatory checked, OPAC editable checked, OPAC mandatory NOT checked. 2. With PatronSelfRegistrationVerifyByEmail disabled, register a new patron via the OPAC self-registration form, leaving that attribute blank. 3. The request crashes with an uncaught-exception 500 instead of completing registration. Proposed fix: wrap the $patron->extended_attributes($attributes) call in opac-memberentry.pl in a try/catch. On Koha::Exceptions::Patron::MissingMandatoryExtendedAttribute specifically, log a warning identifying the misconfigured attribute type and let registration complete normally (the account is already valid) instead of crashing. Other exception types are re-thrown unchanged. Note: an earlier internal write-up of this issue assumed the OPAC form and extended_attributes() disagreed on mandatory+opac_editable directly, but current main already guards that combination via the opac_editable filter above — the actual remaining gap is specifically the opac_mandatory vs mandatory+opac_editable mismatch described here. -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=43710 --- Comment #1 from Adolfo Rodríguez Taboada <adolfo.rodriguez@xercode.es> --- Created attachment 207221 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=207221&action=edit OPAC self-registration crashes with 500 if an attribute type is mandatory+opac_editable but not opac_mandatory -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=43710 Adolfo Rodríguez Taboada <adolfo.rodriguez@xercode.es> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |Needs Signoff -- You are receiving this mail because: You are watching all bug changes.
participants (1)
-
bugzilla-daemon@bugs.koha-community.org