Projet

Général

Profil

0002-general-use-a-fake-proxy-object-for-unknown-local-Na.patch

Frédéric Péters, 01 mars 2019 15:53

Télécharger (2,54 ko)

Voir les différences:

Subject: [PATCH 2/2] general: use a fake proxy object for unknown local
 NameIDs (#30723)

 combo/apps/lingo/views.py |  6 ++----
 combo/profile/utils.py    | 18 ++++++++++++++++--
 2 files changed, 18 insertions(+), 6 deletions(-)
combo/apps/lingo/views.py
121 121

  
122 122
        try:
123 123
            if request.GET.get('NameId'):
124
                user = get_user_from_name_id(request.GET.get('NameId'))
125
                if user is None:
126
                    raise User.DoesNotExist()
124
                user = get_user_from_name_id(request.GET.get('NameId'), raise_on_missing=True)
127 125
            elif request.GET.get('email'):
128 126
                user = User.objects.get(email=request.GET.get('email'))
129 127
            else:
......
191 189

  
192 190
        try:
193 191
            if request.GET.get('NameId'):
194
                user = get_user_from_name_id(request.GET.get('NameId'))
192
                user = get_user_from_name_id(request.GET.get('NameId'), raise_on_missing=True)
195 193
                if user is None:
196 194
                    raise User.DoesNotExist()
197 195
            elif request.GET.get('email'):
combo/profile/utils.py
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17 17
from django.conf import settings
18
from django.contrib.auth.models import User
18 19

  
19 20

  
20 21
if 'mellon' in settings.INSTALLED_APPS:
......
23 24
    UserSAMLIdentifier = None
24 25

  
25 26

  
26
def get_user_from_name_id(name_id):
27
class ProxiedUser(object):
28
    def __init__(self, name_id):
29
        self.name_id = name_id
30
        self.email = ''
31

  
32
    def get_name_id(self):
33
        return self.name_id
34

  
35

  
36
def get_user_from_name_id(name_id, raise_on_missing=False):
27 37
    if not UserSAMLIdentifier:
38
        if raise_on_missing:
39
            raise User.DoesNotExist()
28 40
        return None
29 41
    try:
30 42
        return UserSAMLIdentifier.objects.get(name_id=name_id).user
31 43
    except UserSAMLIdentifier.DoesNotExist:
32
        return None
44
        if raise_on_missing:
45
            raise User.DoesNotExist()
46
        return ProxiedUser(name_id=name_id)
33
-