1 """
2 MoinMoin - login action based on userform
3
4 @copyright: 2005 by Radomirs Cirskis <nad2000 AT gmail DOT com>
5 @license: GNU GPL, see COPYING for details.
6 """
7
8 from MoinMoin import user, wikiutil
9 from MoinMoin.Page import Page
10
11 def execute(pagename, request):
12 return LoginHandler(pagename, request).handle()
13
14 class LoginHandler:
15
16 def __init__(self, pagename, request):
17 """ Initialize user settings form. """
18 self.request = request
19 self._ = request.getText
20 self.cfg = request.cfg
21 self.page = Page(request, pagename)
22
23 def handle(self):
24 _ = self._
25 form = self.request.form
26
27 error = None
28
29
30
31
32 name = form.get('username', [''])[0]
33 if not user.isValidName(self.request, name):
34 error = _("""Invalid user name {{{'%s'}}}.
35 Name may contain any Unicode alpha numeric character, with optional one
36 space between words. Group page name is not allowed.""") % name
37
38
39 elif not user.getUserId(self.request, name):
40 error = _('Unknown user name: {{{"%s"}}}. Please enter'
41 ' user name and password.') % name
42
43
44 else:
45 password = form.get('password',[None])[0]
46 if not password:
47 error = _("Missing password. Please enter user name and"
48 " password.")
49 else:
50
51 theuser = user.User(self.request, name=name, password=password)
52 if not theuser.valid:
53 error = _("Sorry, wrong password.")
54
55
56 else:
57 self.request.user = theuser
58 self.request.setCookie()
59 if error:
60
61 return self.page.send_page(self.request, msg=error)
62
63 nextpagename = self.request.cfg.page_front_page
64 for p in theuser.getTrail()[::-1]:
65 if p!=self.page.page_name:
66 nextpagename = p
67 break
68
69 return Page(self.request, nextpagename).send_page( self.request)
MoinMoin: RadomirsCirskis/LoginLogout/login.py (last edited 2007-10-29 19:12:42 by localhost)