From a4291f50c922e5519c81a5267becd0a82cc87a4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre-Elliott=20B=C3=A9cue?= Date: Tue, 1 Apr 2014 15:03:55 +0200 Subject: [PATCH] =?UTF-8?q?[wiki/auth]=20Behavior=20plus=20adapt=C3=A9=20e?= =?UTF-8?q?n=20cas=20de=20login=20utilisateur.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wiki/auth/anonymous_user.py | 9 ++++++++- wiki/auth/categorie_public.py | 5 +++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/wiki/auth/anonymous_user.py b/wiki/auth/anonymous_user.py index 0222f117..093e1bbf 100644 --- a/wiki/auth/anonymous_user.py +++ b/wiki/auth/anonymous_user.py @@ -36,6 +36,14 @@ class AnonymousAuth(BaseAuth): raise NotImplementedError def request(self, request, user_obj, **kw): + action = request.args.get("action", "") + # Si l'utilisateur est en train de se connecter + # On droppe la pseudo connexion anonyme, si elle + # existe bien. + if action == 'login': + if user_obj: + user_obj.valid = False + return user_obj, True # authenticated user if user_obj and user_obj.valid and user_obj.auth_method != self.name and user_obj.name != self.auth_username: @@ -59,7 +67,6 @@ class AnonymousAuth(BaseAuth): else: u = user_obj - action = request.args.get("action", "") p = urlparse.urlparse(request.url) # Impossible to edit preferences if u and u.valid and action == "userprefs": diff --git a/wiki/auth/categorie_public.py b/wiki/auth/categorie_public.py index a660ae4b..c6c76e20 100644 --- a/wiki/auth/categorie_public.py +++ b/wiki/auth/categorie_public.py @@ -33,7 +33,7 @@ class PublicCategories(AnonymousAuth): def can_view(self, request): p = urlparse.urlparse(request.url) if p.path[1:] == "": - return False + return True if request.page is not None: sys.stderr.write("Getting page from cache") page = request.page @@ -70,7 +70,8 @@ class PublicCategories(AnonymousAuth): p = urlparse.urlparse(request.url) url = urlparse.urlunparse(('https', p.netloc, p.path, "", "", "")) action = request.args.get("action", "") - if action != "deny": + # pas de redirection si action est déjà deny ou que l'utilisateur se connecte + if action not in [ "deny", "login"]: request.http_redirect(url + "?action=deny") return user_obj, cont