Skip to content

Commit 36e917d

Browse files
authored
feat(bfl): reuse owner's proxy config when activating sub-accounts (#2300)
1 parent fe98eaf commit 36e917d

File tree

2 files changed

+32
-5
lines changed

2 files changed

+32
-5
lines changed

framework/bfl/pkg/apis/settings/v1alpha1/handler.go

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -243,11 +243,34 @@ func (h *Handler) handleActivate(req *restful.Request, resp *restful.Response) {
243243
return
244244
}
245245

246+
// for owner user, use the reverse proxy config from the payload
247+
// for non-owner user, reuse the owner's reverse proxy config
248+
isOwner := userOp.GetUserAnnotation(user, constants.UserAnnotationOwnerRole) == constants.RoleOwner
249+
246250
reverseProxyConf := &ReverseProxyConfig{}
247-
if payload.FRP.Host != "" {
248-
reverseProxyConf.EnableFRP = true
249-
reverseProxyConf.FRPServer = payload.FRP.Host
250-
reverseProxyConf.FRPAuthMethod = FRPAuthMethodJWS
251+
if isOwner {
252+
if payload.FRP.Host != "" {
253+
reverseProxyConf.EnableFRP = true
254+
reverseProxyConf.FRPServer = payload.FRP.Host
255+
reverseProxyConf.FRPAuthMethod = FRPAuthMethodJWS
256+
}
257+
} else {
258+
ownerUser, ownerErr := userOp.GetOwnerUser()
259+
if ownerErr != nil {
260+
err = fmt.Errorf("activate system: failed to get owner user for reverse proxy config: %v", ownerErr)
261+
klog.Error(err)
262+
response.HandleError(resp, err)
263+
return
264+
}
265+
ownerNamespace := fmt.Sprintf(constants.UserspaceNameFormat, ownerUser.Name)
266+
ownerConf, ownerConfErr := GetReverseProxyConfigFromNamespace(ctx, ownerNamespace)
267+
if ownerConfErr != nil {
268+
err = fmt.Errorf("activate system: failed to get owner's reverse proxy config: %v", ownerConfErr)
269+
klog.Error(err)
270+
response.HandleError(resp, err)
271+
return
272+
}
273+
reverseProxyConf = ownerConf
251274
}
252275
// no matter whether the reverse proxy is enabled, we need to persist the configuration
253276
// so that the configuration can be fetched by the frontend

framework/bfl/pkg/apis/settings/v1alpha1/reverseproxyconf.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -549,7 +549,11 @@ func (conf *ReverseProxyConfig) generateReverseProxyConfigMapData() map[string]s
549549
}
550550

551551
func GetReverseProxyConfig(ctx context.Context) (*ReverseProxyConfig, error) {
552-
configData, err := k8sutil.GetConfigMapData(ctx, constants.Namespace, constants.ReverseProxyConfigMapName)
552+
return GetReverseProxyConfigFromNamespace(ctx, constants.Namespace)
553+
}
554+
555+
func GetReverseProxyConfigFromNamespace(ctx context.Context, namespace string) (*ReverseProxyConfig, error) {
556+
configData, err := k8sutil.GetConfigMapData(ctx, namespace, constants.ReverseProxyConfigMapName)
553557
if err != nil {
554558
return nil, errors.Wrap(err, "error getting configmap")
555559
}

0 commit comments

Comments
 (0)