auto-login after reset password

This commit is contained in:
mdipierro
2012-08-26 17:28:19 -05:00
parent c95d2b5156
commit f3b86c3e5e
2 changed files with 25 additions and 27 deletions
+1 -1
View File
@@ -1 +1 @@
Version 2.00.0 (2012-08-26 17:05:49) dev Version 2.00.0 (2012-08-26 17:28:16) dev
+24 -26
View File
@@ -959,6 +959,7 @@ class Auth(object):
settings.registration_requires_verification = False settings.registration_requires_verification = False
settings.registration_requires_approval = False settings.registration_requires_approval = False
settings.login_after_registration = False settings.login_after_registration = False
settings.login_after_password_change = True
settings.alternate_requires_registration = False settings.alternate_requires_registration = False
settings.create_user_groups = "user_%(id)s" settings.create_user_groups = "user_%(id)s"
settings.everybody_group_id = None settings.everybody_group_id = None
@@ -1038,8 +1039,9 @@ class Auth(object):
settings.profile_fields = None settings.profile_fields = None
settings.retrieve_username_next = self.url('index') settings.retrieve_username_next = self.url('index')
settings.retrieve_password_next = self.url('index') settings.retrieve_password_next = self.url('index')
settings.request_reset_password_next = self.url(function, args='login') settings.request_reset_password_next = \
settings.reset_password_next = self.url(function, args='login') self.url(function,args='login')
settings.reset_password_next = self.url('index')
settings.change_password_next = self.url('index') settings.change_password_next = self.url('index')
settings.change_password_onvalidation = [] settings.change_password_onvalidation = []
@@ -1675,6 +1677,15 @@ class Auth(object):
(username, password) = base64.b64decode(basic[6:]).split(':') (username, password) = base64.b64decode(basic[6:]).split(':')
return (True, True, self.login_bare(username, password)) return (True, True, self.login_bare(username, password))
def login_user(self,user):
current.session.auth = Storage(
user = user,
last_visit = current.request.now,
expiration = self.settings.expiration,
hmac_key = web2py_uuid())
self.user = user
self.update_groups()
def login_bare(self, username, password): def login_bare(self, username, password):
""" """
logins user logins user
@@ -1695,11 +1706,7 @@ class Auth(object):
password = table_user[passfield].validate(password)[0] password = table_user[passfield].validate(password)[0]
if not user.registration_key and password == user[passfield]: if not user.registration_key and password == user[passfield]:
user = Storage(table_user._filter_fields(user, id=True)) user = Storage(table_user._filter_fields(user, id=True))
session.auth = Storage(user=user, last_visit=request.now, self.login_user(user)
expiration=self.settings.expiration,
hmac_key = web2py_uuid())
self.user = user
self.update_groups()
return user return user
else: else:
# user not in database try other login methods # user not in database try other login methods
@@ -1974,24 +1981,17 @@ class Auth(object):
# process authenticated users # process authenticated users
if user: if user:
user = Storage(table_user._filter_fields(user, id=True)) user = Storage(table_user._filter_fields(user, id=True))
# process authenticated users # process authenticated users
# user wants to be logged in for longer # user wants to be logged in for longer
session.auth = Storage( self.login_user(user)
user = user, session.auth.expiration = \
last_visit = request.now, request.vars.get("remember",False) and \
expiration = request.vars.get("remember",False) and \ self.settings.long_expiration or \
self.settings.long_expiration or self.settings.expiration, self.settings.expiration
remember = request.vars.has_key("remember"), session.auth.remember = request.vars.has_key("remember"),
hmac_key = web2py_uuid()
)
self.user = user
self.log_event(log, user) self.log_event(log, user)
session.flash = self.messages.logged_in session.flash = self.messages.logged_in
self.update_groups()
# how to continue # how to continue
if self.settings.login_form == self: if self.settings.login_form == self:
if accepted_form: if accepted_form:
@@ -2151,11 +2151,7 @@ class Auth(object):
session.flash = self.messages.registration_successful session.flash = self.messages.registration_successful
user = self.db(table_user[username] == form.vars[username]).select().first() user = self.db(table_user[username] == form.vars[username]).select().first()
user = Storage(table_user._filter_fields(user, id=True)) user = Storage(table_user._filter_fields(user, id=True))
session.auth = Storage(user=user, last_visit=request.now, self.login_user(user)
expiration=self.settings.expiration,
hmac_key = web2py_uuid())
self.user = user
self.update_groups()
session.flash = self.messages.logged_in session.flash = self.messages.logged_in
self.log_event(log, form.vars) self.log_event(log, form.vars)
callback(onaccept,form) callback(onaccept,form)
@@ -2398,7 +2394,7 @@ class Auth(object):
session = current.session session = current.session
if next is DEFAULT: if next is DEFAULT:
next = self.next or self.settings.reset_password_next next = self.settings.reset_password_next
try: try:
key = request.vars.key or getarg(-1) key = request.vars.key or getarg(-1)
t0 = int(key.split('-')[0]) t0 = int(key.split('-')[0])
@@ -2427,6 +2423,8 @@ class Auth(object):
'registration_key':'', 'registration_key':'',
'reset_password_key':''}) 'reset_password_key':''})
session.flash = self.messages.password_changed session.flash = self.messages.password_changed
if self.settings.login_after_password_change:
self.login_user(user)
redirect(next) redirect(next)
return form return form