Mercurial > libervia-web
annotate src/browser/sat_browser/register.py @ 851:77a494f13118
browser (register): improve some regex after Link Mauve's comments:
- accept . and + in the email address and external JID's user
- it is still very restrictive, but better than before
- TODO: check email reception or JID existence instead
author | souliane <souliane@mailoo.org> |
---|---|
date | Sat, 16 Jan 2016 10:48:31 +0100 |
parents | 7dafa5ee809a |
children | 54f6c5b86a87 |
rev | line source |
---|---|
0 | 1 #!/usr/bin/python |
2 # -*- coding: utf-8 -*- | |
3 | |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
249
diff
changeset
|
4 # Libervia: a Salut à Toi frontend |
818 | 5 # Copyright (C) 2011-2016 Jérôme Poisson <goffi@goffi.org> |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
249
diff
changeset
|
6 # Copyright (C) 2011, 2012 Adrien Vigneron <adrienvigneron@mailoo.org> |
0 | 7 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
249
diff
changeset
|
8 # This program is free software: you can redistribute it and/or modify |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
249
diff
changeset
|
9 # it under the terms of the GNU Affero General Public License as published by |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
249
diff
changeset
|
10 # the Free Software Foundation, either version 3 of the License, or |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
249
diff
changeset
|
11 # (at your option) any later version. |
0 | 12 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
249
diff
changeset
|
13 # This program is distributed in the hope that it will be useful, |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
249
diff
changeset
|
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
249
diff
changeset
|
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
249
diff
changeset
|
16 # GNU Affero General Public License for more details. |
0 | 17 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
249
diff
changeset
|
18 # You should have received a copy of the GNU Affero General Public License |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
249
diff
changeset
|
19 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
0 | 20 |
21 #This page manage subscription and new account creation | |
22 | |
451 | 23 import pyjd # this is dummy in pyjs |
445
c0ff91cabea0
server_side, browser_side: new account password must contain at least 6 chars + cosmetic change for register warning message
souliane <souliane@mailoo.org>
parents:
442
diff
changeset
|
24 from sat.core.i18n import _ |
449
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
445
diff
changeset
|
25 |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
26 from pyjamas.ui.SimplePanel import SimplePanel |
0 | 27 from pyjamas.ui.VerticalPanel import VerticalPanel |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
28 from pyjamas.ui.HorizontalPanel import HorizontalPanel |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
29 from pyjamas.ui.StackPanel import StackPanel |
0 | 30 from pyjamas.ui.PasswordTextBox import PasswordTextBox |
31 from pyjamas.ui.TextBox import TextBox | |
32 from pyjamas.ui.FormPanel import FormPanel | |
33 from pyjamas.ui.Button import Button | |
46 | 34 from pyjamas.ui.Label import Label |
445
c0ff91cabea0
server_side, browser_side: new account password must contain at least 6 chars + cosmetic change for register warning message
souliane <souliane@mailoo.org>
parents:
442
diff
changeset
|
35 from pyjamas.ui.HTML import HTML |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
36 from pyjamas.ui.PopupPanel import PopupPanel |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
37 from pyjamas.ui.Image import Image |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
38 from pyjamas.ui.Hidden import Hidden |
0 | 39 from pyjamas import Window |
422
20c508f9b32a
browser side: fixed bad use of Timer
Goffi <goffi@goffi.org>
parents:
382
diff
changeset
|
40 from pyjamas.ui.KeyboardListener import KEY_ENTER |
449
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
445
diff
changeset
|
41 from pyjamas.Timer import Timer |
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
445
diff
changeset
|
42 |
848
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
43 from __pyjamas__ import JS |
449
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
445
diff
changeset
|
44 |
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
445
diff
changeset
|
45 from constants import Const as C |
0 | 46 |
47 | |
795
a6b39838353f
browser_side: inform the user that entering a full JID in the login box is only needed for external XMPP account
souliane <souliane@mailoo.org>
parents:
793
diff
changeset
|
48 |
0 | 49 class RegisterPanel(FormPanel): |
50 | |
51 def __init__(self, callback): | |
52 """ | |
53 @param callback: method to call if login successful | |
54 """ | |
55 FormPanel.__init__(self) | |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
56 self.setSize('600px', '350px') |
0 | 57 self.callback = callback |
58 self.setMethod(FormPanel.METHOD_POST) | |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
59 main_panel = HorizontalPanel() |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
60 main_panel.setStyleName('registerPanel_main') |
77 | 61 left_side = Image("media/libervia/register_left.png") |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
62 main_panel.add(left_side) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
63 |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
64 ##StackPanel## |
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
65 self.right_side = StackPanel(StyleName='registerPanel_right_side') |
67 | 66 main_panel.add(self.right_side) |
67 main_panel.setCellWidth(self.right_side, '100%') | |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
68 |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
69 ##Login stack## |
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
70 login_stack = SimplePanel() |
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
71 login_stack.setStyleName('registerPanel_content') |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
72 login_vpanel = VerticalPanel() |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
73 login_stack.setWidget(login_vpanel) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
74 |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
75 self.login_warning_msg = HTML('') |
161 | 76 self.login_warning_msg.setStyleName('formWarning') |
77 login_vpanel.add(self.login_warning_msg) | |
46 | 78 |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
79 login_label = Label('Login:') |
46 | 80 self.login_box = TextBox() |
81 self.login_box.setName("login") | |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
82 self.login_box.addKeyboardListener(self) |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
83 login_pass_label = Label('Password:') |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
84 self.login_pass_box = PasswordTextBox() |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
85 self.login_pass_box.setName("login_password") |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
86 self.login_pass_box.addKeyboardListener(self) |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
87 |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
88 login_vpanel.add(login_label) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
89 login_vpanel.add(self.login_box) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
90 login_vpanel.add(login_pass_label) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
91 login_vpanel.add(self.login_pass_box) |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
92 login_but = Button("Log in", getattr(self, "onLogin")) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
93 login_but.setStyleName('button') |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
94 login_but.addStyleName('red') |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
95 login_vpanel.add(login_but) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
96 |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
97 #The hidden submit_type field |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
98 self.submit_type = Hidden('submit_type') |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
99 login_vpanel.add(self.submit_type) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
100 |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
101 ##Register stack## |
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
102 register_stack = SimplePanel() |
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
103 register_stack.setStyleName('registerPanel_content') |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
104 register_vpanel = VerticalPanel() |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
105 register_stack.setWidget(register_vpanel) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
106 |
445
c0ff91cabea0
server_side, browser_side: new account password must contain at least 6 chars + cosmetic change for register warning message
souliane <souliane@mailoo.org>
parents:
442
diff
changeset
|
107 self.register_warning_msg = HTML('') |
161 | 108 self.register_warning_msg.setStyleName('formWarning') |
109 register_vpanel.add(self.register_warning_msg) | |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
110 |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
111 register_login_label = Label('Login:') |
67 | 112 self.register_login_box = TextBox() |
113 self.register_login_box.setName("register_login") | |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
114 self.register_login_box.addKeyboardListener(self) |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
115 email_label = Label('E-mail:') |
46 | 116 self.email_box = TextBox() |
117 self.email_box.setName("email") | |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
118 self.email_box.addKeyboardListener(self) |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
119 register_pass_label = Label('Password:') |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
120 self.register_pass_box = PasswordTextBox() |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
121 self.register_pass_box.setName("register_password") |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
122 self.register_pass_box.addKeyboardListener(self) |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
123 register_vpanel.add(register_login_label) |
67 | 124 register_vpanel.add(self.register_login_box) |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
125 register_vpanel.add(email_label) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
126 register_vpanel.add(self.email_box) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
127 register_vpanel.add(register_pass_label) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
128 register_vpanel.add(self.register_pass_box) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
129 |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
130 register_but = Button("Register a new account", getattr(self, "onRegister")) |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
131 register_but.setStyleName('button') |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
132 register_but.addStyleName('red') |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
133 register_vpanel.add(register_but) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
134 |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
135 self.right_side.add(login_stack, 'Return to the login screen') |
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
136 self.right_side.add(register_stack, 'No account yet? Create a new one!') |
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
137 self.right_side.addStackChangeListener(self) |
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
138 login_stack.setWidth(None) |
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
139 register_stack.setWidth(None) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
140 |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
141 self.add(main_panel) |
0 | 142 self.addFormHandler(self) |
143 self.setAction('register_api/login') | |
144 | |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
145 def onStackChanged(self, sender, index): |
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
146 if index == 0: |
222
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
147 self.login_box.setFocus(True) |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
148 elif index == 1: |
222
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
149 self.register_login_box.setFocus(True) |
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
150 |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
151 def onKeyPress(self, sender, keycode, modifiers): |
795
a6b39838353f
browser_side: inform the user that entering a full JID in the login box is only needed for external XMPP account
souliane <souliane@mailoo.org>
parents:
793
diff
changeset
|
152 # XXX: this is triggered before the textbox value has changed |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
153 if keycode == KEY_ENTER: |
237
531b8809d1ab
browser_side: fixed browser built-in auto-completion in login/register panels
souliane <souliane@mailoo.org>
parents:
222
diff
changeset
|
154 # Browsers offer an auto-completion feature to any |
531b8809d1ab
browser_side: fixed browser built-in auto-completion in login/register panels
souliane <souliane@mailoo.org>
parents:
222
diff
changeset
|
155 # text box, but the selected value is not set when |
531b8809d1ab
browser_side: fixed browser built-in auto-completion in login/register panels
souliane <souliane@mailoo.org>
parents:
222
diff
changeset
|
156 # the widget looses the focus. Using a timer with |
531b8809d1ab
browser_side: fixed browser built-in auto-completion in login/register panels
souliane <souliane@mailoo.org>
parents:
222
diff
changeset
|
157 # any delay value > 0 would do the trick. |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
158 if sender == self.login_box: |
422
20c508f9b32a
browser side: fixed bad use of Timer
Goffi <goffi@goffi.org>
parents:
382
diff
changeset
|
159 Timer(5, lambda timer: self.login_pass_box.setFocus(True)) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
160 elif sender == self.login_pass_box: |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
161 self.onLogin(None) |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
162 elif sender == self.register_login_box: |
422
20c508f9b32a
browser side: fixed bad use of Timer
Goffi <goffi@goffi.org>
parents:
382
diff
changeset
|
163 Timer(5, lambda timer: self.email_box.setFocus(True)) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
164 elif sender == self.email_box: |
422
20c508f9b32a
browser side: fixed bad use of Timer
Goffi <goffi@goffi.org>
parents:
382
diff
changeset
|
165 Timer(5, lambda timer: self.register_pass_box.setFocus(True)) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
166 elif sender == self.register_pass_box: |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
167 self.onRegister(None) |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
168 |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
169 def onKeyUp(self, sender, keycode, modifiers): |
795
a6b39838353f
browser_side: inform the user that entering a full JID in the login box is only needed for external XMPP account
souliane <souliane@mailoo.org>
parents:
793
diff
changeset
|
170 # XXX: this is triggered after the textbox value has changed |
a6b39838353f
browser_side: inform the user that entering a full JID in the login box is only needed for external XMPP account
souliane <souliane@mailoo.org>
parents:
793
diff
changeset
|
171 if sender == self.login_box: |
804
1f054ba3245e
browser_side: fixes JID as login detection, can't rely on "@" keycode
souliane <souliane@mailoo.org>
parents:
798
diff
changeset
|
172 if "@" in self.login_box.getText(): |
795
a6b39838353f
browser_side: inform the user that entering a full JID in the login box is only needed for external XMPP account
souliane <souliane@mailoo.org>
parents:
793
diff
changeset
|
173 self.login_warning_msg.setHTML(_('<span class="formInfo">Entering a full JID is only needed to connect with an external XMPP account.</span>')) |
804
1f054ba3245e
browser_side: fixes JID as login detection, can't rely on "@" keycode
souliane <souliane@mailoo.org>
parents:
798
diff
changeset
|
174 else: |
795
a6b39838353f
browser_side: inform the user that entering a full JID in the login box is only needed for external XMPP account
souliane <souliane@mailoo.org>
parents:
793
diff
changeset
|
175 self.login_warning_msg.setHTML("") |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
176 |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
177 def onKeyDown(self, sender, keycode, modifiers): |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
178 pass |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
179 |
62 | 180 def onLogin(self, button): |
848
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
181 if not self.checkJID(self.login_box.getText()): |
750
8ac862f6e5b3
browser and server sides: allow to connect with a JID that is not registered on the local server
souliane <souliane@mailoo.org>
parents:
729
diff
changeset
|
182 self.login_warning_msg.setHTML('Invalid login, valid characters<br>are a-z A-Z 0-9 _ - or a bare JID') |
173
3d998119237e
browser side: added login characters check in login panel (similar to the one in register panel)
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
183 else: |
3d998119237e
browser side: added login characters check in login panel (similar to the one in register panel)
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
184 self.submit_type.setValue('login') |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
487
diff
changeset
|
185 self.submit(None) |
46 | 186 |
62 | 187 def onRegister(self, button): |
487
e588335b6aa8
browser and server side: force lower case for the profile name at new account creation + fixes CSS for textarea
souliane <souliane@mailoo.org>
parents:
481
diff
changeset
|
188 # XXX: for now libervia forces the creation to lower case |
e588335b6aa8
browser and server side: force lower case for the profile name at new account creation + fixes CSS for textarea
souliane <souliane@mailoo.org>
parents:
481
diff
changeset
|
189 self.register_login_box.setText(self.register_login_box.getText().lower()) |
848
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
190 if not self.checkLogin(self.register_login_box.getText()): |
445
c0ff91cabea0
server_side, browser_side: new account password must contain at least 6 chars + cosmetic change for register warning message
souliane <souliane@mailoo.org>
parents:
442
diff
changeset
|
191 self.register_warning_msg.setHTML(_('Invalid login, valid characters<br>are a-z A-Z 0-9 _ -')) |
848
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
192 elif not self.checkEmail(self.email_box.getText()): |
851
77a494f13118
browser (register): improve some regex after Link Mauve's comments:
souliane <souliane@mailoo.org>
parents:
848
diff
changeset
|
193 self.register_warning_msg.setHTML(_('Invalid email address<br>(or not accepted yet)')) |
445
c0ff91cabea0
server_side, browser_side: new account password must contain at least 6 chars + cosmetic change for register warning message
souliane <souliane@mailoo.org>
parents:
442
diff
changeset
|
194 elif len(self.register_pass_box.getText()) < C.PASSWORD_MIN_LENGTH: |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
195 self.register_warning_msg.setHTML(_('Your password must contain<br>at least %d characters.') % C.PASSWORD_MIN_LENGTH) |
46 | 196 else: |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
197 self.register_warning_msg.setHTML("") |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
198 self.submit_type.setValue('register') |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
487
diff
changeset
|
199 self.submit(None) |
46 | 200 |
0 | 201 def onSubmit(self, event): |
202 pass | |
203 | |
204 def onSubmitComplete(self, event): | |
205 result = event.getResults() | |
481
bbdc5357dc00
browser and server sides: refactor HTTP request result values + handle "NoReply" error
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
206 if result == C.PROFILE_AUTH_ERROR: |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
207 self.login_warning_msg.setHTML(_('Your login and/or password is incorrect. Please try again.')) |
481
bbdc5357dc00
browser and server sides: refactor HTTP request result values + handle "NoReply" error
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
208 elif result == C.XMPP_AUTH_ERROR: |
464
bea9788f3170
browser and server sides: don't handle the "connectionError" signal anymore, we now use asyncConnect errback:
souliane <souliane@mailoo.org>
parents:
451
diff
changeset
|
209 # TODO: call stdui action CHANGE_XMPP_PASSWD_ID as it's done in primitivus |
bea9788f3170
browser and server sides: don't handle the "connectionError" signal anymore, we now use asyncConnect errback:
souliane <souliane@mailoo.org>
parents:
451
diff
changeset
|
210 Window.alert(_(u'Your SàT profile has been authenticated but the associated XMPP account failed to connect. Please use another SàT frontend to set another XMPP password.')) |
796
fad9c9f82ae3
browser and server sides: alert the user after he created a new profile using his XMPP account credentials
souliane <souliane@mailoo.org>
parents:
795
diff
changeset
|
211 elif result == C.PROFILE_LOGGED_REGISTERED_WITH_EXT_JID: |
798
3c5b17a3d86e
browser_side: run login callback before window alert so the background starts to be filled before the user clicks
souliane <souliane@mailoo.org>
parents:
796
diff
changeset
|
212 self.callback() |
796
fad9c9f82ae3
browser and server sides: alert the user after he created a new profile using his XMPP account credentials
souliane <souliane@mailoo.org>
parents:
795
diff
changeset
|
213 Window.alert(_('A profile has been created on this Libervia service using your existing XMPP account. Since you are not using our XMPP server, we can not guaranty that all the extra features (blog, directory...) will fully work.')) |
481
bbdc5357dc00
browser and server sides: refactor HTTP request result values + handle "NoReply" error
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
214 elif result == C.PROFILE_LOGGED: |
0 | 215 self.callback() |
481
bbdc5357dc00
browser and server sides: refactor HTTP request result values + handle "NoReply" error
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
216 elif result == C.SESSION_ACTIVE: |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
217 Window.alert(_('Session already active, this should not happen, please contact the author to fix it.')) |
481
bbdc5357dc00
browser and server sides: refactor HTTP request result values + handle "NoReply" error
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
218 elif result == C.NO_REPLY: |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
219 Window.alert(_("Did not receive a reply (the timeout expired or the connection is broken).")) |
481
bbdc5357dc00
browser and server sides: refactor HTTP request result values + handle "NoReply" error
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
220 elif result == C.ALREADY_EXISTS: |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
221 self.register_warning_msg.setHTML(_('This login already exists,<br>please choose another one.')) |
481
bbdc5357dc00
browser and server sides: refactor HTTP request result values + handle "NoReply" error
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
222 elif result == C.INTERNAL_ERROR: |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
223 self.register_warning_msg.setHTML(_('An registration error occurred, please contact the server administrator.')) |
481
bbdc5357dc00
browser and server sides: refactor HTTP request result values + handle "NoReply" error
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
224 elif result == C.REGISTRATION_SUCCEED: |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
225 self.login_warning_msg.setHTML("") |
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
226 self.register_warning_msg.setHTML("") |
67 | 227 self.login_box.setText(self.register_login_box.getText()) |
445
c0ff91cabea0
server_side, browser_side: new account password must contain at least 6 chars + cosmetic change for register warning message
souliane <souliane@mailoo.org>
parents:
442
diff
changeset
|
228 self.login_pass_box.setText('') |
67 | 229 self.register_login_box.setText('') |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
230 self.register_pass_box.setText('') |
67 | 231 self.email_box.setText('') |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
232 self.right_side.showStack(0) |
382
06fbe6055925
browser_side: focus the password input after account creation
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
233 self.login_pass_box.setFocus(True) |
729
273b39f04d8e
browser_side: change login and register panels (makes it more visible and less confusing)
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
234 Window.alert(_('An email has been sent to you with your login informations\nPlease remember that this is ONLY A TECHNICAL DEMO.')) |
0 | 235 else: |
793
249e49f56f67
browser and server sides: removed constant UNMANAGED_FAULT_STRING which is used only to be displayed to the user, but it doesn't mean anything to him
souliane <souliane@mailoo.org>
parents:
750
diff
changeset
|
236 Window.alert(_("An error occurred and we couldn't process your request. Please report the following error name to the administrators of your network: '%s'" % result)) |
0 | 237 |
848
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
238 def checkLogin(self, text): |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
239 """Check if the given text is a valid login |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
240 |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
241 @param text (unicode) |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
242 @return bool |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
243 """ |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
244 # FIXME: Pyjamas re module is not stable so we use pure JS instead |
851
77a494f13118
browser (register): improve some regex after Link Mauve's comments:
souliane <souliane@mailoo.org>
parents:
848
diff
changeset
|
245 # FIXME: login is restricted to this regex until we fix the account creation |
848
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
246 JS("""return /^(\w|-)+$/.test(text);""") |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
247 |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
248 def checkEmail(self, text): |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
249 """Check if the given text is a valid email address. |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
250 |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
251 @param text (unicode) |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
252 @return bool |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
253 """ |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
254 # FIXME: Pyjamas re module is not stable so we use pure JS instead |
851
77a494f13118
browser (register): improve some regex after Link Mauve's comments:
souliane <souliane@mailoo.org>
parents:
848
diff
changeset
|
255 # FIXME: send a message to validate the email instead of using a bad regex |
77a494f13118
browser (register): improve some regex after Link Mauve's comments:
souliane <souliane@mailoo.org>
parents:
848
diff
changeset
|
256 JS("""return /^(\w|-|\.|\+)+@(\w|-)+\.(\w|-)+$/.test(text);""") |
848
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
257 |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
258 def checkJID(self, text): |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
259 """Check if the given text is a valid JID. |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
260 |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
261 @param text (unicode) |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
262 @return bool |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
263 """ |
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
264 # FIXME: Pyjamas re module is not stable so we use pure JS instead |
851
77a494f13118
browser (register): improve some regex after Link Mauve's comments:
souliane <souliane@mailoo.org>
parents:
848
diff
changeset
|
265 # FIXME: this regex is too restrictive for people using external XMPP account |
77a494f13118
browser (register): improve some regex after Link Mauve's comments:
souliane <souliane@mailoo.org>
parents:
848
diff
changeset
|
266 JS("""return /^(\w|-|\.|\+)+(@(\w|-)+\.(\w|-)+)?$/.test(text);""") |
848
7dafa5ee809a
browser: replace re module usage by pure javascript
souliane <souliane@mailoo.org>
parents:
818
diff
changeset
|
267 |
222
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
268 |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
269 class RegisterBox(PopupPanel): |
0 | 270 |
222
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
271 def __init__(self, callback, *args, **kwargs): |
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
272 PopupPanel.__init__(self, *args, **kwargs) |
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
273 self._form = RegisterPanel(callback) |
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
274 self.setWidget(self._form) |
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
275 |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
276 def onWindowResized(self, width, height): |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
277 super(RegisterBox, self).onWindowResized(width, height) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
278 self.centerBox() |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
279 |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
280 def show(self): |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
281 super(RegisterBox, self).show() |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
282 self.centerBox() |
222
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
283 self._form.login_box.setFocus(True) |