Brak opisu

manage_groups_routes.py 4.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. # IRIS Source Code
  2. # contact@dfir-iris.org
  3. #
  4. # This program is free software; you can redistribute it and/or
  5. # modify it under the terms of the GNU Lesser General Public
  6. # License as published by the Free Software Foundation; either
  7. # version 3 of the License, or (at your option) any later version.
  8. #
  9. # This program is distributed in the hope that it will be useful,
  10. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. # Lesser General Public License for more details.
  13. #
  14. # You should have received a copy of the GNU Lesser General Public License
  15. # along with this program; if not, write to the Free Software Foundation,
  16. # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  17. from flask import Blueprint
  18. from flask import render_template
  19. from flask import url_for
  20. from flask_login import current_user
  21. from werkzeug.utils import redirect
  22. from app.datamgmt.manage.manage_cases_db import list_cases_dict
  23. from app.datamgmt.manage.manage_groups_db import get_group_details
  24. from app.datamgmt.manage.manage_groups_db import get_group_with_members
  25. from app.datamgmt.manage.manage_users_db import get_users_list_restricted
  26. from app.forms import AddGroupForm
  27. from app.iris_engine.access_control.utils import ac_get_all_access_level
  28. from app.iris_engine.access_control.utils import ac_get_all_permissions
  29. from app.models.authorization import Permissions
  30. from app.blueprints.access_controls import ac_requires
  31. from app.blueprints.responses import response_error
  32. manage_groups_blueprint = Blueprint(
  33. 'manage_groups',
  34. __name__,
  35. template_folder='templates/access_control'
  36. )
  37. @manage_groups_blueprint.route('/manage/groups/<int:cur_id>/modal', methods=['GET'])
  38. @ac_requires(Permissions.server_administrator, no_cid_required=True)
  39. def manage_groups_view_modal(cur_id, caseid, url_redir):
  40. if url_redir:
  41. return redirect(url_for('manage_groups.manage_groups_index', cid=caseid))
  42. form = AddGroupForm()
  43. group = get_group_details(cur_id)
  44. if not group:
  45. return response_error("Invalid group ID")
  46. all_perms = ac_get_all_permissions()
  47. form.group_name.render_kw = {'value': group.group_name}
  48. form.group_description.render_kw = {'value': group.group_description}
  49. return render_template("modal_add_group.html", form=form, group=group, all_perms=all_perms)
  50. @manage_groups_blueprint.route('/manage/groups/add/modal', methods=['GET'])
  51. @ac_requires(Permissions.server_administrator, no_cid_required=True)
  52. def manage_groups_add_modal(caseid, url_redir):
  53. if url_redir:
  54. return redirect(url_for('manage_groups.manage_groups_index', cid=caseid))
  55. form = AddGroupForm()
  56. all_perms = ac_get_all_permissions()
  57. return render_template("modal_add_group.html", form=form, group=None, all_perms=all_perms)
  58. @manage_groups_blueprint.route('/manage/groups/<int:cur_id>/members/modal', methods=['GET'])
  59. @ac_requires(Permissions.server_administrator, no_cid_required=True)
  60. def manage_groups_members_modal(cur_id, caseid, url_redir):
  61. if url_redir:
  62. return redirect(url_for('manage_groups_blueprint.manage_groups_index', cid=caseid))
  63. group = get_group_with_members(cur_id)
  64. if not group:
  65. return response_error("Invalid group ID")
  66. users = get_users_list_restricted()
  67. return render_template("modal_add_group_members.html", group=group, users=users)
  68. @manage_groups_blueprint.route('/manage/groups/<int:cur_id>/cases-access/modal', methods=['GET'])
  69. @ac_requires(Permissions.server_administrator, no_cid_required=True)
  70. def manage_groups_cac_modal(cur_id, caseid, url_redir):
  71. if url_redir:
  72. return redirect(url_for('manage_groups.manage_groups_index', cid=caseid))
  73. group = get_group_details(cur_id)
  74. if not group:
  75. return response_error("Invalid group ID")
  76. cases_list = list_cases_dict(current_user.id)
  77. group_cases_access = [case.get('case_id') for case in group.group_cases_access]
  78. outer_cases_list = []
  79. for case in cases_list:
  80. if case.get('case_id') not in group_cases_access:
  81. outer_cases_list.append({
  82. "case_id": case.get('case_id'),
  83. "case_name": case.get('case_name')
  84. })
  85. access_levels = ac_get_all_access_level()
  86. return render_template("modal_add_group_cac.html", group=group, outer_cases=outer_cases_list,
  87. access_levels=access_levels)