from aiohttp import web from aiohttp_auth import auth from cbpi.api import * class Login(): def __init__(self,cbpi): self.cbpi = cbpi self.cbpi.register(self, url_prefix="/") self.db = {cbpi.static_config.get("username", "cbpi"): cbpi.static_config.get("password", "cbpi")} @request_mapping(path="/logout", name="Logout", method="GET", auth_required=True) async def logout_view(self, request): await auth.forget(request) return web.Response(body='OK'.encode('utf-8')) @request_mapping(path="/login",name="Login", method="POST", auth_required=False) async def login_view(self, request): params = await request.post() user = params.get('username', None) if (user in self.db and params.get('password', None) == str(self.db[user])): # User is in our database, remember their login details await auth.remember(request, user) return web.Response(body='OK'.encode('utf-8')) raise web.HTTPForbidden()