logged_in_user.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. from sqlalchemy import select
  2. from werkzeug.exceptions import Forbidden, Unauthorized
  3. from flask_security.core import current_user
  4. from flask_security import login_required
  5. from flexmeasures.auth.policy import check_access
  6. from flexmeasures.data import db
  7. from flexmeasures.data.models.audit_log import AuditLog
  8. from flexmeasures.data.models.user import Account
  9. from flexmeasures.ui.views import flexmeasures_ui
  10. from flexmeasures.data.services.accounts import (
  11. get_number_of_assets_in_account,
  12. get_account_roles,
  13. )
  14. from flexmeasures.ui.utils.view_utils import render_flexmeasures_template
  15. @flexmeasures_ui.route("/logged-in-user", methods=["GET"])
  16. @login_required
  17. def logged_in_user_view():
  18. """
  19. Basic information about the currently logged-in user.
  20. Plus basic actions (logout, reset pwd)
  21. """
  22. account_roles = get_account_roles(current_user.account_id)
  23. account_role_names = [account_role.name for account_role in account_roles]
  24. account = db.session.execute(
  25. select(Account).filter_by(id=current_user.account_id)
  26. ).scalar()
  27. user_can_view_account_auditlog = True
  28. try:
  29. check_access(AuditLog.account_table_acl(account), "read")
  30. except (Forbidden, Unauthorized):
  31. user_can_view_account_auditlog = False
  32. user_view_user_auditlog = True
  33. try:
  34. check_access(AuditLog.user_table_acl(current_user), "read")
  35. except (Forbidden, Unauthorized):
  36. user_view_user_auditlog = False
  37. return render_flexmeasures_template(
  38. "admin/logged_in_user.html",
  39. logged_in_user=current_user,
  40. roles=",".join([role.name for role in current_user.roles]),
  41. num_assets=get_number_of_assets_in_account(current_user.account_id),
  42. account_role_names=account_role_names,
  43. can_view_account_auditlog=user_can_view_account_auditlog,
  44. can_view_user_auditlog=user_view_user_auditlog,
  45. )