This web application was presented at IGeLU 2021 Digital Conference, to show how a Two-Factor Authentication can be integrated to a self-service kiosk without heavy integration to third-party service providers. Thus, making it secure, user friendly and at the same time minimize the possibility of other users using an account without the patron's knowledge.
Using Django Web Framework as backend, this web app uses Alma APIs to process patron fulfilment requests. Authentication is done by requiring students to provide their identification card and email access to receive one-time password (OTP).
-
Install Docker.
-
If you have git installed clone this repository like this,
$ git clone https://github.com/RonBulaon/SelfCheckout.git
-
Once cloned/downloaded open a command line, and navigate inside the folder
SelfCheckout
.$ cd /<path_to_folder>/SelfCheckout
-
Using a text editor, open
docker-compose.yml
and change the following values to match your settings.environment: - EMAIL=<email@gmail.com> - PASSWORD=<password> - HOST=smtp.gmail.com # no need to change this if using gmail.com - API_SERVER=https://api-ap.hosted.exlibrisgroup.com - API=<your_api> - CIRC_DESK=<circ_desk> - LIBRARY=<library>
Notes:
- I'm using Gmail so I put in my exact
EMAIL
andPASSWORD
of my google mail account. - For
HOST
I usedsmtp.gmail.com
since I'm using gmail. You will also need to enable less secure apps for the email account. - For
CIRC_DESK
andLIBRARY
use whatever alma configuration you have or verify yours from here (login required). - Generate values for
API
from here.
- I'm using Gmail so I put in my exact
-
[Optional] Any source code modification should be done here if there is any.
-
Verify that Docker is running in the background. Then execute this command:
$ docker-compose up --build
-
From a browser type in
http://localhost:8000/
in address bar. Note that the browser will prompt for camera permission.
- For supported barcode formats please visit html5-qrcode project repository.
- I coded this in a very short time and realized that this approach has a potential to be a full-fledged barrowing station for our library. I'm considering to add the following in the future:
- OTP code resend button.
- Improved UI/UX design.
- Use database to save settings.
- Implement other fulfilment services.
- Add in an RFID module.
- Better utilization of Django templates.
- Include test scripts.
The barcode and QR code scanner used is made by mebjas you can find more information on the html5-qrcode project repository.
Copyright 2021 Ron Bulaon
Apache License Version 2.0