選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

74 行
1.7KB

  1. import flask_login
  2. from flask import request
  3. from modules import cbpi
  4. class User(flask_login.UserMixin):
  5. pass
  6. @cbpi.addon.core.initializer(order=0)
  7. def log(cbpi):
  8. cbpi._login_manager = flask_login.LoginManager()
  9. cbpi._login_manager.init_app(cbpi.web)
  10. @cbpi.web.route('/login', methods=['POST'])
  11. def login():
  12. data = request.json
  13. password = cbpi.get_config_parameter("password", None)
  14. if password is None:
  15. return ('',500)
  16. if password == data.get("password",""):
  17. user = User()
  18. user.id = "craftbeerpi"
  19. flask_login.login_user(user)
  20. return ('',204)
  21. else:
  22. return ('',401)
  23. @cbpi.web.route('/logout', methods=['POST'])
  24. def logout():
  25. flask_login.logout_user()
  26. return 'Logged out'
  27. @cbpi._login_manager.request_loader
  28. def load_user_from_request(request):
  29. api_key = request.args.get('api_key')
  30. if cbpi.get_config_parameter("password_security", "NO") == "NO":
  31. user = User()
  32. user.id = "craftbeerpi"
  33. return user
  34. elif api_key == "123":
  35. user = User()
  36. user.id = "craftbeerpi"
  37. return user
  38. return None
  39. @cbpi._login_manager.user_loader
  40. def user_loader(user):
  41. if cbpi.get_config_parameter("password_security", "NO") == "YES":
  42. if user != "craftbeerpi":
  43. return
  44. user = User()
  45. user.id = user
  46. return user
  47. else:
  48. user = User()
  49. user.id = user
  50. return user
  51. @cbpi._login_manager.unauthorized_handler
  52. def unauthorized_handler():
  53. return ('Please login',401)