Projet

Général

Profil

0001-views-move-login-code-to-separate-method-55557.patch

Valentin Deniaud, 03 août 2021 12:05

Télécharger (2,98 ko)

Voir les différences:

Subject: [PATCH 1/2] views: move login code to separate method (#55557)

 mellon/views.py | 35 +++++++++++++++++------------------
 1 file changed, 17 insertions(+), 18 deletions(-)
mellon/views.py
277 277
        next_url = self.get_next_url(default=resolve_url(settings.LOGIN_REDIRECT_URL))
278 278
        if user is not None:
279 279
            if user.is_active:
280
                utils.login(request, user)
281
                session_index = attributes['session_index']
282
                if session_index:
283
                    if not request.session.session_key:
284
                        request.session.create()
285
                    models.SessionIndex.objects.get_or_create(
286
                        saml_identifier=user.saml_identifier,
287
                        session_key=request.session.session_key,
288
                        session_index=session_index,
289
                    )
290
                self.log.info(
291
                    'user %s (NameID is %r) logged in using SAML', user, attributes['name_id_content']
292
                )
293
                request.session['mellon_session'] = utils.flatten_datetime(attributes)
294
                if 'session_not_on_or_after' in attributes and not settings.SESSION_EXPIRE_AT_BROWSER_CLOSE:
295
                    request.session.set_expiry(
296
                        utils.get_seconds_expiry(attributes['session_not_on_or_after'])
297
                    )
280
                self.login(user, attributes)
298 281
            else:
299 282
                self.log.warning(
300 283
                    'user %s (NameID is %r) is inactive, login refused', user, attributes['name_id_content']
......
309 292

  
310 293
        return HttpResponseRedirect(next_url)
311 294

  
295
    def login(self, user, attributes):
296
        utils.login(self.request, user)
297
        session_index = attributes['session_index']
298
        if session_index:
299
            if not self.request.session.session_key:
300
                self.request.session.create()
301
            models.SessionIndex.objects.get_or_create(
302
                saml_identifier=user.saml_identifier,
303
                session_key=self.request.session.session_key,
304
                session_index=session_index,
305
            )
306
        self.log.info('user %s (NameID is %r) logged in using SAML', user, attributes['name_id_content'])
307
        self.request.session['mellon_session'] = utils.flatten_datetime(attributes)
308
        if 'session_not_on_or_after' in attributes and not settings.SESSION_EXPIRE_AT_BROWSER_CLOSE:
309
            self.request.session.set_expiry(utils.get_seconds_expiry(attributes['session_not_on_or_after']))
310

  
312 311
    def retry_login(self):
313 312
        """Retry login if it failed for a temporary error.
314 313

  
315
-