Skip to content

Generate a secured base32 one time password to authenticate your user! πŸ”

License

Notifications You must be signed in to change notification settings

aybruhm/django-sotp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Django SOTP πŸ”

CI PyPI version

Generate a secured base32 one time password to authenticate your user!

Abstract πŸ“‘

Django SOTP does just two things, and does them really well.

  • One - it is stupidly secured and simple to integrate
  • Two - it clears out OTPs at the elapsed time

Installation ⏳

Installing django-sotp is very easy, you'll be using (I'd recommend you use a virtual environment, so you don't break your system) the command pip.

Here's how to go about it:

pip install django-sotp

Next is, adding the installed packages to your project:

INSTALLED_APPS = [
    ...
    'sotp',
]

Since django-sotp depends on a particular package to clear out the OTPs at the elapsed time. We'd have to include another package to our installed apps.

INSTALLED_APPS = [
    ...
    'sotp',
    'django_apscheduler', # added package ;-)
]

Now you've done it, all you need to do is add the time which you want the generated OTPs to expire:

SOTP_TIME_EXPIRATION = 5 # in minutes

Yesss. Next is to make migrations and migrate to your database and you're good to go!

python manage.py makemigrations && python manage.py migrate

Congratulations! You're all set! Let's jump right into how to start using it.

How-To Use πŸ“

You've got django-sotp installed and ready to use, here's how to start using it!

  • Step 1: Import the library to the file (.py) you want to use:
from sotp.services import GenerateSOTP
  • Step 2: Instantiate the class:
otp = GenerateSOTP()
  • Step 3: Call the generate_otp logic (method) directly in the file, and pass the user's email; since generate_otp requires the user email address to generate the otp code.
# Generates otp code for the user
otp.generate_otp(user_email=user.email) 
  • Step 4: A base32 secured token and code has been generated, and saved to the secured_otps table. Oh, let's not forget about the scheduler that has been called to remove the user otp and token after the SOTP_TIME_EXPIRATION has elapsed! 🀝

  • Last Step (maybe?): You can call the function anywhere, anytime.

If you are still finding it difficult to use this package, kindly check the example app I made for reference, or create an issue and state the problem you are experiencing!

Shell Example πŸ₯

If you'd like to test out the package on your django shell..

  • Step 1: Run the command:
python manage.py shell
  • Step 2: Import the libray directly on the shell:
from sotp.services import GenerateSOTP
  • Step 3: Call the generate_otp method, don't forget to add a user email address:
secured_otp = otp.generate_otp(user_email="test@email.com") # email should exist :-)
  • Step 4: A Token and OTP is generated, and saved to secured_otps database.
{'totp': '5ZCLA7UQVXFP2B5WL5OZG4QDFDJ4GL65', 'OTP': '957092'}

About

Generate a secured base32 one time password to authenticate your user! πŸ”

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages