diff options
Diffstat (limited to 'model')
-rw-r--r-- | model/scheme.go | 53 |
1 files changed, 48 insertions, 5 deletions
diff --git a/model/scheme.go b/model/scheme.go index f949d9122..959b80c24 100644 --- a/model/scheme.go +++ b/model/scheme.go @@ -5,19 +5,23 @@ package model import ( "encoding/json" + "fmt" "io" + "regexp" ) const ( - SCHEME_NAME_MAX_LENGTH = 64 - SCHEME_DESCRIPTION_MAX_LENGTH = 1024 - SCHEME_SCOPE_TEAM = "team" - SCHEME_SCOPE_CHANNEL = "channel" + SCHEME_DISPLAY_NAME_MAX_LENGTH = 128 + SCHEME_NAME_MAX_LENGTH = 64 + SCHEME_DESCRIPTION_MAX_LENGTH = 1024 + SCHEME_SCOPE_TEAM = "team" + SCHEME_SCOPE_CHANNEL = "channel" ) type Scheme struct { Id string `json:"id"` Name string `json:"name"` + DisplayName string `json:"display_name"` Description string `json:"description"` CreateAt int64 `json:"create_at"` UpdateAt int64 `json:"update_at"` @@ -31,6 +35,7 @@ type Scheme struct { type SchemePatch struct { Name *string `json:"name"` + DisplayName *string `json:"display_name"` Description *string `json:"description"` } @@ -38,6 +43,32 @@ type SchemeIDPatch struct { SchemeID *string `json:"scheme_id"` } +// SchemeConveyor is used for importing and exporting a Scheme and its associated Roles. +type SchemeConveyor struct { + Name string `json:"name"` + DisplayName string `json:"display_name"` + Description string `json:"description"` + Scope string `json:"scope"` + TeamAdmin string `json:"default_team_admin_role"` + TeamUser string `json:"default_team_user_role"` + ChannelAdmin string `json:"default_channel_admin_role"` + ChannelUser string `json:"default_channel_user_role"` + Roles []*Role `json:"roles"` +} + +func (sc *SchemeConveyor) Scheme() *Scheme { + return &Scheme{ + DisplayName: sc.DisplayName, + Name: sc.Name, + Description: sc.Description, + Scope: sc.Scope, + DefaultTeamAdminRole: sc.TeamAdmin, + DefaultTeamUserRole: sc.TeamUser, + DefaultChannelAdminRole: sc.ChannelAdmin, + DefaultChannelUserRole: sc.ChannelUser, + } +} + func (scheme *Scheme) ToJson() string { b, _ := json.Marshal(scheme) return string(b) @@ -72,7 +103,11 @@ func (scheme *Scheme) IsValid() bool { } func (scheme *Scheme) IsValidForCreate() bool { - if len(scheme.Name) == 0 || len(scheme.Name) > SCHEME_NAME_MAX_LENGTH { + if len(scheme.DisplayName) == 0 || len(scheme.DisplayName) > SCHEME_DISPLAY_NAME_MAX_LENGTH { + return false + } + + if !IsValidSchemeName(scheme.Name) { return false } @@ -118,6 +153,9 @@ func (scheme *Scheme) IsValidForCreate() bool { } func (scheme *Scheme) Patch(patch *SchemePatch) { + if patch.DisplayName != nil { + scheme.DisplayName = *patch.DisplayName + } if patch.Name != nil { scheme.Name = *patch.Name } @@ -147,3 +185,8 @@ func (p *SchemeIDPatch) ToJson() string { b, _ := json.Marshal(p) return string(b) } + +func IsValidSchemeName(name string) bool { + re := regexp.MustCompile(fmt.Sprintf("^[a-z0-9_]{0,%d}$", SCHEME_NAME_MAX_LENGTH)) + return re.MatchString(name) +} |