0001-journal_event_types-add-user-email-change-52567.patch
src/authentic2/journal_event_types.py | ||
---|---|---|
309 | 309 |
def get_message(cls, event, context): |
310 | 310 |
service_name = cls.get_service_name(event) |
311 | 311 |
return _('unauthorization of single sign on with "{service}"').format(service=service_name) |
312 | ||
313 | ||
314 |
class UserEmailChangeRequest(EventTypeDefinition): |
|
315 |
name = 'user.email.change.request' |
|
316 |
label = _('email change request') |
|
317 | ||
318 |
@classmethod |
|
319 |
def record(cls, user, session, new_email): |
|
320 |
data = { |
|
321 |
'old_email': user.email, |
|
322 |
'email': new_email, |
|
323 |
} |
|
324 |
super().record(user=user, session=session, data=data) |
|
325 | ||
326 |
@classmethod |
|
327 |
def get_message(cls, event, context): |
|
328 |
new_email = event.get_data('email') |
|
329 |
return _('email change request for email address "{0}"').format(new_email) |
|
330 | ||
331 | ||
332 |
class UserEmailChange(EventTypeDefinition): |
|
333 |
name = 'user.email.change' |
|
334 |
label = _('email change') |
|
335 | ||
336 |
@classmethod |
|
337 |
def record(cls, user, session, old_email, new_email): |
|
338 |
data = { |
|
339 |
'old_email': old_email, |
|
340 |
'email': new_email, |
|
341 |
} |
|
342 |
super().record(user=user, session=session, data=data) |
|
343 | ||
344 |
@classmethod |
|
345 |
def get_message(cls, event, context): |
|
346 |
new_email = event.get_data('email') |
|
347 |
old_email = event.get_data('old_email') |
|
348 |
return _('email address changed from "{0}" to "{1}"').format(old_email, new_email) |
src/authentic2/views.py | ||
---|---|---|
190 | 190 |
), |
191 | 191 |
) |
192 | 192 |
logger.info('email change request') |
193 |
self.request.journal.record( |
|
194 |
'user.email.change.request', user=self.request.user, session=self.request.session, new_email=email |
|
195 |
) |
|
193 | 196 |
return super(EmailChangeView, self).form_valid(form) |
194 | 197 | |
195 | 198 | |
... | ... | |
224 | 227 |
) |
225 | 228 |
logger.info('user %s changed its email from %s to %s', user, old_email, email) |
226 | 229 |
hooks.call_hooks('event', name='change-email-confirm', user=user, email=email) |
230 |
request.journal.record( |
|
231 |
'user.email.change', |
|
232 |
user=user, |
|
233 |
session=request.session, |
|
234 |
old_email=old_email, |
|
235 |
new_email=user.email, |
|
236 |
) |
|
227 | 237 |
except signing.SignatureExpired: |
228 | 238 |
messages.error(request, _('your request for changing your email is too old, try again')) |
229 | 239 |
except signing.BadSignature: |
tests/test_change_email.py | ||
---|---|---|
30 | 30 | |
31 | 31 |
def test_change_email(app, simple_user, user_ou1, mailoutbox): |
32 | 32 |
email = change_email(app, simple_user, user_ou1.email, mailoutbox) |
33 |
utils.assert_event( |
|
34 |
'user.email.change.request', |
|
35 |
user=simple_user, |
|
36 |
session=app.session, |
|
37 |
old_email=simple_user.email, |
|
38 |
email=user_ou1.email, |
|
39 |
) |
|
33 | 40 |
link = utils.get_link_from_mail(email) |
34 | 41 |
app.get(link) |
42 |
utils.assert_event( |
|
43 |
'user.email.change', |
|
44 |
user=simple_user, |
|
45 |
session=app.session, |
|
46 |
old_email=simple_user.email, |
|
47 |
email=user_ou1.email, |
|
48 |
) |
|
35 | 49 |
simple_user.refresh_from_db() |
36 | 50 |
# ok it worked |
37 | 51 |
assert simple_user.email == user_ou1.email |
38 |
- |