Implémente les vues avec questions secrètes de login et réinitialisation

This commit is contained in:
Benjamin Dauvergne 2015-02-02 19:10:51 +01:00
parent 29d518b0ec
commit 60646298b2
3 changed files with 44 additions and 14 deletions

View File

@ -9,7 +9,7 @@ class Plugin(object):
return []
def get_apps(self):
return [__name__]
return [__name__, 'auf.django.secretquestions']
def get_before_middleware(self):
return []

View File

@ -3,14 +3,17 @@ from django.conf.urls import patterns, url
from authentic2.decorators import setting_enabled, required
from . import app_settings
from .views import lost_password_login, secret_questions
from .views import lost_password_login, secret_questions, lost_password_reset
urlpatterns = required(
setting_enabled('ENABLE', settings=app_settings),
patterns('',
url('^accounts/auf/lost-password/$', lost_password_login,
name='authentic2-auf-lost-password'),
url('^accounts/auf/lost-password-login/$', lost_password_login,
name='authentic2-auf-lost-password-login'),
url('^accounts/auf/secret-questions/$', secret_questions,
name='authentic2-auf-secret-questions'),
# remplace la vue Django de recuperation
url('^accounts/password/reset/$', lost_password_reset,
name='auth_password_reset'),
)
)

View File

@ -1,16 +1,43 @@
from django.shortcuts import render
from auth.django.secretquestions.decorators import secret_questions_required
from auth.django.secretquestions.views import secret_questions
from django.contrib.auth import authenticate
from django.contrib.auth.forms import SetPasswordForm
from django.shortcuts import render
from django.contrib import messages
from django.utils.translation import ugettext as _
from authentic2.utils import login
from . import decorators
from auf.django.secretquestions.decorators import secret_questions_required
from auf.django.secretquestions.views import setup_form
__ALL_ = [ 'sso' ]
@decorators.plugin_enabled
from authentic2.utils import login, continue_to_next_url
from authentic2.decorators import setting_enabled
from . import app_settings
__ALL__ = [ 'lost_password_login', 'secret_questions' ]
@setting_enabled('ENABLE', settings=app_settings)
@secret_questions_required(60)
def lost_password_login(request)
user = authenticate(user=request.user)
def lost_password_login(request):
user = authenticate(user=request.secret_questions_user)
return login(request, user, 'secret-questions')
@setting_enabled('ENABLE', settings=app_settings)
@secret_questions_required(6000)
def lost_password_reset(request):
user = authenticate(user=request.secret_questions_user)
if request.method == 'POST':
if 'cancel' in request.POST:
return continue_to_next_url(request, keep_params=False)
form = SetPasswordForm(data=request.POST,
user=user)
if form.is_valid():
form.save()
messages.info(request, _('Your password has been reset, please login'))
return continue_to_next_url(request, keep_params=False)
else:
form = SetPasswordForm(user=user)
return render(request, 'authentic2_auf/reset_password.html', {'form': form})
secret_questions = setup_form