9
9
import string, time, re
10
10
from MoinMoin import user, util, wikiutil
11
from MoinMoin.util import web, mail, datetime
11
from MoinMoin.util import web, mail, timefuncs
12
12
from MoinMoin.widget import html
89
92
return _("Use UserPreferences to change your settings or create an account.")
90
93
# Create user profile
91
94
if form.has_key('create'):
92
theuser = self.request.get_user()
95
theuser = self.request.get_user_from_form()
94
97
theuser = user.User(self.request, auth_method="request:152")
138
141
return _("Please provide your email address. If you lose your"
139
142
" login information, you can get it by email.")
141
# Email should be unique - see also MoinMoin/scripts/moin_usercheck.py
144
# Email should be unique - see also MoinMoin/script/accounts/moin_usercheck.py
142
145
if theuser.email and self.request.cfg.user_email_unique:
143
146
users = user.getUserList(self.request)
144
147
for uid in users:
158
161
result = result + util.dumpFormData(form)
161
if form.has_key('select_user'): # Select user profile (su user)
165
# Select user profile (su user) - only works with cookie auth active.
166
if form.has_key('select_user'):
162
167
if (wikiutil.checkTicket(self.request.form['ticket'][0]) and
163
self.request.user.name in self.request.cfg.superuser and
164
self.request.request_method == 'POST'):
168
self.request.request_method == 'POST' and
169
self.request.user.isSuperUser()):
165
170
su_user = form.get('selected_user', [''])[0]
166
171
uid = user.getUserId(self.request, su_user)
167
172
theuser = user.User(self.request, uid)
168
173
theuser.disabled = None
175
from MoinMoin import auth
176
auth.setCookie(self.request, theuser)
170
177
self.request.user = theuser
171
self.request.setCookie()
172
178
return _("Use UserPreferences to change settings of the selected user account")
174
180
return _("Use UserPreferences to change your settings or create an account.")
176
182
if form.has_key('save'): # Save user profile
177
183
if self.request.request_method != 'POST':
178
184
return _("Use UserPreferences to change your settings or create an account.")
179
theuser = self.request.get_user()
185
theuser = self.request.get_user_from_form()
181
187
if not 'name' in theuser.auth_attribs:
182
188
# Require non-empty name
227
233
return _("Please provide your email address. If you lose your"
228
234
" login information, you can get it by email.")
230
# Email should be unique - see also MoinMoin/scripts/moin_usercheck.py
236
# Email should be unique - see also MoinMoin/script/accounts/moin_usercheck.py
231
237
if theuser.email and self.request.cfg.user_email_unique:
232
238
users = user.getUserList(self.request)
233
239
for uid in users:
363
369
'%s [%s%s:%s]' % (
364
time.strftime(self.cfg.datetime_fmt, util.datetime.tmtuple(t)),
370
time.strftime(self.cfg.datetime_fmt, timefuncs.tmtuple(t)),
365
371
"+-"[offset < 0],
366
372
string.zfill("%d" % (abs(offset) / 3600), 2),
367
373
string.zfill("%d" % (abs(offset) % 3600 / 60), 2),
474
if self.request.user.name in self.request.cfg.superuser:
480
if self.request.user.isSuperUser():
475
481
ticket = wikiutil.createTicket()
476
482
self.make_row(_('Select User'), [self._user_select()])
477
483
self._form.append(html.INPUT(type="hidden", name="ticket", value="%s" % ticket))
485
491
self.make_row('', button_cell)
487
493
if self.request.user.valid and not create_only:
488
buttons = [('save', _('Save'))]
494
buttons = [('save', _('Save')), ('cancel', _('Cancel')), ]
489
495
uf_remove = self.cfg.user_form_remove
490
496
uf_disable = self.cfg.user_form_disable
491
497
for attr in self.request.user.auth_attribs:
520
526
self._tz_select(),
522
528
_('Server time is'), ' ',
523
time.strftime(self.cfg.datetime_fmt, util.datetime.tmtuple()),
529
time.strftime(self.cfg.datetime_fmt, timefuncs.tmtuple()),
579
585
# IMPORTANT: login should be first to be the default
580
586
# button when a user hits ENTER.
581
('login', _('Login')),
582
("create", _('Create Profile')),
587
#('login', _('Login')), # we now have a Login macro
588
('create', _('Create Profile')),
589
('cancel', _('Cancel')),
584
591
for key, label, type, length, textafter in self.cfg.user_form_fields:
585
592
if key in ('name', 'password', 'password2', 'email'):
615
622
return UserSettings(request).asHTML(create_only=create_only)
628
def __init__(self, request):
629
""" Initialize user settings form.
631
self.request = request
632
self._ = request.getText
633
self.cfg = request.cfg
635
def make_row(self, label, cell, **kw):
636
""" Create a row in the form table.
638
self._table.append(html.TR().extend([
639
html.TD(**kw).extend([html.B().append(label), ' ']),
640
html.TD().extend(cell),
645
""" Create the complete HTML form code. """
647
request = self.request
648
sn = request.getScriptname()
649
pi = request.getPathinfo()
650
action = u"%s%s" % (sn, pi)
651
userprefslink = wikiutil.getSysPage(request, "UserPreferences").link_to(request)
652
hint = _("To create an account or recover a lost password, see the %(userprefslink)s page.") % {
653
'userprefslink': userprefslink}
654
self._form = html.FORM(action=action)
655
self._table = html.TABLE(border="0")
657
# Use the user interface language and direction
658
lang_attr = request.theme.ui_lang_attr()
659
self._form.append(html.Raw('<div class="userprefs"%s>' % lang_attr))
661
self._form.append(html.INPUT(type="hidden", name="action", value="login"))
662
self._form.append(self._table)
663
self._form.append(html.P().append(hint))
664
self._form.append(html.Raw("</div>"))
666
self.make_row(_('Name'), [
668
type="text", size="32", name="name",
672
self.make_row(_('Password'), [
674
type="password", size="32", name="password",
680
type="submit", name='login', value=_('Login')
684
return unicode(self._form)
686
def getLogin(request):
687
""" Return HTML code for the login. """
688
return Login(request).asHTML()
618
690
#############################################################################
619
691
### User account administration
620
692
#############################################################################