Projet

Général

Profil

0003-utils-add-check_session_roles-decorator.patch

Valentin Deniaud, 23 avril 2019 11:45

Télécharger (1,46 ko)

Voir les différences:

Subject: [PATCH 3/3] utils: add check_session_roles decorator

pareil, il faudra mettre un setting au lieu d'hardcoder auth_level
 mellon/utils.py | 13 +++++++++++++
 1 file changed, 13 insertions(+)
mellon/utils.py
7 7

  
8 8
from django.contrib import auth
9 9
from django.contrib.auth.models import Group
10
from django.contrib.auth.views import redirect_to_login
10 11
from django.core.urlresolvers import reverse
11 12
from django.template.loader import render_to_string
12 13
from django.utils.timezone import make_aware, now, make_naive, is_aware, get_default_timezone
......
286 287
    if role.uuid in request.session['role_uuids']:
287 288
        return True
288 289
    raise RoleNotInSession(role.auth_level)
290

  
291

  
292
def check_session_roles(func):
293
    def wrapped(request, *args, **kwargs):
294
        try:
295
            return func(request, *args, **kwargs)
296
        except RoleNotInSession as e:
297
            required_auth_level = e.value
298
            next_field_value = request.get_full_path()
299
            login_url = '/login/?auth_level=%s' % required_auth_level
300
            return redirect_to_login(next_field_value, login_url)
301
    return wrapped
289
-