utils: do not record login if simulated (#50975)

This commit is contained in:
Valentin Deniaud 2021-02-09 17:13:41 +01:00
parent 46c977d498
commit d412424788
2 changed files with 6 additions and 3 deletions

View File

@ -427,7 +427,7 @@ def last_authentication_event(request=None, session=None):
return None
def login(request, user, how, service=None, service_slug=None, nonce=None, **kwargs):
def login(request, user, how, service=None, service_slug=None, nonce=None, record=True, **kwargs):
'''Login a user model, record the authentication event and redirect to next
URL or settings.LOGIN_REDIRECT_URL.'''
from .. import hooks
@ -449,7 +449,8 @@ def login(request, user, how, service=None, service_slug=None, nonce=None, **kwa
# prevent logint-hint to influence next use of the login page
if 'login-hint' in request.session:
del request.session['login-hint']
request.journal.record('user.login', how=how)
if record:
request.journal.record('user.login', how=how)
return continue_to_next_url(request, **kwargs)
@ -1064,7 +1065,7 @@ def simulate_authentication(request, user, method,
# do not modify the passed user
user = copy.deepcopy(user)
user.backend = backend
return login(request, user, method, service=service, **kwargs)
return login(request, user, method, service=service, record=False, **kwargs)
def get_manager_login_url():

View File

@ -23,6 +23,7 @@ from django.utils.http import urlquote
from django.utils.six.moves.urllib.parse import urlparse
from authentic2 import utils, models
from authentic2.apps.journal.models import Event
from authentic2.validators import EmailValidator
from .utils import get_link_from_mail, assert_event
@ -89,6 +90,7 @@ def test_registration_success(app, db, settings, mailoutbox, external_redirect):
new_user = User.objects.get()
assert_event('user.registration', user=new_user, how='email')
assert not Event.objects.filter(type__name='user.login').exists()
assert new_user.email == 'testbot@entrouvert.com'
assert new_user.username is None
assert new_user.check_password('T0==toto')