diff libervia/web/pages/register/page_meta.py @ 1592:291a7026cb2b

server: handle new registration link feature, following backend implementation
author Goffi <goffi@goffi.org>
date Sun, 10 Dec 2023 18:33:00 +0100
parents eb00d593801d
children
line wrap: on
line diff
--- a/libervia/web/pages/register/page_meta.py	Sun Dec 10 11:01:57 2023 +0100
+++ b/libervia/web/pages/register/page_meta.py	Sun Dec 10 18:33:00 2023 +0100
@@ -1,23 +1,35 @@
 #!/usr/bin/env python3
 
 
+from libervia.backend.core import exceptions
+from libervia.backend.tools.common import data_format
+from libervia.frontends.bridge.bridge_frontend import BridgeException
 from libervia.web.server.constants import Const as C
 from libervia.web.server import session_iface
-from twisted.internet import defer
 from libervia.backend.core.log import getLogger
 
 log = getLogger(__name__)
 
-"""SàT account registration page"""
+"""Libervia account registration page"""
 
 name = "register"
 access = C.PAGES_ACCESS_PUBLIC
 template = "login/register.html"
 
 
-def prepare_render(self, request):
+def parse_url(self, request):
+    self.get_path_args(
+        request,
+        ("registration_id",),
+    )
+
+
+async def prepare_render(self, request):
     if not self.host.options["allow_registration"]:
-        self.page_error(request, C.HTTP_FORBIDDEN)
+        try:
+            await self.host.check_registration_id(request)
+        except exceptions.NotFound:
+            self.page_error(request, C.HTTP_FORBIDDEN)
     profile = self.get_profile(request)
     if profile is not None:
         self.page_redirect("/login/logged", request)
@@ -36,14 +48,13 @@
         template_data[k] = session_data.pop_page_data(self, k)
 
 
-@defer.inlineCallbacks
-def on_data_post(self, request):
+async def on_data_post(self, request):
     type_ = self.get_posted_data(request, "type")
     if type_ == "register":
         login, email, password = self.get_posted_data(
             request, ("login", "email", "password")
         )
-        status = yield self.host.register_new_account(request, login, password, email)
+        status = await self.host.register_new_account(request, login, password, email)
         session_data = self.host.get_session_data(request, session_iface.IWebSession)
         if status == C.REGISTRATION_SUCCEED:
             # we prefill login field for login page
@@ -58,6 +69,6 @@
             for k in ("login", "email", "password"):
                 # we save fields so user doesn't have to enter them again
                 session_data.set_page_data(self, k, l[k])
-            defer.returnValue(C.POST_NO_CONFIRM)
+            return C.POST_NO_CONFIRM
     else:
         self.page_error(request, C.HTTP_BAD_REQUEST)