From 33741b9d2def9635970e3016b8b2064f1a317cd0 Mon Sep 17 00:00:00 2001 From: Nicolas Le Manchet Date: Tue, 22 Jul 2014 17:41:23 +0200 Subject: [PATCH] Create the auth decorator --- isso/views/api.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/isso/views/api.py b/isso/views/api.py index 3877e58..67de650 100644 --- a/isso/views/api.py +++ b/isso/views/api.py @@ -50,6 +50,20 @@ def xhr(func): return dec +def auth(func): + """A decorator to check the validity of an auth cookie.""" + + def dec(self, env, req, *args, **kwargs): + + if not self.conf.getboolean("auth", "enabled"): + return func(self, env, req, *args, **kwargs) + try: + self.load(req.cookies.get("auth", "")) + except (SignatureExpired, BadSignature): + raise Forbidden + return func(self, env, req, *args, **kwargs) + + return dec class API(object): @@ -100,6 +114,7 @@ class API(object): return obj @xhr + @auth @requires(str, 'uri') def new(self, environ, request, uri): data = request.get_json()