diff options
author | Elrond <elrond+mediagoblin.org@samba-tng.org> | 2012-01-13 22:59:14 +0100 |
---|---|---|
committer | Elrond <elrond+mediagoblin.org@samba-tng.org> | 2012-01-14 13:36:00 +0100 |
commit | 52fc51f6a9b6379d39d391bd54473eebb6d23cd5 (patch) | |
tree | 1e021d353fb4c699faa7df5f91f2604d675e5b0d | |
parent | 9c947004139d0d0ae5a879cd4c120891f8a8d51e (diff) | |
download | mediagoblin-52fc51f6a9b6379d39d391bd54473eebb6d23cd5.tar.lz mediagoblin-52fc51f6a9b6379d39d391bd54473eebb6d23cd5.tar.xz mediagoblin-52fc51f6a9b6379d39d391bd54473eebb6d23cd5.zip |
Drop sessions with invalid ObjectIds
The session can contain invalid objectids when switching a
more or less live instance (with logged in users) from
mongo to sql or vice versa.
So drop the complete session and force the user to login
again.
-rw-r--r-- | mediagoblin/tools/request.py | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/mediagoblin/tools/request.py b/mediagoblin/tools/request.py index b1cbe119..7e193125 100644 --- a/mediagoblin/tools/request.py +++ b/mediagoblin/tools/request.py @@ -14,7 +14,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -from mediagoblin.db.util import ObjectId +from mediagoblin.db.util import ObjectId, InvalidId def setup_user_in_request(request): """ @@ -25,13 +25,17 @@ def setup_user_in_request(request): request.user = None return - user = None - user = request.app.db.User.one( - {'_id': ObjectId(request.session['user_id'])}) + try: + oid = ObjectId(request.session['user_id']) + except InvalidId: + user = None + else: + user = request.db.User.one({'_id': oid}) if not user: # Something's wrong... this user doesn't exist? Invalidate # this session. + print "Killing session for %r" % request.session['user_id'] request.session.invalidate() request.user = user |