Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

59 lines
1.5KB

  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. logger = logging.getLogger(__name__)
  10. cbpi._login_manager = flask_login.LoginManager()
  11. cbpi._login_manager.init_app(cbpi._app)
  12. @cbpi._app.route('/login', methods=['POST'])
  13. def login():
  14. data = request.json
  15. password = cbpi.get_config_parameter("password", None)
  16. if password is None:
  17. return ('',500)
  18. if password == data.get("password",""):
  19. user = User()
  20. user.id = "craftbeerpi"
  21. flask_login.login_user(user)
  22. return ('',204)
  23. else:
  24. return ('',401)
  25. @cbpi._app.route('/logout', methods=['POST'])
  26. def logout():
  27. flask_login.logout_user()
  28. return 'Logged out'
  29. @cbpi._login_manager.user_loader
  30. def user_loader(user):
  31. logger.debug(cbpi.get_config_parameter("password_security", "NO"))
  32. logger.debug(user)
  33. if cbpi.get_config_parameter("password_security", "NO") == "YES":
  34. if user != "craftbeerpi":
  35. return
  36. user = User()
  37. user.id = user
  38. return user
  39. else:
  40. user = User()
  41. user.id = user
  42. return user
  43. @cbpi._login_manager.unauthorized_handler
  44. def unauthorized_handler():
  45. return ('Please login',401)