atst/atst/handler.py
2018-08-02 13:20:03 -04:00

43 lines
1.3 KiB
Python

import tornado.web
from atst.sessions import SessionNotFoundError
from atst.domain.users import Users
helpers = {"assets": None}
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):
db_user = yield self._get_user_permissions(user["id"])
user["atat_permissions"] = db_user.atat_permissions
user["atat_role"] = db_user.atat_role.name
session_id = self.sessions.start_session(user)
self.set_secure_cookie("atat", session_id)
return self.redirect("/home")
@tornado.gen.coroutine
def _get_user_permissions(self, user_id):
user_repo = Users(self.db_session)
user = user_repo.get_or_create(user_id, atat_role_name="developer")
return user
def get_current_user(self):
cookie = self.get_secure_cookie("atat")
if cookie:
try:
session = self.application.sessions.get_session(cookie)
except SessionNotFoundError:
self.clear_cookie("atat")
return None
else:
return None
return session["user"]