View difference between Paste ID: QZKjXSdj and DifbFijr
SHOW: | | - or go back to the newest paste.
1
from os.path import dirname, join
2-
from flask import Flask, flash, g, redirect, session
2+
from flask import Flask, g, redirect, session
3
import sqlite3dbm # Simple sqlite3 key-value store written by a coworker
4
from flask_openid import OpenID
5
6
app = Flask("my Google OpenID app")
7
app.secret_key = YOUR RANDOM STRING HERE
8
oid = OpenID(app, join(dirname(__file__), 'openid_store'))
9
10
def open_db():
11
    g.db = getattr(g, 'db', None) or sqlite3dbm.sshelve.open("database.sqlite3")
12
13
def get_user():
14
    open_db()
15
    return g.db.get('oid-' + session.get('openid', ''))
16
17
@app.before_request
18
def set_user_if_logged_in():
19
    open_db() # just to be explicit ...
20
    g.user = get_user()
21
22
@app.route("/login")
23
@oid.loginhandler
24
def login():
25
    if g.user is not None:
26
        return redirect(oid.get_next_url())
27
    else:
28
        return oid.try_login("https://www.google.com/accounts/o8/id",
29
            ask_for=['email', 'fullname', 'nickname'])
30
31
@oid.after_login
32
def new_user(resp):
33
    session['openid'] = resp.identity_url
34
    if get_user() is None:
35
        user_id = g.db.get('user-count', 0)
36
        g.db['user-count'] = user_id + 1
37
        g.db['oid-' + session['openid']] = {
38
            'id': user_id,
39
            'email': resp.email,
40
            'fullname': resp.fullname,
41
            'nickname': resp.nickname}
42
    return redirect(oid.get_next_url())
43
44
@app.route('/logout')
45
def logout():
46-
    flash(u'You were signed out')
46+
47
    return redirect(oid.get_next_url())
48
49
@app.route('/')
50
def hello():
51
    if g.user:
52
        return "hi user %(id)d (email %(email)s). <a href='/logout'>logout</a>" %(g.user)
53
    else:
54
        return "not logged in. <a href='/login'>login</a>"
55
56
if __name__ == "__main__":
57
    app.run(port=2664, debug=True)