cleanup code examples in README

This commit is contained in:
Tobias Bengfort
2021-06-23 08:09:38 +02:00
parent e8ce96c404
commit ec16539c34

View File

@@ -106,21 +106,23 @@ Depends on
* if user doesn't have mfa then call your function to create the user session * if user doesn't have mfa then call your function to create the user session
```python ```python
from mfa.helpers import has_mfa
def login(request): # this function handles the login form POST def login(request): # this function handles the login form POST
user = auth.authenticate(username=username, password=password) user = auth.authenticate(username=username, password=password)
if user is not None: # if the user object exist if user is not None: # if the user object exist
from mfa.helpers import has_mfa res = has_mfa(username=username, request=request) # has_mfa returns false or HttpResponseRedirect
res = has_mfa(username = username,request=request) # has_mfa returns false or HttpResponseRedirect
if res: if res:
return res return res
return log_user_in(request,username=user.username) return log_user_in(request, username=user.username)
#log_user_in is a function that handles creatung user session, it should be in the setting file as MFA_CALLBACK # log_user_in is a function that handles creating user session, it should be in the setting file as MFA_CALLBACK
``` ```
1. Add mfa to urls.py 1. Add mfa to urls.py
```python ```python
import mfa import mfa
import mfa.TrustedDevice import mfa.TrustedDevice
urls_patterns= [
urls_patterns = [
'...', '...',
url(r'^mfa/', include('mfa.urls')), url(r'^mfa/', include('mfa.urls')),
url(r'devices/add$', mfa.TrustedDevice.add,name="mfa_add_new_trusted_device"), # This short link to add new trusted device url(r'devices/add$', mfa.TrustedDevice.add,name="mfa_add_new_trusted_device"), # This short link to add new trusted device
@@ -140,40 +142,42 @@ For Example, See https://github.com/mkalioby/AutoDeploy/commit/5f1d94b1804e0aa33
To be able to go passwordless for returning users, create a cookie named 'base_username' containing username as shown in snippet below To be able to go passwordless for returning users, create a cookie named 'base_username' containing username as shown in snippet below
```python ```python
response = render(request, 'Dashboard.html', context)) response = render(request, 'Dashboard.html', context))
if request.session.get("mfa",{}).get("verified",False) and getattr(settings,"MFA_QUICKLOGIN",False): if request.session.get("mfa", {}).get("verified", False) and getattr(settings, "MFA_QUICKLOGIN", False):
if request.session["mfa"]["method"]!="Trusted Device": if request.session["mfa"]["method"] != "Trusted Device":
response.set_cookie("base_username", request.user.username, path="/",max_age = 15*24*60*60) response.set_cookie("base_username", request.user.username, path="/", max_age=15 * 24 * 60 * 60)
return response return response
``` ```
Second, update the GET part of your login view Second, update the GET part of your login view
```python ```python
if "mfa" in settings.INSTALLED_APPS and getattr(settings,"MFA_QUICKLOGIN",False) and request.COOKIES.get('base_username'): from mfa.helpers import has_mfa
if "mfa" in settings.INSTALLED_APPS and getattr(settings, "MFA_QUICKLOGIN", False) and request.COOKIES.get('base_username'):
username=request.COOKIES.get('base_username') username=request.COOKIES.get('base_username')
from mfa.helpers import has_mfa res = has_mfa(username=username, request=request)
res = has_mfa(username = username,request=request,) if res:
if res: return res return res
## continue and return the form. # continue and return the form.
``` ```
# Checking MFA on Client Side # Checking MFA on Client Side
Sometimes you like to verify that the user is still there so simple you can ask django-mfa2 to check that for you Sometimes you like to verify that the user is still there so simple you can ask django-mfa2 to check that for you
```html ```html
{% include 'mfa_check.html' %} {% include 'mfa_check.html' %}
``` ```
````js ````js
function success_func() { function success_func() {
//logic if mfa check succeeds // logic if mfa check succeeds
} }
function fail_func() { function fail_func() {
//logic if mfa check fails // logic if mfa check fails
} }
function some_func() { function some_func() {
recheck_mfa(success_func,fail_func,MUST_BE_MFA) recheck_mfa(success_func, fail_func, MUST_BE_MFA)
//MUST_BE_MFA true or false, if the user must has with MFA // MUST_BE_MFA true or false, if the user must has with MFA
} }
```` ````