From ecb954d67973562a49f2f4b807cc681989e73293 Mon Sep 17 00:00:00 2001 From: Peter Sanchez Date: Fri, 26 Jul 2024 14:25:15 -0600 Subject: [PATCH] Default to public visibility when creating an org. Don't allow private setting when updating unless org is a paid org. --- api/graph/generated.go | 10 +--------- api/graph/model/models_gen.go | 1 - api/graph/schema.graphqls | 1 - api/graph/schema.resolvers.go | 17 +++++++++++------ core/inputs.go | 2 -- core/routes.go | 4 +--- templates/org_create.html | 11 ----------- 7 files changed, 13 insertions(+), 33 deletions(-) diff --git a/api/graph/generated.go b/api/graph/generated.go index 805747b..c6bc3be 100644 --- a/api/graph/generated.go +++ b/api/graph/generated.go @@ -22869,7 +22869,7 @@ func (ec *executionContext) unmarshalInputOrganizationInput(ctx context.Context, asMap[k] = v } - fieldsInOrder := [...]string{"name", "orgUsername", "image", "defaultPerm"} + fieldsInOrder := [...]string{"name", "orgUsername", "image"} for _, k := range fieldsInOrder { v, ok := asMap[k] if !ok { @@ -22900,14 +22900,6 @@ func (ec *executionContext) unmarshalInputOrganizationInput(ctx context.Context, if err != nil { return it, err } - case "defaultPerm": - var err error - - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("defaultPerm")) - it.DefaultPerm, err = ec.unmarshalNInt2int(ctx, v) - if err != nil { - return it, err - } } } diff --git a/api/graph/model/models_gen.go b/api/graph/model/models_gen.go index 43c80a3..8f1dcd0 100644 --- a/api/graph/model/models_gen.go +++ b/api/graph/model/models_gen.go @@ -301,7 +301,6 @@ type OrganizationInput struct { Name string `json:"name"` OrgUsername string `json:"orgUsername"` Image *graphql.Upload `json:"image,omitempty"` - DefaultPerm int `json:"defaultPerm"` } type OrganizationStats struct { diff --git a/api/graph/schema.graphqls b/api/graph/schema.graphqls index 2c14326..f3b46d3 100644 --- a/api/graph/schema.graphqls +++ b/api/graph/schema.graphqls @@ -597,7 +597,6 @@ input OrganizationInput { name: String! orgUsername: String! image: Upload - defaultPerm: Int! } input UpdateOrganizationInput { diff --git a/api/graph/schema.resolvers.go b/api/graph/schema.resolvers.go index ab9e576..383d293 100644 --- a/api/graph/schema.resolvers.go +++ b/api/graph/schema.resolvers.go @@ -40,7 +40,7 @@ import ( "golang.org/x/image/draw" "golang.org/x/net/idna" "netlandish.com/x/gobwebs" - oauth2 "netlandish.com/x/gobwebs-oauth2" + "netlandish.com/x/gobwebs-oauth2" gaccounts "netlandish.com/x/gobwebs/accounts" "netlandish.com/x/gobwebs/crypto" "netlandish.com/x/gobwebs/database" @@ -84,10 +84,6 @@ func (r *mutationResolver) AddOrganization(ctx context.Context, input model.Orga validator.Expect(len(input.OrgUsername) < 150, lt.Translate("Org username may not exceed 150 characters")). WithField("orgUsername"). WithCode(valid.ErrValidationCode) - validator.Expect(input.DefaultPerm >= models.OrgLinkVisibilityPublic && - input.DefaultPerm <= models.OrgLinkVisibilityPrivate, lt.Translate("Invalid default permission value")). - WithField("defaultPerm"). - WithCode(valid.ErrValidationCode) if !validator.Ok() { return nil, nil @@ -144,7 +140,7 @@ func (r *mutationResolver) AddOrganization(ctx context.Context, input model.Orga Name: input.Name, Slug: slug, IsActive: true, - Settings: models.OrganizationSettings{DefaultPerm: input.DefaultPerm}, + Settings: models.OrganizationSettings{DefaultPerm: models.OrgLinkVisibilityPublic}, } if input.Image != nil { @@ -1679,6 +1675,15 @@ func (r *mutationResolver) UpdateOrganization(ctx context.Context, input *model. } if input.DefaultPerm != nil { + if org.Settings.Billing.Status == models.BillingStatusFree && + *input.DefaultPerm == models.OrgLinkVisibilityPrivate { + validator.Error(lt.Translate( + "Free organizations can not use Private permission. Please upgrade to use " + + "Private permission")). + WithField("defaultPerm"). + WithCode(valid.ErrValidationCode) + return nil, nil + } if *input.DefaultPerm < models.OrgLinkVisibilityPublic || *input.DefaultPerm > models.OrgLinkVisibilityPrivate { validator.Error(lt.Translate("Invalid default permission value")). diff --git a/core/inputs.go b/core/inputs.go index 9cb8e33..e30bef7 100644 --- a/core/inputs.go +++ b/core/inputs.go @@ -35,7 +35,6 @@ func (p *PlaygroundForm) Validate(c echo.Context) error { type OrganizationForm struct { Name string `form:"name" validate:"required"` OrgUsername string `form:"org_username" validate:"required"` - DefaultPerm int `form:"default_perm" validate:"number,gte=0"` } // Validate ... @@ -44,7 +43,6 @@ func (o *OrganizationForm) Validate(c echo.Context) error { FailFast(false). String("name", &o.Name). String("org_username", &o.OrgUsername). - Int("default_perm", &o.DefaultPerm). BindErrors() if errs != nil { return validate.GetInputErrors(errs) diff --git a/core/routes.go b/core/routes.go index 3bd635c..2d8da40 100644 --- a/core/routes.go +++ b/core/routes.go @@ -897,19 +897,17 @@ func (s *Service) OrgCreate(c echo.Context) error { Org models.Organization `json:"addBusinessOrganization"` } op := gqlclient.NewOperation( - `mutation AddOrganization($name: String!, $image: Upload, $username: String!, $perm: Int!) { + `mutation AddOrganization($name: String!, $image: Upload, $username: String!) { addOrganization(input: { name: $name, image: $image, orgUsername: $username, - defaultPerm: $perm, }) { id } }`) op.Var("name", form.Name) op.Var("username", form.OrgUsername) - op.Var("perm", form.DefaultPerm) image, err := c.FormFile("image") if err != nil { diff --git a/templates/org_create.html b/templates/org_create.html index 9b8a02a..8b249b1 100644 --- a/templates/org_create.html +++ b/templates/org_create.html @@ -29,17 +29,6 @@

{{ . }}

{{ end }} -
- - - {{ with .errors.DefaultPerm }} -

{{ . }}

- {{ end }} -
-- 2.45.2