instances/create: Add restricted slugs
This commit is contained in:
parent
9d03c39e38
commit
0bb7f99fa3
1 changed files with 25 additions and 2 deletions
|
|
@ -3,12 +3,16 @@ package instances
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/FAU-CDI/wisski-distillery/internal/wisski"
|
"github.com/FAU-CDI/wisski-distillery/internal/wisski"
|
||||||
"github.com/FAU-CDI/wisski-distillery/pkg/stringparser"
|
"github.com/FAU-CDI/wisski-distillery/pkg/stringparser"
|
||||||
)
|
)
|
||||||
|
|
||||||
var errInvalidSlug = errors.New("not a valid slug")
|
var (
|
||||||
|
errInvalidSlug = errors.New("not a valid slug")
|
||||||
|
errRestrictedSlug = errors.New("restricted slug")
|
||||||
|
)
|
||||||
|
|
||||||
// Create fills the struct for a new WissKI instance.
|
// Create fills the struct for a new WissKI instance.
|
||||||
// It validates that slug is a valid name for an instance.
|
// It validates that slug is a valid name for an instance.
|
||||||
|
|
@ -17,7 +21,7 @@ var errInvalidSlug = errors.New("not a valid slug")
|
||||||
func (instances *Instances) Create(slug string) (wissKI *wisski.WissKI, err error) {
|
func (instances *Instances) Create(slug string) (wissKI *wisski.WissKI, err error) {
|
||||||
|
|
||||||
// make sure that the slug is valid!
|
// make sure that the slug is valid!
|
||||||
slug, err = stringparser.ParseSlug(instances.Environment, slug)
|
slug, err = instances.IsValidSlug(slug)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errInvalidSlug
|
return nil, errInvalidSlug
|
||||||
}
|
}
|
||||||
|
|
@ -63,3 +67,22 @@ func (instances *Instances) Create(slug string) (wissKI *wisski.WissKI, err erro
|
||||||
// store the instance in the object and return it!
|
// store the instance in the object and return it!
|
||||||
return wissKI, nil
|
return wissKI, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var restrictedSlugs = []string{"www", "admin"}
|
||||||
|
|
||||||
|
// IsValidSlug checks if slug represents a valid slug for an instance.
|
||||||
|
func (instances *Instances) IsValidSlug(slug string) (string, error) {
|
||||||
|
// check that it is a slug
|
||||||
|
slug, err := stringparser.ParseSlug(instances.Environment, slug)
|
||||||
|
if err != nil {
|
||||||
|
return "", errInvalidSlug
|
||||||
|
}
|
||||||
|
for _, rs := range restrictedSlugs {
|
||||||
|
if strings.EqualFold(rs, slug) {
|
||||||
|
return "", errRestrictedSlug
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// return the slug
|
||||||
|
return strings.ToLower(slug), nil
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue