Kevin Hu commited on
Commit
56f42b0
·
1 Parent(s): 258e6bf

Fix: potential risk (#3515)

Browse files

### What problem does this PR solve?


### Type of change

- [x] Refactoring

Files changed (1) hide show
  1. api/apps/tenant_app.py +25 -0
api/apps/tenant_app.py CHANGED
@@ -17,6 +17,7 @@
17
  from flask import request
18
  from flask_login import login_required, current_user
19
 
 
20
  from api.db import UserTenantRole, StatusEnum
21
  from api.db.db_models import UserTenant
22
  from api.db.services.user_service import UserTenantService, UserService
@@ -28,6 +29,12 @@ from api.utils.api_utils import get_json_result, validate_request, server_error_
28
  @manager.route("/<tenant_id>/user/list", methods=["GET"])
29
  @login_required
30
  def user_list(tenant_id):
 
 
 
 
 
 
31
  try:
32
  users = UserTenantService.get_by_tenant_id(tenant_id)
33
  for u in users:
@@ -41,6 +48,12 @@ def user_list(tenant_id):
41
  @login_required
42
  @validate_request("email")
43
  def create(tenant_id):
 
 
 
 
 
 
44
  req = request.json
45
  usrs = UserService.query(email=req["email"])
46
  if not usrs:
@@ -70,6 +83,12 @@ def create(tenant_id):
70
  @manager.route('/<tenant_id>/user/<user_id>', methods=['DELETE'])
71
  @login_required
72
  def rm(tenant_id, user_id):
 
 
 
 
 
 
73
  try:
74
  UserTenantService.filter_delete([UserTenant.tenant_id == tenant_id, UserTenant.user_id == user_id])
75
  return get_json_result(data=True)
@@ -92,6 +111,12 @@ def tenant_list():
92
  @manager.route("/agree/<tenant_id>", methods=["PUT"])
93
  @login_required
94
  def agree(tenant_id):
 
 
 
 
 
 
95
  try:
96
  UserTenantService.filter_update([UserTenant.tenant_id == tenant_id, UserTenant.user_id == current_user.id], {"role": UserTenantRole.NORMAL})
97
  return get_json_result(data=True)
 
17
  from flask import request
18
  from flask_login import login_required, current_user
19
 
20
+ from api import settings
21
  from api.db import UserTenantRole, StatusEnum
22
  from api.db.db_models import UserTenant
23
  from api.db.services.user_service import UserTenantService, UserService
 
29
  @manager.route("/<tenant_id>/user/list", methods=["GET"])
30
  @login_required
31
  def user_list(tenant_id):
32
+ if current_user.id != tenant_id:
33
+ return get_json_result(
34
+ data=False,
35
+ message='No authorization.',
36
+ code=settings.RetCode.AUTHENTICATION_ERROR)
37
+
38
  try:
39
  users = UserTenantService.get_by_tenant_id(tenant_id)
40
  for u in users:
 
48
  @login_required
49
  @validate_request("email")
50
  def create(tenant_id):
51
+ if current_user.id != tenant_id:
52
+ return get_json_result(
53
+ data=False,
54
+ message='No authorization.',
55
+ code=settings.RetCode.AUTHENTICATION_ERROR)
56
+
57
  req = request.json
58
  usrs = UserService.query(email=req["email"])
59
  if not usrs:
 
83
  @manager.route('/<tenant_id>/user/<user_id>', methods=['DELETE'])
84
  @login_required
85
  def rm(tenant_id, user_id):
86
+ if current_user.id != tenant_id:
87
+ return get_json_result(
88
+ data=False,
89
+ message='No authorization.',
90
+ code=settings.RetCode.AUTHENTICATION_ERROR)
91
+
92
  try:
93
  UserTenantService.filter_delete([UserTenant.tenant_id == tenant_id, UserTenant.user_id == user_id])
94
  return get_json_result(data=True)
 
111
  @manager.route("/agree/<tenant_id>", methods=["PUT"])
112
  @login_required
113
  def agree(tenant_id):
114
+ if current_user.id != tenant_id:
115
+ return get_json_result(
116
+ data=False,
117
+ message='No authorization.',
118
+ code=settings.RetCode.AUTHENTICATION_ERROR)
119
+
120
  try:
121
  UserTenantService.filter_update([UserTenant.tenant_id == tenant_id, UserTenant.user_id == current_user.id], {"role": UserTenantRole.NORMAL})
122
  return get_json_result(data=True)