...
FOLIO
edge-patron
POST /patron - Supports upsert to stagingcreating Tier 1 record in the staging table and returns
externalSystemId
PUT /patron/{externalSystemId} - supports update operation for staging records independently of the Tier
GET /patron-registration-status - query by Email Address or by
externalSystemId
(New End point)Checks Check FOLIO Users (only look for type “Patron“)
When multiple active records are found in FOLIO (only for querying by email)
Return 400 - (With Message indicating that multiple records were found)
When record is found in FOLIO
Return 200 - If active
Return 404 - If inactive (With Message indicating that its expired)
When record is NOT found in FOLIO
Return 404 - (With Message indicating that its NOT FOUND)
Locate
Frontend
Display expiration message when Tier 2 account has expired upon login
Hide pre-registration link for Tier 2 patron
On-site registration form
Backend
Listen for kafka messages
...
How to handle scenario where a staff is using the same email address multiple times (Patron and Staff accounts)?
Captcha required ?
What happens when an active patron loses library card ?
Is there a need to verify email for walk in onsite registration ?
Can we send error codes with 404 along with text ?
Yes, we can do it
What exactly will happen when the patron account is renewed?
This might get complicated when we deal with SSO and Native Auth using username/password. Which record actually controls the expiration ? Will it be FOLIO or Locate ?
Can we remove kafka by updating patron record upon login and when the patron-registration-status returns a 200
Login Use cases
Case 1 - When Tier 1 Patron logs in - Reviewed
Call edge-patron (GET /patron-registration-status by
externalSystemId
) to check the active status of patron Returns 404Display link to pre-register
Case 2 - When Tier 2 Patron logs in - Reviewed
Call edge-patron (GET /patron-registration-status by
externalSystemId
) to check the active status of patron Returns 200Hide link to pre-register
Case 3 - When Tier 2 Patron (with expired account status) logs in - Reviewed
Call edge-patron (GET /patron-registration-status by
externalSystemId
) to check the active status of the patron Returns 404 with Status Text “Account Expired“Locate displays a message
Display link to pre-register
Case 4 - When patron registered on-site (Tier 1 + Tier 2) logs in - Reviewed
Same as case 2
Case 5 - When a staff logs in (with 1 record in FOLIO) - TBD?
Staff logins through SSO (assumption: user email as
externalSystemId
)Staff logins through username/password
Case 6 - When a staff logs in (with multiple accounts in FOLIO)
Case 7 - When a VIP patron logs in
Case 8 - Migrated patron logs in (both FOLIO and Locate accounts are created through migration scripts)
Registration Use cases
Case 1 - Brand New - Reviewed
Patron self-registers for Tier 1 without logging in
When the patron fills in Tier 1 registration form and submits, Locate
Calls edge-patron (GET /patron-registration-status by email ). Expect 404
Calls edge-patron (POST /patron) to create the staging record
Create Locate patron record with
isActive
set toFalse
Sends activation link to the email address
Patron The patron clicks activation link and gets verified
Locate patron record is updated to set
isActive
flag to trueLocate calls edge-patron to update staging record with patron status (Active)
Patron can now login as Tier 1
Case 2 - Tier 1 patron pre-registering for Tier 2 for first time
Call edge-patron (GET /patron-registration-status ). Call returns 404
Patron fills in and submits pre-registration form for Tier 2 account. Locate
Calls edge-patron (patron POST) to update staging record with Tier 2 data
Locate notifies on screen that the patron has to go on site to complete registration
On-Site Workflow is completed in FOLIO
Staging record WILL BE removed
FOLIO sends notification via Kafka
Locate listens for CREATE/UPDATE messages with the flag (new flag to introduced)
Locate updates patron record to indicate now that it is a Tier 2 patron and the on site registration is now complete
...