Bez popisu

manage_users.py 5.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. # IRIS Source Code
  2. # Copyright (C) 2021 - Airbus CyberSecurity (SAS)
  3. # ir@cyberactionlab.net
  4. #
  5. # This program is free software; you can redistribute it and/or
  6. # modify it under the terms of the GNU Lesser General Public
  7. # License as published by the Free Software Foundation; either
  8. # version 3 of the License, or (at your option) any later version.
  9. #
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  13. # Lesser General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU Lesser General Public License
  16. # along with this program; if not, write to the Free Software Foundation,
  17. # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  18. from flask import Blueprint
  19. from flask import redirect
  20. from flask import render_template
  21. from flask import url_for
  22. from flask_login import current_user
  23. from app.datamgmt.client.client_db import get_client_list
  24. from app.datamgmt.manage.manage_cases_db import list_cases_dict
  25. from app.datamgmt.manage.manage_groups_db import get_groups_list
  26. from app.datamgmt.manage.manage_srv_settings_db import get_srv_settings
  27. from app.datamgmt.manage.manage_users_db import get_user_details
  28. from app.datamgmt.manage.manage_users_db import get_user_effective_permissions
  29. from app.forms import AddUserForm
  30. from app.iris_engine.access_control.utils import ac_get_all_access_level
  31. from app.iris_engine.access_control.utils import ac_current_user_has_permission
  32. from app.models.authorization import Permissions
  33. from app.blueprints.access_controls import ac_requires
  34. from app.blueprints.responses import response_error
  35. manage_users_blueprint = Blueprint('manage_users', __name__, template_folder='templates')
  36. @manage_users_blueprint.route('/manage/users/add/modal', methods=['GET'])
  37. @ac_requires(Permissions.server_administrator, no_cid_required=True)
  38. def add_user_modal(caseid, url_redir):
  39. if url_redir:
  40. return redirect(url_for('manage_users.add_user', cid=caseid))
  41. user = None
  42. form = AddUserForm()
  43. server_settings = get_srv_settings()
  44. return render_template("modal_add_user.html", form=form, user=user, server_settings=server_settings)
  45. @manage_users_blueprint.route('/manage/users/<int:cur_id>/modal', methods=['GET'])
  46. @ac_requires(Permissions.server_administrator, no_cid_required=True)
  47. def view_user_modal(cur_id, caseid, url_redir):
  48. if url_redir:
  49. return redirect(url_for('manage_users.add_user', cid=caseid))
  50. form = AddUserForm()
  51. user = get_user_details(cur_id, include_api_key=True)
  52. if not user:
  53. return response_error("Invalid user ID")
  54. permissions = get_user_effective_permissions(cur_id)
  55. form.user_login.render_kw = {'value': user.get('user_login')}
  56. form.user_name.render_kw = {'value': user.get('user_name')}
  57. form.user_email.render_kw = {'value': user.get('user_email')}
  58. form.user_is_service_account.render_kw = {'checked': user.get('user_is_service_account')}
  59. server_settings = get_srv_settings()
  60. return render_template("modal_add_user.html", form=form, user=user, server_settings=server_settings,
  61. permissions=permissions)
  62. @manage_users_blueprint.route('/manage/users/<int:cur_id>/groups/modal', methods=['GET'])
  63. @ac_requires(Permissions.server_administrator, no_cid_required=True)
  64. def manage_user_group_modal(cur_id, caseid, url_redir):
  65. if url_redir:
  66. return redirect(url_for('manage_users.add_user', cid=caseid))
  67. user = get_user_details(cur_id)
  68. if not user:
  69. return response_error("Invalid user ID")
  70. groups = get_groups_list()
  71. return render_template("modal_manage_user_groups.html", groups=groups, user=user)
  72. @manage_users_blueprint.route('/manage/users/<int:cur_id>/customers/modal', methods=['GET'])
  73. @ac_requires(Permissions.server_administrator, no_cid_required=True)
  74. def manage_user_customers_modal(cur_id, caseid, url_redir):
  75. if url_redir:
  76. return redirect(url_for('manage_users.add_user', cid=caseid))
  77. user = get_user_details(cur_id)
  78. if not user:
  79. return response_error("Invalid user ID")
  80. user_is_server_administrator = ac_current_user_has_permission(Permissions.server_administrator)
  81. groups = get_client_list(current_user_id=current_user.id,
  82. is_server_administrator=user_is_server_administrator)
  83. return render_template("modal_manage_user_customers.html", groups=groups, user=user)
  84. @manage_users_blueprint.route('/manage/users/<int:cur_id>/cases-access/modal', methods=['GET'])
  85. @ac_requires(Permissions.server_administrator, no_cid_required=True)
  86. def manage_user_cac_modal(cur_id, caseid, url_redir):
  87. if url_redir:
  88. return redirect(url_for('manage_users.add_user', cid=caseid))
  89. user = get_user_details(cur_id)
  90. if not user:
  91. return response_error("Invalid user ID")
  92. cases_list = list_cases_dict(current_user.id)
  93. user_cases_access = [case.get('case_id') for case in user.get('user_cases_access')]
  94. outer_cases_list = []
  95. for case in cases_list:
  96. if case.get('case_id') not in user_cases_access:
  97. outer_cases_list.append({
  98. "case_id": case.get('case_id'),
  99. "case_name": case.get('case_name')
  100. })
  101. access_levels = ac_get_all_access_level()
  102. return render_template("modal_add_user_cac.html", user=user, outer_cases=outer_cases_list,
  103. access_levels=access_levels)