| Home | Trees | Indices | Help |
|---|
|
|
1 import web 2 from decorators import i18n 3 from model import User 4 from userdecorators import authenticated, has_permissions7 name_regexp = web.form.regexp("\w{3,60}$", 'Alphanumeric from 3 to 60 characters') 8 pass_regexp = web.form.regexp(r".{7,}", 'Must have more than 7 characters') 9 10 form = web.form.Form( 11 web.form.Textbox('username', name_regexp, description=_('Username')), 12 web.form.Password('password', pass_regexp, description=_('Password')), 13 web.form.Button('submit', type='submit', value=_('Login'))) 1447 5416 getdata = web.input() 17 if 'next' in getdata: 18 web.ctx.session.go_next = getdata.next 19 return web.ctx.normal_render.user.login(self.form)2022 self.form.username.note = '' 23 self.form.password.note 24 if not self.form.validates(): 25 return web.ctx.render.user.login(self.form) 26 27 # Check if user doesn't exist 28 query = web.ctx.orm.query(User).filter(User.name == web.input().username) 29 if not query.count(): 30 self.form.username.note = _('User doesn\'t exist') 31 return web.ctx.render.user.login(self.form) 32 33 # Check if password is valid 34 user = query.one() 35 36 if not user.is_active(): 37 self.form.username.note = _('User is not active yet') 38 return web.ctx.render.user.login(self.form) 39 40 if not user.auth(web.input().password): 41 self.form.password.note = _('Invalid password') 42 return web.ctx.render.user.login(self.form) 43 44 web.ctx.session.loggedin = True 45 web.ctx.session.username = user.name 46 raise web.seeother(web.ctx.session.get('go_next', '/'))7657 query = web.ctx.orm.query(User).filter(User.name == username) 58 if not query.count(): 59 web.ctx.notify(_('Confirmation email: Invalid user'), 'notification') 60 raise web.seeother('/') 61 62 user = query.one() 63 if user.is_active(): 64 web.ctx.notify(_('Confirmation email: User %s already active') % username, 'notification') 65 raise web.seeother('/') 66 67 if not user.validate_temp_token(temp_token): 68 web.ctx.notify(_('Confirmation email: invalid token %s') % temp_token, 'notification') 69 raise web.seeother('/') 70 71 web.ctx.notify(_('Confirmation email: user %s activated successfully') % username, 72 'notification') 73 web.ctx.session.loggedin = True 74 web.ctx.session.username = username 75 raise web.seeother('/')78 ''' 79 Shows a form that will let the user receive an email for recovering his password 80 ''' 81 form = web.form.Form( 82 web.form.Textbox('username', description=_('Username or email')), 83 web.form.Button('submit', type='submit', value=_('Recover pasword'))) 84 8710689 self.form.username.note = '' 90 if not self.form.validates(): 91 return web.ctx.render.user.sendrecoveremail(self.form) 92 93 # Check if user doesn't exist 94 query = web.ctx.orm.query(User).filter(User.name == web.input().username) 95 if not query.count(): 96 query = web.ctx.orm.query(User).filter(User.email == web.input().username) 97 if not query.count(): 98 self.form.username.note = _('User doesn\'t exist') 99 return web.ctx.render.user.sendrecoveremail(self.form) 100 user = query.one() 101 user = query.one() 102 user.send_recover_password_mail() 103 web.ctx.notify(_('Password recovery email sent to %s') % web.input().username, 104 'notification') 105 raise web.seeother('/')108 ''' 109 Once the user has received the password recovery email, this form actually lets him change 110 his password 111 ''' 112 pass_regexp = web.form.regexp(r".{7,}", 'Must have more than 7 characters') 113 114 form = web.form.Form( 115 web.form.Password('password', pass_regexp, description=_('New Password')), 116 web.form.Password('password2', pass_regexp, description=_('Repeat New Password')), 117 web.form.Button('submit', type='submit', value=_('Change password')), 118 validators = [ 119 web.form.Validator(_('Passwords did\'t match'), 120 lambda i: i.password == i.password2)]) 121150123 query = web.ctx.orm.query(User).filter(User.name == username) 124 if not query.count(): 125 web.ctx.notify(_('Password recovery: Invalid user'), 'notification') 126 raise web.seeother('/') 127 128 user = query.one() 129 if not user.is_active(): 130 web.ctx.notify(_('Password recovery: User %s is not active') % username, 'notification') 131 raise web.seeother('/') 132 133 if not user.validate_temp_token(temp_token): 134 web.ctx.notify(_('Password recovery: invalid token %s') % temp_token, 'notification') 135 raise web.seeother('/') 136 137 web.ctx.session.loggedin = True 138 web.ctx.session.username = username 139 return web.ctx.render.user.changepassword(self.form)140 141 @authenticated143 if not self.form.validates(): 144 return web.ctx.render.user.changepassword(self.form) 145 user = web.ctx.orm.query(User).filter(User.name == web.ctx.session.username).one() 146 user.set_password(web.input().password) 147 web.ctx.orm.add(user) 148 web.ctx.notify(_('Password changed for user %s') % user.name, 'notification') 149 web.seeother('/')
| Home | Trees | Indices | Help |
|---|
| Generated by Epydoc 3.0.1 on Wed Aug 4 09:57:34 2010 | http://epydoc.sourceforge.net |