Skip to content

Commit a10c376

Browse files
committed
Create Grant token.
1 parent 3b60b5d commit a10c376

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

app.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# coding: utf-8
22

3+
from datetime import datetime, timedelta
34
from flask import Flask
45
from flask import session, request
56
from flask import render_template, redirect, jsonify
@@ -54,6 +55,39 @@ def default_scopes(self):
5455
return []
5556

5657

58+
class Grant(db.Model):
59+
id = db.Column(db.Integer, primary_key=True)
60+
61+
user_id = db.Column(
62+
db.Integer, db.ForeignKey('user.id', ondelete='CASCADE')
63+
)
64+
user = db.relationship('User')
65+
66+
client_id = db.Column(
67+
db.String(40), db.ForeignKey('client.client_id'),
68+
nullable=False,
69+
)
70+
client = db.relationship('Client')
71+
72+
code = db.Column(db.String(255), index=True, nullable=False)
73+
74+
redirect_uri = db.Column(db.String(255))
75+
expires = db.Column(db.DateTime)
76+
77+
_scopes = db.Column(db.Text)
78+
79+
def delete(self):
80+
db.session.delete(self)
81+
db.session.commit()
82+
return self
83+
84+
@property
85+
def scopes(self):
86+
if self._scopes:
87+
return self._scopes.split()
88+
return []
89+
90+
5791
def current_user():
5892
if 'id' in session:
5993
uid = session['id']
@@ -100,6 +134,29 @@ def client():
100134
def load_client(client_id):
101135
return Client.query.filter_by(client_id=client_id).first()
102136

137+
138+
@oauth.grantgetter
139+
def load_grant(client_id, code):
140+
return Grant.query.filter_by(client_id=client_id, code=code).first()
141+
142+
143+
@oauth.grantsetter
144+
def save_grant(client_id, code, request, *args, **kwargs):
145+
# decide the expires time yourself
146+
expires = datetime.utcnow() + timedelta(seconds=100)
147+
grant = Grant(
148+
client_id=client_id,
149+
code=code['code'],
150+
redirect_uri=request.redirect_uri,
151+
_scopes=' '.join(request.scopes),
152+
user=current_user(),
153+
expires=expires
154+
)
155+
db.session.add(grant)
156+
db.session.commit()
157+
return grant
158+
159+
103160
if __name__ == '__main__':
104161
db.create_all()
105162
app.run()

0 commit comments

Comments
 (0)