Projet

Général

Profil

0001-journal_event_types-add-user-email-change-52567.patch

Valentin Deniaud, 11 mai 2021 14:31

Télécharger (4,19 ko)

Voir les différences:

Subject: [PATCH] journal_event_types: add user email change (#52567)

 src/authentic2/journal_event_types.py | 37 +++++++++++++++++++++++++++
 src/authentic2/views.py               | 10 ++++++++
 tests/test_change_email.py            | 14 ++++++++++
 3 files changed, 61 insertions(+)
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
-