Mercurial > libervia-web
comparison 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 |
comparison
equal
deleted
inserted
replaced
1591:f1d09a4d38dc | 1592:291a7026cb2b |
---|---|
1 #!/usr/bin/env python3 | 1 #!/usr/bin/env python3 |
2 | 2 |
3 | 3 |
4 from libervia.backend.core import exceptions | |
5 from libervia.backend.tools.common import data_format | |
6 from libervia.frontends.bridge.bridge_frontend import BridgeException | |
4 from libervia.web.server.constants import Const as C | 7 from libervia.web.server.constants import Const as C |
5 from libervia.web.server import session_iface | 8 from libervia.web.server import session_iface |
6 from twisted.internet import defer | |
7 from libervia.backend.core.log import getLogger | 9 from libervia.backend.core.log import getLogger |
8 | 10 |
9 log = getLogger(__name__) | 11 log = getLogger(__name__) |
10 | 12 |
11 """SàT account registration page""" | 13 """Libervia account registration page""" |
12 | 14 |
13 name = "register" | 15 name = "register" |
14 access = C.PAGES_ACCESS_PUBLIC | 16 access = C.PAGES_ACCESS_PUBLIC |
15 template = "login/register.html" | 17 template = "login/register.html" |
16 | 18 |
17 | 19 |
18 def prepare_render(self, request): | 20 def parse_url(self, request): |
21 self.get_path_args( | |
22 request, | |
23 ("registration_id",), | |
24 ) | |
25 | |
26 | |
27 async def prepare_render(self, request): | |
19 if not self.host.options["allow_registration"]: | 28 if not self.host.options["allow_registration"]: |
20 self.page_error(request, C.HTTP_FORBIDDEN) | 29 try: |
30 await self.host.check_registration_id(request) | |
31 except exceptions.NotFound: | |
32 self.page_error(request, C.HTTP_FORBIDDEN) | |
21 profile = self.get_profile(request) | 33 profile = self.get_profile(request) |
22 if profile is not None: | 34 if profile is not None: |
23 self.page_redirect("/login/logged", request) | 35 self.page_redirect("/login/logged", request) |
24 template_data = request.template_data | 36 template_data = request.template_data |
25 template_data["login_url"] = self.get_page_by_name("login").url | 37 template_data["login_url"] = self.get_page_by_name("login").url |
34 # if fields were already filled, we reuse them | 46 # if fields were already filled, we reuse them |
35 for k in ("login", "email", "password"): | 47 for k in ("login", "email", "password"): |
36 template_data[k] = session_data.pop_page_data(self, k) | 48 template_data[k] = session_data.pop_page_data(self, k) |
37 | 49 |
38 | 50 |
39 @defer.inlineCallbacks | 51 async def on_data_post(self, request): |
40 def on_data_post(self, request): | |
41 type_ = self.get_posted_data(request, "type") | 52 type_ = self.get_posted_data(request, "type") |
42 if type_ == "register": | 53 if type_ == "register": |
43 login, email, password = self.get_posted_data( | 54 login, email, password = self.get_posted_data( |
44 request, ("login", "email", "password") | 55 request, ("login", "email", "password") |
45 ) | 56 ) |
46 status = yield self.host.register_new_account(request, login, password, email) | 57 status = await self.host.register_new_account(request, login, password, email) |
47 session_data = self.host.get_session_data(request, session_iface.IWebSession) | 58 session_data = self.host.get_session_data(request, session_iface.IWebSession) |
48 if status == C.REGISTRATION_SUCCEED: | 59 if status == C.REGISTRATION_SUCCEED: |
49 # we prefill login field for login page | 60 # we prefill login field for login page |
50 session_data.set_page_data(self.get_page_by_name("login"), "login", login) | 61 session_data.set_page_data(self.get_page_by_name("login"), "login", login) |
51 # if we have a redirect_url we follow it | 62 # if we have a redirect_url we follow it |
56 session_data.set_page_data(self, "login_error", status) | 67 session_data.set_page_data(self, "login_error", status) |
57 l = locals() | 68 l = locals() |
58 for k in ("login", "email", "password"): | 69 for k in ("login", "email", "password"): |
59 # we save fields so user doesn't have to enter them again | 70 # we save fields so user doesn't have to enter them again |
60 session_data.set_page_data(self, k, l[k]) | 71 session_data.set_page_data(self, k, l[k]) |
61 defer.returnValue(C.POST_NO_CONFIRM) | 72 return C.POST_NO_CONFIRM |
62 else: | 73 else: |
63 self.page_error(request, C.HTTP_BAD_REQUEST) | 74 self.page_error(request, C.HTTP_BAD_REQUEST) |