fix: allow bound tenant option loading
This commit is contained in:
@@ -479,6 +479,9 @@ func (s *sSysImTenant) View(ctx context.Context, in *sysin.ImTenantViewInp) (res
|
||||
if err = in.Filter(ctx); err != nil {
|
||||
return
|
||||
}
|
||||
if err = ensureImTenantTargetAllowed(ctx, in.Id); err != nil {
|
||||
return
|
||||
}
|
||||
if err = s.Model(ctx).WherePri(in.Id).Hook(hook.MemberSummary).Scan(&res); err != nil {
|
||||
err = gerror.Wrap(err, "获取IM租户信息失败,请稍后重试!")
|
||||
return
|
||||
@@ -536,6 +539,9 @@ func (s *sSysImTenant) Usage(ctx context.Context, in *sysin.ImTenantUsageInp) (r
|
||||
if err = in.Filter(ctx); err != nil {
|
||||
return
|
||||
}
|
||||
if err = ensureImTenantTargetAllowed(ctx, in.Id); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
var tenant *entity.ImTenant
|
||||
if err = s.Model(ctx).WherePri(in.Id).Scan(&tenant); err != nil {
|
||||
@@ -577,6 +583,23 @@ func (s *sSysImTenant) Usage(ctx context.Context, in *sysin.ImTenantUsageInp) (r
|
||||
return
|
||||
}
|
||||
|
||||
func ensureImTenantTargetAllowed(ctx context.Context, tenantId int64) error {
|
||||
if isImPlatformAdmin(ctx, contexts.GetUserId(ctx)) {
|
||||
return nil
|
||||
}
|
||||
if tenantId <= 0 {
|
||||
return gerror.New("商户ID不能为空")
|
||||
}
|
||||
boundTenantId := contexts.GetTenantId(ctx)
|
||||
if boundTenantId <= 0 {
|
||||
return gerror.New("当前管理员未关联IM租户")
|
||||
}
|
||||
if tenantId != boundTenantId {
|
||||
return gerror.New("无权访问其它商户")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *sSysImTenant) queryScalarInt64(ctx context.Context, db gdb.DB, label, sql string, warnings *[]string, args ...any) int64 {
|
||||
value, err := db.GetValue(ctx, sql, args...)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user