diff options
Diffstat (limited to 'model')
-rw-r--r-- | model/bundle_info.go | 9 | ||||
-rw-r--r-- | model/client4.go | 8 | ||||
-rw-r--r-- | model/config.go | 4 | ||||
-rw-r--r-- | model/emoji.go | 8 | ||||
-rw-r--r-- | model/emoji_test.go | 5 | ||||
-rw-r--r-- | model/plugin_status.go | 22 | ||||
-rw-r--r-- | model/plugins_response.go | 1 | ||||
-rw-r--r-- | model/user.go | 9 | ||||
-rw-r--r-- | model/user_test.go | 1 | ||||
-rw-r--r-- | model/websocket_message.go | 6 |
10 files changed, 44 insertions, 29 deletions
diff --git a/model/bundle_info.go b/model/bundle_info.go index 6965159cc..7cb06701a 100644 --- a/model/bundle_info.go +++ b/model/bundle_info.go @@ -3,6 +3,8 @@ package model +import "github.com/mattermost/mattermost-server/mlog" + type BundleInfo struct { Path string @@ -11,6 +13,13 @@ type BundleInfo struct { ManifestError error } +func (b *BundleInfo) WrapLogger(logger *mlog.Logger) *mlog.Logger { + if b.Manifest != nil { + return logger.With(mlog.String("plugin_id", b.Manifest.Id)) + } + return logger.With(mlog.String("plugin_path", b.Path)) +} + // Returns bundle info for the given path. The return value is never nil. func BundleInfoForPath(path string) *BundleInfo { m, mpath, err := FindManifest(path) diff --git a/model/client4.go b/model/client4.go index 3a93a9541..d34354715 100644 --- a/model/client4.go +++ b/model/client4.go @@ -3701,8 +3701,8 @@ func (c *Client4) GetWebappPlugins() ([]*Manifest, *Response) { // ActivatePlugin will activate an plugin installed. // WARNING: PLUGINS ARE STILL EXPERIMENTAL. THIS FUNCTION IS SUBJECT TO CHANGE. -func (c *Client4) ActivatePlugin(id string) (bool, *Response) { - if r, err := c.DoApiPost(c.GetPluginRoute(id)+"/activate", ""); err != nil { +func (c *Client4) EnablePlugin(id string) (bool, *Response) { + if r, err := c.DoApiPost(c.GetPluginRoute(id)+"/enable", ""); err != nil { return false, BuildErrorResponse(r, err) } else { defer closeBody(r) @@ -3712,8 +3712,8 @@ func (c *Client4) ActivatePlugin(id string) (bool, *Response) { // DeactivatePlugin will deactivate an active plugin. // WARNING: PLUGINS ARE STILL EXPERIMENTAL. THIS FUNCTION IS SUBJECT TO CHANGE. -func (c *Client4) DeactivatePlugin(id string) (bool, *Response) { - if r, err := c.DoApiPost(c.GetPluginRoute(id)+"/deactivate", ""); err != nil { +func (c *Client4) DisablePlugin(id string) (bool, *Response) { + if r, err := c.DoApiPost(c.GetPluginRoute(id)+"/disable", ""); err != nil { return false, BuildErrorResponse(r, err) } else { defer closeBody(r) diff --git a/model/config.go b/model/config.go index 1388f896f..7c9643b75 100644 --- a/model/config.go +++ b/model/config.go @@ -1727,7 +1727,7 @@ type PluginSettings struct { EnableUploads *bool Directory *string ClientDirectory *string - Plugins map[string]interface{} + Plugins map[string]map[string]interface{} PluginStates map[string]*PluginState } @@ -1757,7 +1757,7 @@ func (s *PluginSettings) SetDefaults() { } if s.Plugins == nil { - s.Plugins = make(map[string]interface{}) + s.Plugins = make(map[string]map[string]interface{}) } if s.PluginStates == nil { diff --git a/model/emoji.go b/model/emoji.go index 78a266386..f14af89df 100644 --- a/model/emoji.go +++ b/model/emoji.go @@ -41,11 +41,15 @@ func (emoji *Emoji) IsValid() *AppError { return NewAppError("Emoji.IsValid", "model.emoji.update_at.app_error", nil, "id="+emoji.Id, http.StatusBadRequest) } - if len(emoji.CreatorId) != 26 { + if len(emoji.CreatorId) > 26 { return NewAppError("Emoji.IsValid", "model.emoji.user_id.app_error", nil, "", http.StatusBadRequest) } - if len(emoji.Name) == 0 || len(emoji.Name) > EMOJI_NAME_MAX_LENGTH || !IsValidAlphaNumHyphenUnderscore(emoji.Name, false) || inSystemEmoji(emoji.Name) { + return IsValidEmojiName(emoji.Name) +} + +func IsValidEmojiName(name string) *AppError { + if len(name) == 0 || len(name) > EMOJI_NAME_MAX_LENGTH || !IsValidAlphaNumHyphenUnderscore(name, false) || inSystemEmoji(name) { return NewAppError("Emoji.IsValid", "model.emoji.name.app_error", nil, "", http.StatusBadRequest) } diff --git a/model/emoji_test.go b/model/emoji_test.go index 95abe37c6..50d741214 100644 --- a/model/emoji_test.go +++ b/model/emoji_test.go @@ -40,11 +40,6 @@ func TestEmojiIsValid(t *testing.T) { } emoji.UpdateAt = 1234 - emoji.CreatorId = strings.Repeat("1", 25) - if err := emoji.IsValid(); err == nil { - t.Fatal() - } - emoji.CreatorId = strings.Repeat("1", 27) if err := emoji.IsValid(); err == nil { t.Fatal() diff --git a/model/plugin_status.go b/model/plugin_status.go index 1ae64ff89..db2764028 100644 --- a/model/plugin_status.go +++ b/model/plugin_status.go @@ -10,24 +10,22 @@ import ( const ( PluginStateNotRunning = 0 - PluginStateStarting = 1 + PluginStateStarting = 1 // unused by server PluginStateRunning = 2 PluginStateFailedToStart = 3 - PluginStateFailedToStayRunning = 4 - PluginStateStopping = 5 + PluginStateFailedToStayRunning = 4 // unused by server + PluginStateStopping = 5 // unused by server ) // PluginStatus provides a cluster-aware view of installed plugins. type PluginStatus struct { - PluginId string `json:"plugin_id"` - ClusterId string `json:"cluster_id"` - PluginPath string `json:"plugin_path"` - State int `json:"state"` - IsSandboxed bool `json:"is_sandboxed"` - IsPrepackaged bool `json:"is_prepackaged"` - Name string `json:"name"` - Description string `json:"description"` - Version string `json:"version"` + PluginId string `json:"plugin_id"` + ClusterId string `json:"cluster_id"` + PluginPath string `json:"plugin_path"` + State int `json:"state"` + Name string `json:"name"` + Description string `json:"description"` + Version string `json:"version"` } type PluginStatuses []*PluginStatus diff --git a/model/plugins_response.go b/model/plugins_response.go index b6c01b642..177cfe6c8 100644 --- a/model/plugins_response.go +++ b/model/plugins_response.go @@ -10,7 +10,6 @@ import ( type PluginInfo struct { Manifest - Prepackaged bool `json:"prepackaged"` } type PluginsResponse struct { diff --git a/model/user.go b/model/user.go index c4dbfb6d0..3e99c6fa4 100644 --- a/model/user.go +++ b/model/user.go @@ -497,6 +497,14 @@ func (u *User) IsSAMLUser() bool { return u.AuthService == USER_AUTH_SERVICE_SAML } +func (u *User) GetPreferredTimezone() string { + if u.Timezone["useAutomaticTimezone"] == "true" { + return u.Timezone["automaticTimezone"] + } + + return u.Timezone["manualTimezone"] +} + // UserFromJson will decode the input and return a User func UserFromJson(data io.Reader) *User { var user *User @@ -565,6 +573,7 @@ var restrictedUsernames = []string{ "all", "channel", "matterbot", + "system", } func IsValidUsername(s string) bool { diff --git a/model/user_test.go b/model/user_test.go index 645eaadff..a1953a40d 100644 --- a/model/user_test.go +++ b/model/user_test.go @@ -272,6 +272,7 @@ var usernames = []struct { {"spin'punch", false}, {"spin*punch", false}, {"all", false}, + {"system", false}, } func TestValidUsername(t *testing.T) { diff --git a/model/websocket_message.go b/model/websocket_message.go index 31b16d1a7..ea8872d76 100644 --- a/model/websocket_message.go +++ b/model/websocket_message.go @@ -44,9 +44,9 @@ const ( WEBSOCKET_EVENT_RESPONSE = "response" WEBSOCKET_EVENT_EMOJI_ADDED = "emoji_added" WEBSOCKET_EVENT_CHANNEL_VIEWED = "channel_viewed" - WEBSOCKET_EVENT_PLUGIN_ACTIVATED = "plugin_activated" // EXPERIMENTAL - SUBJECT TO CHANGE - WEBSOCKET_EVENT_PLUGIN_DEACTIVATED = "plugin_deactivated" // EXPERIMENTAL - SUBJECT TO CHANGE - WEBSOCKET_EVENT_PLUGIN_STATUSES_CHANGED = "plugin_statuses_changed" // EXPERIMENTAL - SUBJECT TO CHANGE + WEBSOCKET_EVENT_PLUGIN_STATUSES_CHANGED = "plugin_statuses_changed" + WEBSOCKET_EVENT_PLUGIN_ENABLED = "plugin_enabled" + WEBSOCKET_EVENT_PLUGIN_DISABLED = "plugin_disabled" WEBSOCKET_EVENT_ROLE_UPDATED = "role_updated" WEBSOCKET_EVENT_LICENSE_CHANGED = "license_changed" WEBSOCKET_EVENT_CONFIG_CHANGED = "config_changed" |