Projet

Général

Profil

0001-logger-allow-callers-to-override-request-s-user-fixe.patch

Benjamin Dauvergne, 13 juin 2016 10:47

Télécharger (3,63 ko)

Voir les différences:

Subject: [PATCH] logger: allow callers to override request's user (fixes
 #11316)

In certain cases (ex.: web service callback) our log filter will not be able to
determine a related user or the related user is not the one currently logged,
here we allow the application to handle that itself.
 hobo/logger.py | 42 +++++++++++++++++++++++++++---------------
 1 file changed, 27 insertions(+), 15 deletions(-)
hobo/logger.py
44 44

  
45 45
           Inspired by django-log-request-id
46 46
        '''
47
        if (hasattr(record, 'user') and hasattr(record.user, 'is_authenticated') and
48
                record.user.is_authenticated()):
49
            user = record.user
50
            del record.user
51
        else:
52
            user = None
53

  
47 54
        from hobo.middleware.utils import StoreRequestMiddleware
48 55
        from django.conf import settings
49 56
        from django.db import connection
......
61 68
        if getattr(getattr(connection, 'tenant', None), 'domain_url', None):
62 69
            record.tenant = connection.tenant.domain_url
63 70
        request = StoreRequestMiddleware.get_request()
71

  
64 72
        if not request is None:
65 73
            if not hasattr(record, 'request'):
66 74
                record.request = request
67 75
            record.ip = request.META.get('REMOTE_ADDR', self.DEFAULT_IP)
68 76
            record.path = request.get_full_path()
69 77
            record.request_id = 'r:' + hex(id(request))[2:].upper()
70
            if hasattr(request, 'user') and request.user.is_authenticated():
78
            # if caller already passed an user, it means it knows better
79
            if user is None and hasattr(request, 'user') and request.user.is_authenticated():
71 80
                user = request.user
72
                if getattr(user, 'email', None):
73
                    record.user_email = user.email
74
                    record.user = user.email
75
                if getattr(user, 'username', None):
76
                    record.user_name = user.username
77
                    record.user = user.username
78
                if hasattr(user, 'get_full_name') and user.get_full_name():
79
                    record.user_display_name = user.get_full_name()
80
                if hasattr(user, 'saml_identifiers'):
81
                    saml_identifiers = user.saml_identifiers.all()
82
                    if saml_identifiers:
83
                        record.user_uuid = saml_identifiers[0].name_id
84
                        if record.user == self.DEFAULT_USER:
85
                            record.user = record.user_uuid[:7]
81

  
82
        if user:
83
            user = request.user
84
            if getattr(user, 'email', None):
85
                record.user_email = user.email
86
                record.user = user.email
87
            if getattr(user, 'username', None):
88
                record.user_name = user.username
89
                record.user = user.username
90
            if hasattr(user, 'get_full_name') and user.get_full_name():
91
                record.user_display_name = user.get_full_name()
92
            if hasattr(user, 'saml_identifiers'):
93
                saml_identifiers = user.saml_identifiers.all()
94
                if saml_identifiers:
95
                    record.user_uuid = saml_identifiers[0].name_id
96
                    if record.user == self.DEFAULT_USER:
97
                        record.user = record.user_uuid[:7]
86 98
        return True
87
-