put initial permissions fetching in BaseHandler

This commit is contained in:
dandds 2018-07-18 09:27:25 -04:00
parent 83bbad7b86
commit a0d5e679f6
3 changed files with 14 additions and 26 deletions

View File

@ -6,16 +6,26 @@ helpers = {"assets": environment}
class BaseHandler(tornado.web.RequestHandler):
def get_template_namespace(self):
ns = super(BaseHandler, self).get_template_namespace()
helpers["config"] = self.application.config
ns.update(helpers)
return ns
@tornado.gen.coroutine
def login(self, user):
user["atat_permissions"] = yield self._get_user_permissions(user["id"])
session_id = self.sessions.start_session(user)
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):
cookie = self.get_secure_cookie("atat")
@ -24,6 +34,7 @@ class BaseHandler(tornado.web.RequestHandler):
session = self.application.sessions.get_session(cookie)
except SessionNotFoundError:
return None
else:
return None

View File

@ -16,18 +16,4 @@ class Dev(BaseHandler):
"first_name": "Test",
"last_name": "User",
}
user_permissions = yield self.get_or_fetch_user_permissions(user["id"])
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"]
yield self.login(user)

View File

@ -14,9 +14,7 @@ class LoginRedirect(BaseHandler):
if token:
user = yield self._fetch_user_info(token)
if user:
authz_user = yield self.create_authz_user(user["id"])
user["atat_permissions"] = authz_user["atat_permissions"]
self.login(user)
yield self.login(user)
else:
self.write_error(401)
@ -38,10 +36,3 @@ class LoginRedirect(BaseHandler):
else:
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