Skip to content

Instantly share code, notes, and snippets.

@an01f01
Created July 14, 2022 15:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save an01f01/4bc8baef0fefd2caabab2b5b06385bd1 to your computer and use it in GitHub Desktop.
Save an01f01/4bc8baef0fefd2caabab2b5b06385bd1 to your computer and use it in GitHub Desktop.
class LogoutHandler(BaseHandler):
def initialize(self):
database_url = os.environ['BOOKS_DB_CONN']
self.session = queries.TornadoSession(uri=database_url)
"""
POST handler for user loggin
"""
@gen.coroutine
def post(self):
auth_header = self.request.headers.get('Authorization')
print(auth_header)
if auth_header:
auth_token = auth_header.split(" ")[1]
else:
auth_token = ''
if auth_token:
token = decode_auth_token(auth_token)
if token['success'] == 0:
try:
sql = "SELECT COUNT(*) FROM blacklist_tokens WHERE token_str = %(token)s;"
results = yield self.session.query(sql, {'token': auth_token})
data_ret = results.as_dict()
results.free()
if (data_ret['count'] == 0):
sql = "INSERT INTO public.blacklist_tokens(token_str) VALUES (%(token)s) RETURNING blacklist_id;"
results = yield self.session.query(sql, {'token': auth_token})
data_ret = results.as_dict()
results.free()
self.set_status(201)
self.write({'status': 'success', 'message': 'Successfully logged out' })
self.finish()
else:
self.set_status(200)
self.write({'status': 'success', 'message': 'Token is already invalid' })
self.finish()
except (queries.DataError, queries.IntegrityError) as error:
self.set_status(200)
self.write({'status': 'fail', 'message': error})
self.finish()
else:
self.set_status(401)
self.write({'status': 'fail', 'message': token['message'] })
self.finish()
return
else:
self.set_status(403)
self.write({'status': 'fail', 'message': 'Invalid authentication token' })
self.finish()
return
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment