Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from os.path import dirname, join
- from flask import Flask, g, redirect, session
- import sqlite3dbm # Simple sqlite3 key-value store written by a coworker
- from flask_openid import OpenID
- app = Flask("my Google OpenID app")
- app.secret_key = YOUR RANDOM STRING HERE
- oid = OpenID(app, join(dirname(__file__), 'openid_store'))
- def open_db():
- g.db = getattr(g, 'db', None) or sqlite3dbm.sshelve.open("database.sqlite3")
- def get_user():
- open_db()
- return g.db.get('oid-' + session.get('openid', ''))
- @app.before_request
- def set_user_if_logged_in():
- open_db() # just to be explicit ...
- g.user = get_user()
- @app.route("/login")
- @oid.loginhandler
- def login():
- if g.user is not None:
- return redirect(oid.get_next_url())
- else:
- return oid.try_login("https://www.google.com/accounts/o8/id",
- ask_for=['email', 'fullname', 'nickname'])
- @oid.after_login
- def new_user(resp):
- session['openid'] = resp.identity_url
- if get_user() is None:
- user_id = g.db.get('user-count', 0)
- g.db['user-count'] = user_id + 1
- g.db['oid-' + session['openid']] = {
- 'id': user_id,
- 'email': resp.email,
- 'fullname': resp.fullname,
- 'nickname': resp.nickname}
- return redirect(oid.get_next_url())
- @app.route('/logout')
- def logout():
- session.pop('openid', None)
- return redirect(oid.get_next_url())
- @app.route('/')
- def hello():
- if g.user:
- return "hi user %(id)d (email %(email)s). <a href='/logout'>logout</a>" %(g.user)
- else:
- return "not logged in. <a href='/login'>login</a>"
- if __name__ == "__main__":
- app.run(port=2664, debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement