Merge branch 'master' of github.com:web2py/web2py

This commit is contained in:
mdipierro
2013-07-17 17:20:04 -05:00
3 changed files with 15 additions and 11 deletions
-1
View File
@@ -143,7 +143,6 @@ class MockTable(object):
release_lock(self.r_server, key_lock, newid) release_lock(self.r_server, key_lock, newid)
return newid return newid
class MockQuery(object): class MockQuery(object):
"""a fake Query object that supports querying by id """a fake Query object that supports querying by id
and listing all keys. No other operation is supported and listing all keys. No other operation is supported
+3 -3
View File
@@ -498,7 +498,6 @@ class Session(Storage):
masterapp=None, masterapp=None,
clear_session=False clear_session=False
): ):
if request is None: if request is None:
request = current.request request = current.request
if response is None: if response is None:
@@ -576,13 +575,14 @@ class Session(Storage):
if record_id == '0': if record_id == '0':
raise Exception('record_id == 0') raise Exception('record_id == 0')
# Select from database # Select from database
row = db(table.id == record_id).select().first() row = db(table.id == record_id).select()
row = row and row[0] or None
# Make sure the session data exists in the database # Make sure the session data exists in the database
if not row or row.unique_key != unique_key: if not row or row.unique_key != unique_key:
raise Exception('No record') raise Exception('No record')
unique_key = web2py_uuid() unique_key = web2py_uuid()
row.update_record(unique_key=unique_key) db(table.id == record_id).update(unique_key=unique_key)
response.session_id = '%s:%s' % (record_id, unique_key) response.session_id = '%s:%s' % (record_id, unique_key)
response.session_db_table = table response.session_db_table = table
response.session_db_record_id = record_id response.session_db_record_id = record_id
+8 -3
View File
@@ -1856,11 +1856,14 @@ class Auth(object):
delattr(user,'password') delattr(user,'password')
else: else:
user = Row(user) user = Row(user)
for key,value in user.items(): for key, value in user.items():
if callable(value) or key=='password': if callable(value) or key=='password':
delattr(user,key) delattr(user,key)
sessdb = current.response.session_db_table and current.response.session_db_table._db or None
current.session.renew( current.session.renew(
clear_session=not self.settings.keep_session_onlogin, db=self.db) clear_session=not self.settings.keep_session_onlogin,
db=sessdb
)
current.session.auth = Storage( current.session.auth = Storage(
user = user, user = user,
last_visit=current.request.now, last_visit=current.request.now,
@@ -2247,8 +2250,10 @@ class Auth(object):
current.session.auth = None current.session.auth = None
current.session.flash = self.messages.logged_out current.session.flash = self.messages.logged_out
sessdb = current.response.session_db_table and current.response.session_db_table._db or None
current.session.renew( current.session.renew(
clear_session=not self.settings.keep_session_onlogout, db=self.db) clear_session=not self.settings.keep_session_onlogout,
db=sessdb)
if not next is None: if not next is None:
redirect(next) redirect(next)