Source code for pyramid_fullauth.request
# Copyright (c) 2013 - 2014 by pyramid_fullauth authors and contributors <see AUTHORS file>
#
# This module is part of pyramid_fullauth and is released under
# the MIT License (MIT): http://opensource.org/licenses/MIT
"""These method gets added to each ``pyramid.request.Request`` object."""
from pyramid.httpexceptions import HTTPFound
from pyramid.security import remember, unauthenticated_userid, forget
from sqlalchemy.sql.expression import func
from sqlalchemy.orm.exc import NoResultFound
import pyramid_basemodel
from pyramid_fullauth.models import User
[docs]def user(request):
"""
Return user object.
When called for the first time, it queries for user, which is later available as a pure property
overriding this method. See :meth:`pyramid_fullauth.includeme` for logic behind property.
:returns: logged in user object, or None
:rtype: pyramid_fullauth.models.User
"""
userid = unauthenticated_userid(request)
if userid:
try:
user = pyramid_basemodel.Session.query(User).filter(User.id == userid).one()
return user
except NoResultFound: # pragma: no cover
pass
[docs]def logout(request):
"""
Log user out.
:param pyramid.request.Request request: a request object
"""
if request.user:
request.response.headerlist.extend(forget(request))
request.user = None