journal_event_types: add user email change (#52567)
This commit is contained in:
parent
802fa84fea
commit
1469082e0e
|
@ -309,3 +309,40 @@ class UserServiceSSOUnauthorization(EventTypeWithService):
|
|||
def get_message(cls, event, context):
|
||||
service_name = cls.get_service_name(event)
|
||||
return _('unauthorization of single sign on with "{service}"').format(service=service_name)
|
||||
|
||||
|
||||
class UserEmailChangeRequest(EventTypeDefinition):
|
||||
name = 'user.email.change.request'
|
||||
label = _('email change request')
|
||||
|
||||
@classmethod
|
||||
def record(cls, user, session, new_email):
|
||||
data = {
|
||||
'old_email': user.email,
|
||||
'email': new_email,
|
||||
}
|
||||
super().record(user=user, session=session, data=data)
|
||||
|
||||
@classmethod
|
||||
def get_message(cls, event, context):
|
||||
new_email = event.get_data('email')
|
||||
return _('email change request for email address "{0}"').format(new_email)
|
||||
|
||||
|
||||
class UserEmailChange(EventTypeDefinition):
|
||||
name = 'user.email.change'
|
||||
label = _('email change')
|
||||
|
||||
@classmethod
|
||||
def record(cls, user, session, old_email, new_email):
|
||||
data = {
|
||||
'old_email': old_email,
|
||||
'email': new_email,
|
||||
}
|
||||
super().record(user=user, session=session, data=data)
|
||||
|
||||
@classmethod
|
||||
def get_message(cls, event, context):
|
||||
new_email = event.get_data('email')
|
||||
old_email = event.get_data('old_email')
|
||||
return _('email address changed from "{0}" to "{1}"').format(old_email, new_email)
|
||||
|
|
|
@ -190,6 +190,9 @@ class EmailChangeView(cbv.TemplateNamesMixin, FormView):
|
|||
),
|
||||
)
|
||||
logger.info('email change request')
|
||||
self.request.journal.record(
|
||||
'user.email.change.request', user=self.request.user, session=self.request.session, new_email=email
|
||||
)
|
||||
return super(EmailChangeView, self).form_valid(form)
|
||||
|
||||
|
||||
|
@ -224,6 +227,13 @@ class EmailChangeVerifyView(TemplateView):
|
|||
)
|
||||
logger.info('user %s changed its email from %s to %s', user, old_email, email)
|
||||
hooks.call_hooks('event', name='change-email-confirm', user=user, email=email)
|
||||
request.journal.record(
|
||||
'user.email.change',
|
||||
user=user,
|
||||
session=request.session,
|
||||
old_email=old_email,
|
||||
new_email=user.email,
|
||||
)
|
||||
except signing.SignatureExpired:
|
||||
messages.error(request, _('your request for changing your email is too old, try again'))
|
||||
except signing.BadSignature:
|
||||
|
|
|
@ -30,8 +30,22 @@ def change_email(app, user, email, mailoutbox):
|
|||
|
||||
def test_change_email(app, simple_user, user_ou1, mailoutbox):
|
||||
email = change_email(app, simple_user, user_ou1.email, mailoutbox)
|
||||
utils.assert_event(
|
||||
'user.email.change.request',
|
||||
user=simple_user,
|
||||
session=app.session,
|
||||
old_email=simple_user.email,
|
||||
email=user_ou1.email,
|
||||
)
|
||||
link = utils.get_link_from_mail(email)
|
||||
app.get(link)
|
||||
utils.assert_event(
|
||||
'user.email.change',
|
||||
user=simple_user,
|
||||
session=app.session,
|
||||
old_email=simple_user.email,
|
||||
email=user_ou1.email,
|
||||
)
|
||||
simple_user.refresh_from_db()
|
||||
# ok it worked
|
||||
assert simple_user.email == user_ou1.email
|
||||
|
|
|
@ -238,6 +238,19 @@ def events(db, freezer):
|
|||
role=role_user,
|
||||
admin_user=user,
|
||||
)
|
||||
make(
|
||||
'user.email.change.request',
|
||||
user=user,
|
||||
session=session1,
|
||||
new_email='new@example.com',
|
||||
)
|
||||
make(
|
||||
'user.email.change',
|
||||
user=user,
|
||||
session=session1,
|
||||
old_email='old@example.com',
|
||||
new_email='new@example.com',
|
||||
)
|
||||
|
||||
# verify we created at least one event for each type
|
||||
assert set(Event.objects.values_list("type__name", flat=True)) == set(_registry)
|
||||
|
@ -517,6 +530,18 @@ def test_global_journal(app, superuser, events):
|
|||
'type': 'manager.role.administrator.user.removal',
|
||||
'user': 'agent',
|
||||
},
|
||||
{
|
||||
'message': 'email change request for email address "new@example.com"',
|
||||
'timestamp': 'Jan. 2, 2020, 3 p.m.',
|
||||
'type': 'user.email.change.request',
|
||||
'user': 'Johnny doe',
|
||||
},
|
||||
{
|
||||
'message': 'email address changed from "old@example.com" to "new@example.com"',
|
||||
'timestamp': 'Jan. 2, 2020, 4 p.m.',
|
||||
'type': 'user.email.change',
|
||||
'user': 'Johnny doe',
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
|
@ -690,6 +715,18 @@ def test_user_journal(app, superuser, events):
|
|||
'type': 'manager.role.administrator.user.removal',
|
||||
'user': 'agent',
|
||||
},
|
||||
{
|
||||
'message': 'email change request for email address "new@example.com"',
|
||||
'timestamp': 'Jan. 2, 2020, 3 p.m.',
|
||||
'type': 'user.email.change.request',
|
||||
'user': 'Johnny doe',
|
||||
},
|
||||
{
|
||||
'message': 'email address changed from "old@example.com" to "new@example.com"',
|
||||
'timestamp': 'Jan. 2, 2020, 4 p.m.',
|
||||
'type': 'user.email.change',
|
||||
'user': 'Johnny doe',
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
|
@ -907,7 +944,7 @@ def test_search(app, superuser, events):
|
|||
|
||||
response.form.set('search', 'session:1234')
|
||||
response = response.form.submit()
|
||||
assert len(response.pyquery('tbody tr')) == 9
|
||||
assert len(response.pyquery('tbody tr')) == 11
|
||||
assert all(
|
||||
text_content(node) == 'Johnny doe'
|
||||
for node in response.pyquery('tbody tr td.journal-list--user-column')
|
||||
|
|
Loading…
Reference in New Issue