소스 검색

add validation checks for admin invite

abhishek9686 1 년 전
부모
커밋
b160445a18
1개의 변경된 파일15개의 추가작업 그리고 0개의 파일을 삭제
  1. 15 0
      pro/controllers/users.go

+ 15 - 0
pro/controllers/users.go

@@ -164,6 +164,21 @@ func inviteUsers(w http.ResponseWriter, r *http.Request) {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
 		return
 	}
+	callerUserName := r.Header.Get("user")
+	caller, err := logic.GetUser(callerUserName)
+	if err != nil {
+		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "notfound"))
+		return
+	}
+	if inviteReq.PlatformRoleID == models.SuperAdminRole.String() {
+		logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("super admin cannot be invited"), "badrequest"))
+		return
+	}
+	if (inviteReq.PlatformRoleID == models.AdminRole.String() ||
+		inviteReq.PlatformRoleID == models.SuperAdminRole.String()) && caller.PlatformRoleID != models.SuperAdminRole {
+		logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("only superadmin can invite admin users"), "forbidden"))
+		return
+	}
 	//validate Req
 	err = proLogic.IsGroupsValid(inviteReq.UserGroups)
 	if err != nil {