@@ -2615,6 +2615,39 @@ func HandleSetEnvironments(resp http.ResponseWriter, request *http.Request) {
26152615 //}
26162616 }
26172617
2618+ if project.Environment == "onprem" {
2619+ currentOrg, err := GetOrg(ctx, user.ActiveOrg.Id)
2620+ if err != nil {
2621+ resp.WriteHeader(401)
2622+ resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "Failed find your organization"}`)))
2623+ return
2624+ }
2625+
2626+ parentOrg := currentOrg
2627+ if len(currentOrg.CreatorOrg) > 0 {
2628+ parentOrg, err = GetOrg(ctx, currentOrg.CreatorOrg)
2629+ if err != nil {
2630+ resp.WriteHeader(401)
2631+ resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "Failed find your organization"}`)))
2632+ return
2633+ }
2634+ }
2635+ envs, err := GetEnvironments(ctx, currentOrg.Id)
2636+ if err != nil {
2637+ resp.WriteHeader(401)
2638+ resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "Failed to get environments of organization"}`)))
2639+ return
2640+ }
2641+
2642+ licenseOrg := HandleCheckLicense(ctx, *parentOrg)
2643+ if !licenseOrg.SyncFeatures.MultiEnv.Active && int64(len(envs)) > licenseOrg.SyncFeatures.MultiEnv.Limit {
2644+ resp.WriteHeader(401)
2645+ resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "You have reached the limit of %d environments for your subscription. Upgrade to an enterprise plan or contact
[email protected] for more info."}`, licenseOrg.SyncFeatures.MultiEnv.Limit)))
2646+ return
2647+ }
2648+
2649+ }
2650+
26182651 // Validate input here
26192652 defaults := 0
26202653 parsedEnvs := []Environment{}
@@ -3036,12 +3069,42 @@ func HandleGetEnvironments(resp http.ResponseWriter, request *http.Request) {
30363069 }
30373070 }
30383071
3072+ hideEnvs := false
3073+ if project.Environment == "onprem" {
3074+ currentOrg, err := GetOrg(ctx, user.ActiveOrg.Id)
3075+ if err != nil {
3076+ resp.WriteHeader(401)
3077+ resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "Failed find your organization"}`)))
3078+ return
3079+ }
3080+
3081+ parentOrg := currentOrg
3082+ if len(currentOrg.CreatorOrg) > 0 {
3083+ parentOrg, err = GetOrg(ctx, currentOrg.CreatorOrg)
3084+ if err != nil {
3085+ resp.WriteHeader(401)
3086+ resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "Failed find your organization"}`)))
3087+ return
3088+ }
3089+ }
3090+
3091+ licenseOrg := HandleCheckLicense(ctx, *parentOrg)
3092+ if !licenseOrg.SyncFeatures.MultiEnv.Active && int64(len(environments)) > licenseOrg.SyncFeatures.MultiEnv.Limit {
3093+ hideEnvs = true
3094+ }
3095+ }
3096+
30393097 newEnvironments := []Environment{}
30403098 for _, environment := range environments {
30413099 if len(environment.Id) == 0 {
30423100 environment.Id = uuid.NewV4().String()
30433101 }
30443102
3103+ // For onprem users without a valid license, only display default environments on the frontend.
3104+ if hideEnvs && !environment.Default {
3105+ continue
3106+ }
3107+
30453108 found := false
30463109 for _, oldEnv := range newEnvironments {
30473110 if oldEnv.Name == environment.Name {
@@ -30475,7 +30538,6 @@ func fixOrgUsers(ctx context.Context, foundOrg Org) error {
3047530538func HandleCheckLicense(ctx context.Context, org Org) Org {
3047630539
3047730540 shuffleLicenseKey := os.Getenv("SHUFFLE_LICENSE")
30478-
3047930541 if org.CloudSync {
3048030542 cacheKey := fmt.Sprintf("org_sync_features_%s", org.Id)
3048130543 syncFeatures, err := GetCache(ctx, cacheKey)
@@ -30486,66 +30548,10 @@ func HandleCheckLicense(ctx context.Context, org Org) Org {
3048630548 features := SyncFeatures{}
3048730549 if data, ok := syncFeatures.([]byte); ok {
3048830550 if err := json.Unmarshal(data, &features); err == nil {
30489-
30490- // Syncing all features from cloud to onprem
30491- org.SyncFeatures.AppExecutions.Limit = features.AppExecutions.Limit
30492- org.SyncFeatures.AppExecutions.Active = features.AppExecutions.Active
30493-
30494- org.SyncFeatures.MultiEnv.Limit = features.MultiEnv.Limit
30495- org.SyncFeatures.MultiEnv.Active = features.MultiEnv.Active
30496-
30497- org.SyncFeatures.MultiTenant.Limit = features.MultiTenant.Limit
30498- org.SyncFeatures.MultiTenant.Active = features.MultiTenant.Active
30499-
30500- org.SyncFeatures.MultiRegion.Limit = features.MultiRegion.Limit
30501- org.SyncFeatures.MultiRegion.Active = features.MultiRegion.Active
30502-
30503- org.SyncFeatures.Webhook.Limit = features.Webhook.Limit
30504- org.SyncFeatures.Webhook.Active = features.Webhook.Active
30505-
30506- org.SyncFeatures.Schedules.Limit = features.Schedules.Limit
30507- org.SyncFeatures.Schedules.Active = features.Schedules.Active
30508-
30509- org.SyncFeatures.UserInput.Limit = features.UserInput.Limit
30510- org.SyncFeatures.UserInput.Active = features.UserInput.Active
30511-
30512- org.SyncFeatures.SendMail.Limit = features.SendMail.Limit
30513- org.SyncFeatures.SendMail.Active = features.SendMail.Active
30514-
30515- org.SyncFeatures.SendSms.Limit = features.SendSms.Limit
30516- org.SyncFeatures.SendSms.Active = features.SendSms.Active
30517-
30518- org.SyncFeatures.EmailTrigger.Limit = features.EmailTrigger.Limit
30519- org.SyncFeatures.EmailTrigger.Active = features.EmailTrigger.Active
30520-
30521- org.SyncFeatures.Notifications.Limit = features.Notifications.Limit
30522- org.SyncFeatures.Notifications.Active = features.Notifications.Active
30523-
30524- org.SyncFeatures.Workflows.Limit = features.Workflows.Limit
30525- org.SyncFeatures.Workflows.Active = features.Workflows.Active
30526-
30527- org.SyncFeatures.Autocomplete.Limit = features.Autocomplete.Limit
30528- org.SyncFeatures.Autocomplete.Active = features.Autocomplete.Active
30529-
30530- org.SyncFeatures.WorkflowExecutions.Limit = features.WorkflowExecutions.Limit
30531- org.SyncFeatures.WorkflowExecutions.Active = features.WorkflowExecutions.Active
30532-
30533- org.SyncFeatures.Authentication.Limit = features.Authentication.Limit
30534- org.SyncFeatures.Authentication.Active = features.Authentication.Active
30535-
30536- org.SyncFeatures.ShuffleGPT.Limit = features.ShuffleGPT.Limit
30537- org.SyncFeatures.ShuffleGPT.Active = features.ShuffleGPT.Active
30538-
30539- if features.MultiTenant.Limit < 3 {
30551+ org.SyncFeatures = features
30552+ if !features.MultiTenant.Active && features.MultiTenant.Limit > 3 {
3054030553 org.SyncFeatures.MultiTenant.Limit = 3
30541- } else {
30542- org.SyncFeatures.MultiTenant.Limit = features.MultiTenant.Limit
3054330554 }
30544-
30545- org.SyncFeatures.MultiTenant.Active = features.MultiTenant.Active
30546-
30547- org.SyncFeatures.Branding.Limit = features.Branding.Limit
30548- org.SyncFeatures.Branding.Active = features.Branding.Active
3054930555 }
3055030556 }
3055130557
@@ -30573,12 +30579,26 @@ func HandleCheckLicense(ctx context.Context, org Org) Org {
3057330579
3057430580 org.SyncFeatures.MultiTenant.Limit = 1000
3057530581 org.SyncFeatures.MultiTenant.Active = true
30576-
30577- org.SyncFeatures.Branding.Limit = 100
3057830582 org.SyncFeatures.Branding.Active = true
30583+
30584+ org.SyncFeatures.AppExecutions.Active = true
30585+ org.SyncFeatures.Webhook.Active = true
30586+ org.SyncFeatures.Schedules.Active = true
30587+ org.SyncFeatures.UserInput.Active = true
30588+ org.SyncFeatures.SendMail.Active = true
30589+ org.SyncFeatures.SendSms.Active = true
30590+ org.SyncFeatures.Updates.Active = true
30591+ org.SyncFeatures.EmailTrigger.Active = true
30592+ org.SyncFeatures.Notifications.Active = true
30593+ org.SyncFeatures.Workflows.Active = true
30594+ org.SyncFeatures.Autocomplete.Active = true
30595+ org.SyncFeatures.WorkflowExecutions.Active = true
30596+ org.SyncFeatures.Authentication.Active = true
30597+ org.SyncFeatures.Schedule.Active = true
30598+ org.SyncFeatures.Apps.Active = true
30599+ org.SyncFeatures.ShuffleGPT.Active = true
3057930600 }
3058030601
30581- // Add the static subscription data for the licensed (No internet orgs) orgs
3058230602 }
3058330603
3058430604 return org
0 commit comments