put initial permissions fetching in BaseHandler
This commit is contained in:
parent
83bbad7b86
commit
a0d5e679f6
@ -6,16 +6,26 @@ helpers = {"assets": environment}
|
|||||||
|
|
||||||
|
|
||||||
class BaseHandler(tornado.web.RequestHandler):
|
class BaseHandler(tornado.web.RequestHandler):
|
||||||
|
|
||||||
def get_template_namespace(self):
|
def get_template_namespace(self):
|
||||||
ns = super(BaseHandler, self).get_template_namespace()
|
ns = super(BaseHandler, self).get_template_namespace()
|
||||||
helpers["config"] = self.application.config
|
helpers["config"] = self.application.config
|
||||||
ns.update(helpers)
|
ns.update(helpers)
|
||||||
return ns
|
return ns
|
||||||
|
|
||||||
|
@tornado.gen.coroutine
|
||||||
def login(self, user):
|
def login(self, user):
|
||||||
|
user["atat_permissions"] = yield self._get_user_permissions(user["id"])
|
||||||
session_id = self.sessions.start_session(user)
|
session_id = self.sessions.start_session(user)
|
||||||
self.set_secure_cookie("atat", session_id)
|
self.set_secure_cookie("atat", session_id)
|
||||||
self.redirect("/home")
|
return self.redirect("/home")
|
||||||
|
|
||||||
|
@tornado.gen.coroutine
|
||||||
|
def _get_user_permissions(self, user_id):
|
||||||
|
response = yield self.authz_client.post(
|
||||||
|
"/users", json={"id": user_id, "atat_role": "ccpo"}
|
||||||
|
)
|
||||||
|
return response.json["atat_permissions"]
|
||||||
|
|
||||||
def get_current_user(self):
|
def get_current_user(self):
|
||||||
cookie = self.get_secure_cookie("atat")
|
cookie = self.get_secure_cookie("atat")
|
||||||
@ -24,6 +34,7 @@ class BaseHandler(tornado.web.RequestHandler):
|
|||||||
session = self.application.sessions.get_session(cookie)
|
session = self.application.sessions.get_session(cookie)
|
||||||
except SessionNotFoundError:
|
except SessionNotFoundError:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -16,18 +16,4 @@ class Dev(BaseHandler):
|
|||||||
"first_name": "Test",
|
"first_name": "Test",
|
||||||
"last_name": "User",
|
"last_name": "User",
|
||||||
}
|
}
|
||||||
user_permissions = yield self.get_or_fetch_user_permissions(user["id"])
|
yield self.login(user)
|
||||||
user["atat_permissions"] = user_permissions
|
|
||||||
self.login(user)
|
|
||||||
|
|
||||||
@tornado.gen.coroutine
|
|
||||||
def get_or_fetch_user_permissions(self, user_id):
|
|
||||||
response = yield self.authz_client.post(
|
|
||||||
"/users", json={"id": user_id, "atat_role": "ccpo"}, raise_error=False
|
|
||||||
)
|
|
||||||
if response.code == 200:
|
|
||||||
return response.json["atat_permissions"]
|
|
||||||
elif response.code == 409:
|
|
||||||
# User already exists
|
|
||||||
response = yield self.authz_client.get("/users/{}".format(user_id))
|
|
||||||
return response.json["atat_permissions"]
|
|
||||||
|
@ -14,9 +14,7 @@ class LoginRedirect(BaseHandler):
|
|||||||
if token:
|
if token:
|
||||||
user = yield self._fetch_user_info(token)
|
user = yield self._fetch_user_info(token)
|
||||||
if user:
|
if user:
|
||||||
authz_user = yield self.create_authz_user(user["id"])
|
yield self.login(user)
|
||||||
user["atat_permissions"] = authz_user["atat_permissions"]
|
|
||||||
self.login(user)
|
|
||||||
else:
|
else:
|
||||||
self.write_error(401)
|
self.write_error(401)
|
||||||
|
|
||||||
@ -38,10 +36,3 @@ class LoginRedirect(BaseHandler):
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
raise error
|
raise error
|
||||||
|
|
||||||
@tornado.gen.coroutine
|
|
||||||
def create_authz_user(self, user_id):
|
|
||||||
response = yield self.authz_client.post(
|
|
||||||
"/users", json={"id": user_id, "atat_role": "ccpo"}
|
|
||||||
)
|
|
||||||
return response.json
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user