Flask-OlinAuth implements OlinApps auth. It automatically provides a /olinauthlogin
and /olinauthlogout
route
to the application, handling the process of actually authenticating a user with olinapps.
At a high level, Flask-OlinAuth provides two useful pieces for your application,
both of which are demonstrated in example.py
.
A simple function decorator which ensures that a user is logged in before a view is shown. The user is redirected to the login portal, with correct arguments, if not.
A nice local proxy for all of your views to get the current user, formatted as a dictionary.
Will log out the currently authenticated user, allowing you to simply create your own logout view.
Flask-OlinAuth is very heavily inspired by Flask-Login, with structure, and functionality adopted, and much knowledge gained.
Install the extension with one of the following commands:
$ easy_install flask-olinauth
or alternatively if you have pip installed (which you should):
$ pip install flask-olinauth
from flask import Flask, url_for
from flask.ext.olinauth import OlinAuth, auth_required, current_user
app = Flask(__name__)
SECRET_KEY = "yeah, not actually a secret"
DEBUG = True
app.config.from_object(__name__)
oa = OlinAuth(app, 'localhost:5000')
#initial OlinAuth, with callback host of localhost:5000, for local server
oa.init_app(app, 'localhost:5000')
@app.route("/")
def index():
if current_user:
responseString = "Awesome index, guess what? %s is logged in. Sweet, right?" % current_user['id']
else:
responseString = "<html>It is kind of lonely here... No users are logged in. <a href=%s>Checkout my secret</a> </html>" % url_for('secret')
return responseString
@app.route("/secret")
@auth_required
def secret():
return "I wouldn't normally show you this, but since %s is logged in, here is the secret: 42" % current_user['id']
if __name__ == "__main__":
app.run(debug=True)