25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.3KB

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