This commit is contained in:
retoor 2025-01-25 03:47:16 +01:00
parent 352d2deb12
commit 12ca8e4296
5 changed files with 26 additions and 21 deletions

View File

@ -2,6 +2,12 @@ import pathlib
from types import SimpleNamespace
from aiohttp import web
from aiohttp_session import (
get_session as session_get,
session_middleware,
setup as session_setup,
)
from aiohttp_session.cookie_storage import EncryptedCookieStorage
from app.app import Application as BaseApplication
from snek.docs.app import Application as DocsApplication
@ -20,17 +26,13 @@ from snek.view.register_form import RegisterFormView
from snek.view.status import StatusView
from snek.view.web import WebView
from aiohttp import web
from aiohttp_session import setup as session_setup, get_session as session_get, session_middleware
from aiohttp_session.cookie_storage import EncryptedCookieStorage
import base64
# base64.urlsafe_b64encode(
SESSION_KEY = b"c79a0c5fda4b424189c427d28c9f7c34"
#base64.urlsafe_b64encode(
SESSION_KEY = b'c79a0c5fda4b424189c427d28c9f7c34'
@web.middleware
async def session_middleware(request, handler):
setattr(request,"session", await session_get(request))
setattr(request, "session", await session_get(request))
response = await handler(request)
return response
@ -46,13 +48,12 @@ class Application(BaseApplication):
super().__init__(
middlewares=middlewares, template_path=self.template_path, *args, **kwargs
)
session_setup(self,EncryptedCookieStorage(SESSION_KEY))
session_setup(self, EncryptedCookieStorage(SESSION_KEY))
self._middlewares.append(session_middleware)
self.jinja2_env.add_extension(MarkdownExtension)
self.setup_router()
self.setup_services()
def setup_services(self):
self.services = SimpleNamespace(**get_services(app=self))
self.mappers = SimpleNamespace(**get_mappers(app=self))
@ -69,7 +70,7 @@ class Application(BaseApplication):
self.router.add_view("/about.md", AboutMDView)
self.router.add_view("/docs.html", DocsHTMLView)
self.router.add_view("/docs.md", DocsMDView)
self.router.add_view("/status.json",StatusView)
self.router.add_view("/status.json", StatusView)
self.router.add_view("/web.html", WebView)
self.router.add_view("/login.html", LoginView)
self.router.add_view("/login.json", LoginFormView)

View File

@ -215,10 +215,10 @@ class UUIDField(ModelField):
@property
def value(self):
return str(self._value)
@value.setter
def value(self,val):
self._value = str(val)
def value(self, val):
self._value = str(val)
@property
def initial_value(self):

View File

@ -23,7 +23,7 @@ class BaseView(web.View):
async def json_response(self, data):
return web.json_response(data)
@property
@property
def session(self):
return self.request.session

View File

@ -9,8 +9,8 @@ class RegisterFormView(BaseFormView):
result = await self.app.services.user.register(
form.email.value, form.username.value, form.password.value
)
self.request.session["uid"] = result['uid']
self.request.session["username"] = result['usernmae']
self.request.session["uid"] = result["uid"]
self.request.session["username"] = result["usernmae"]
self.request.session["logged_in"] = True
return dict(redirect_url="/web.html")
return {"redirect_url": "/web.html"}

View File

@ -1,9 +1,13 @@
from snek.system.view import BaseView
class StatusView(BaseView):
async def get(self):
return await self.json_response({"status": "ok", "username": self.session.get("username"),"logged_in":self.session.get("username") and True or False, "uid":self.session.get("uid")})
return await self.json_response(
{
"status": "ok",
"username": self.session.get("username"),
"logged_in": self.session.get("username") and True or False,
"uid": self.session.get("uid"),
}
)