2018-11-01 19:50:04 +01:00
|
|
|
from aiohttp import web
|
|
|
|
from aiohttp_auth import auth
|
|
|
|
|
2018-12-29 00:27:19 +01:00
|
|
|
from cbpi_api import *
|
2018-11-01 21:25:42 +01:00
|
|
|
|
|
|
|
|
2018-11-01 19:50:04 +01:00
|
|
|
class Login():
|
|
|
|
|
2018-11-01 21:25:42 +01:00
|
|
|
def __init__(self,cbpi):
|
|
|
|
self.cbpi = cbpi
|
|
|
|
self.cbpi.register(self)
|
|
|
|
|
2018-11-04 00:47:26 +01:00
|
|
|
|
|
|
|
self.db = {cbpi.config.get("username", "cbpi"): cbpi.config.get("password", "cbpi")}
|
2018-11-01 19:50:04 +01:00
|
|
|
|
2018-11-01 21:25:42 +01:00
|
|
|
@request_mapping(path="/logout", name="Logout", method="GET", auth_required=True)
|
2018-11-01 19:50:04 +01:00
|
|
|
async def logout_view(self, request):
|
|
|
|
await auth.forget(request)
|
|
|
|
return web.Response(body='OK'.encode('utf-8'))
|
|
|
|
|
2018-11-01 21:25:42 +01:00
|
|
|
@request_mapping(path="/login",name="Login", method="POST", auth_required=False)
|
2018-11-01 19:50:04 +01:00
|
|
|
async def login_view(self, request):
|
|
|
|
params = await request.post()
|
2018-11-01 21:25:42 +01:00
|
|
|
|
2018-11-04 00:47:26 +01:00
|
|
|
|
2018-11-01 19:50:04 +01:00
|
|
|
user = params.get('username', None)
|
|
|
|
if (user in self.db and
|
|
|
|
params.get('password', None) == 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()
|
|
|
|
|