Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2018
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.26 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. import logging
  3.  
  4. from flask import session, request, abort, Blueprint, Response, current_app, flash
  5.  
  6. from src import models
  7. from src.models import db
  8.  
  9. auth = Blueprint("auth", __name__)
  10.  
  11.  
  12.  
  13.  
  14. @auth.route('/', methods=["POST", "GET"])
  15. def start():
  16. try:
  17. offer =""" - generate a joke /generate_joke \n
  18. - get a joke /get_joke \n
  19. - see list of jokes /show_jokes \n
  20. - delete the joke /delete_joke \n
  21. - update the joke \n"""
  22. if 'username' in session:
  23. name = session['username']
  24. logging.info("Greeting in start")
  25. return Response(
  26. response=f'Hi {name}. Welcome back!\n{offer}',
  27. status=200,
  28. headers={"Access-Control-Allow-Credentials": "true"})
  29. elif 'username' not in session:
  30. logging.error("Forbidden acces in /")
  31. return Response(
  32. response="Forbidden. Go to /auth/login or /auth/register to have an access.\n",
  33. status=401)
  34. except Exception as e:
  35. logging.error(e)
  36. return Response(
  37. response="Unnexpected behaviour\n",
  38. status=500)
  39.  
  40. @auth.route('/register', methods=["GET", "POST"])
  41. def register():
  42. if True:
  43. username = request.json.get("username")
  44. password = request.json.get("password")
  45. user = models.User.query.filter(models.User.username == username).first()
  46. if user is not None:
  47. return Response(
  48. response="Already exists!\n",
  49. status=409)
  50.  
  51. if username and password:
  52. user = models.User(username, password)
  53. db.session.add(user)
  54. db.session.commit()
  55. logging.info("Login by user = {}".format(username))
  56. print(models.User.query.all())
  57. return Response(
  58. response="You're registred successfuly\n",
  59. status=200,
  60. headers={"Access-Control-Allow-Credentials": "true"})
  61. else:
  62. raise Exception
  63. else:
  64. # except Exception as e:
  65. logging.error(e)
  66. return Response(
  67. response=f"{e}\n",
  68. status=400) # Not Acceptable
  69.  
  70.  
  71. @auth.route("/login", methods=["POST"])
  72. def login():
  73. try:
  74. username = request.json.get("username")
  75. password = request.json.get("password")
  76. print(username, password)
  77. user = models.User.query.filter(models.User.username == username).first()
  78. print(user)
  79. # return Response(user, 200)
  80. if user is not None and user.check_password(password):
  81. # session.clear()
  82. session["username"] = username
  83. logging.info("Login by user = {}".format(username))
  84. return Response(
  85. response=f"You're logged as {username}!\n",
  86. status=200,
  87. headers={"Access-Control-Allow-Credentials": "true"})
  88. else:
  89. raise Exception
  90. except Exception as e:
  91. logging.error(e)
  92. return Response(
  93. response=f"Wrong credentials, {username}!\n",
  94. status=401)
  95.  
  96.  
  97. @auth.route("/logout", methods=["GET", "POST"])
  98. def logout():
  99. try:
  100. logging.info("Logout by user = {}".format(session.get("username")))
  101. session.pop("username", None)
  102. logging.info("Successfuly logged out")
  103. session.clean()
  104. return Response(
  105. response="You're logged out.\n",
  106. status=200)
  107. except Exception as e:
  108. logging.error(e)
  109. return Response(
  110. response="Unnexpected behaviour.\n",
  111. status=500)
  112.  
  113. @auth.before_request
  114. def before_request():
  115. try:
  116. if 'username' not in session and request.endpoint == "auth.register" \
  117. or request.endpoint != "auth":
  118. pass
  119. else:
  120. raise Exception
  121. except Exception as e:
  122. logging.error(e)
  123. return Response(
  124. response="Access denied.\n",
  125. status=401)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement