- ru
- Language: en
- Documentation version: 0.1
CherryPy Framework¶
CherryPy framework is supported, it works but I’m sure there’s room for
improvements. The implementation uses SQLAlchemy as ORM and expects some values
accessible on cherrypy.request
for it to work.
At the moment the configuration is expected on cherrypy.config
but ideally
it should be an application configuration instead.
Expected values are:
cherrypy.request.user
Current logged in user, load it in your application on a
before_handler
handler.cherrypy.request.db
Current database session, again, load it in your application on a
before_handler
.
Dependencies¶
The CherryPy application depends on sqlalchemy, there’s no support for others ORMs yet.
Installing¶
From pypi:
$ pip install social-auth-app-cherrypy
Enabling the application¶
The application is defined on social_cherrypy.views.CherryPyPSAViews
,
register it in the preferred way for your project.
Check the rest of the docs for the other settings like enabling authentication backends and backends keys.
Models Setup¶
The models are located in social_cherrypy.models
. A reference to
your User
model is required to be defined in the project settings, it
should be an import path, for example:
cherrypy.config.update({
'SOCIAL_AUTH_USER_MODEL': 'models.User'
})
Login mechanism¶
By default the application sets the session value user_id
, this is a simple
solution and it should be improved, if you want to provider your own login
mechanism you can do it by defining the SOCIAL_AUTH_LOGIN_METHOD
setting,
it should be an import path to a callable, like this:
SOCIAL_AUTH_USER_MODEL = 'app.login_user'
And an example of this function:
def login_user(strategy, user):
strategy.session_set('user_id', user.id)
Then, ensure to load the user in your application at cherrypy.request.user
,
for example:
def load_user():
user_id = cherrypy.session.get('user_id')
if user_id:
cherrypy.request.user = cherrypy.request.db.query(User).get(user_id)
else:
cherrypy.request.user = None
cherrypy.tools.authenticate = cherrypy.Tool('before_handler', load_user)