2017-11-02 01:36:16 -04:00
|
|
|
import jwt
|
|
|
|
|
|
|
|
from datetime import datetime, timedelta
|
|
|
|
from django.conf import settings
|
|
|
|
|
|
|
|
|
2017-11-02 23:37:39 -04:00
|
|
|
def encode(payload):
|
|
|
|
return jwt.encode(payload, settings.SECRET_KEY, algorithm='HS256')
|
|
|
|
|
|
|
|
|
|
|
|
def decode(token):
|
|
|
|
return jwt.decode(token, settings.SECRET_KEY, algorithms=('HS256',))
|
|
|
|
|
|
|
|
|
2017-11-03 00:51:27 -04:00
|
|
|
def gen_auth_code(req):
|
|
|
|
post = req.POST
|
2017-11-02 01:36:16 -04:00
|
|
|
params = {'me': post['me']}
|
|
|
|
if 'state' in post:
|
|
|
|
params['state'] = post['state']
|
|
|
|
|
|
|
|
code = {
|
|
|
|
'me': post['me'],
|
2017-11-03 00:51:27 -04:00
|
|
|
'uid': req.user.id,
|
|
|
|
'cid': post['client_id'],
|
2017-11-02 23:33:27 -04:00
|
|
|
'uri': post['redirect_uri'],
|
|
|
|
'typ': post.get('response_type', 'id'),
|
|
|
|
'iat': datetime.utcnow(),
|
|
|
|
'exp': datetime.utcnow() + timedelta(seconds=30),
|
2017-11-02 01:36:16 -04:00
|
|
|
}
|
|
|
|
if 'scope' in post:
|
2017-11-02 23:33:27 -04:00
|
|
|
code['sco'] = ' '.join(post.getlist('scope'))
|
2017-11-02 01:36:16 -04:00
|
|
|
|
2017-11-02 23:37:39 -04:00
|
|
|
params['code'] = encode(code)
|
2017-11-03 00:51:27 -04:00
|
|
|
return (post['redirect_uri'], params)
|
2017-11-02 01:36:16 -04:00
|
|
|
|
|
|
|
|
|
|
|
def verify_auth_code(c):
|
2017-11-02 23:37:39 -04:00
|
|
|
return decode(c)
|