diff options
Diffstat (limited to 'model')
-rw-r--r-- | model/client.go | 2 | ||||
-rw-r--r-- | model/config.go | 56 | ||||
-rw-r--r-- | model/message.go | 17 | ||||
-rw-r--r-- | model/outgoing_webhook.go | 2 | ||||
-rw-r--r-- | model/outgoing_webhook_test.go | 2 | ||||
-rw-r--r-- | model/preference.go | 2 | ||||
-rw-r--r-- | model/preference_test.go | 2 | ||||
-rw-r--r-- | model/preferences.go | 2 | ||||
-rw-r--r-- | model/team_test.go | 2 | ||||
-rw-r--r-- | model/utils.go | 12 | ||||
-rw-r--r-- | model/utils_test.go | 17 |
11 files changed, 97 insertions, 19 deletions
diff --git a/model/client.go b/model/client.go index ac85b0d1c..d3f76817d 100644 --- a/model/client.go +++ b/model/client.go @@ -230,7 +230,7 @@ func (c *Client) CreateUser(user *User, hash string) (*Result, *AppError) { } func (c *Client) CreateUserFromSignup(user *User, data string, hash string) (*Result, *AppError) { - if r, err := c.DoApiPost("/users/create?d="+data+"&h="+hash, user.ToJson()); err != nil { + if r, err := c.DoApiPost("/users/create?d="+url.QueryEscape(data)+"&h="+hash, user.ToJson()); err != nil { return nil, err } else { return &Result{r.Header.Get(HEADER_REQUEST_ID), diff --git a/model/config.go b/model/config.go index 14ce444c5..9030f91ae 100644 --- a/model/config.go +++ b/model/config.go @@ -113,6 +113,15 @@ type PrivacySettings struct { ShowFullName bool } +type SupportSettings struct { + TermsOfServiceLink *string + PrivacyPolicyLink *string + AboutLink *string + HelpLink *string + ReportAProblemLink *string + SupportEmail *string +} + type TeamSettings struct { SiteName string MaxUsersPerTeam int @@ -132,6 +141,7 @@ type Config struct { EmailSettings EmailSettings RateLimitSettings RateLimitSettings PrivacySettings PrivacySettings + SupportSettings SupportSettings GitLabSettings SSOSettings } @@ -164,6 +174,23 @@ func ConfigFromJson(data io.Reader) *Config { } func (o *Config) SetDefaults() { + + if len(o.SqlSettings.AtRestEncryptKey) == 0 { + o.SqlSettings.AtRestEncryptKey = NewRandomString(32) + } + + if len(o.FileSettings.PublicLinkSalt) == 0 { + o.FileSettings.PublicLinkSalt = NewRandomString(32) + } + + if len(o.EmailSettings.InviteSalt) == 0 { + o.EmailSettings.InviteSalt = NewRandomString(32) + } + + if len(o.EmailSettings.PasswordResetSalt) == 0 { + o.EmailSettings.PasswordResetSalt = NewRandomString(32) + } + if o.ServiceSettings.EnableSecurityFixAlert == nil { o.ServiceSettings.EnableSecurityFixAlert = new(bool) *o.ServiceSettings.EnableSecurityFixAlert = true @@ -189,6 +216,35 @@ func (o *Config) SetDefaults() { *o.EmailSettings.PushNotificationServer = "" } + if o.SupportSettings.TermsOfServiceLink == nil { + o.SupportSettings.TermsOfServiceLink = new(string) + *o.SupportSettings.TermsOfServiceLink = "/static/help/terms.html" + } + + if o.SupportSettings.PrivacyPolicyLink == nil { + o.SupportSettings.PrivacyPolicyLink = new(string) + *o.SupportSettings.PrivacyPolicyLink = "/static/help/privacy.html" + } + + if o.SupportSettings.AboutLink == nil { + o.SupportSettings.AboutLink = new(string) + *o.SupportSettings.AboutLink = "/static/help/about.html" + } + + if o.SupportSettings.HelpLink == nil { + o.SupportSettings.HelpLink = new(string) + *o.SupportSettings.HelpLink = "/static/help/help.html" + } + + if o.SupportSettings.ReportAProblemLink == nil { + o.SupportSettings.ReportAProblemLink = new(string) + *o.SupportSettings.ReportAProblemLink = "/static/help/report_problem.html" + } + + if o.SupportSettings.SupportEmail == nil { + o.SupportSettings.SupportEmail = new(string) + *o.SupportSettings.SupportEmail = "feedback@mattermost.com" + } } func (o *Config) IsValid() *AppError { diff --git a/model/message.go b/model/message.go index 2725353ac..1cb350bbf 100644 --- a/model/message.go +++ b/model/message.go @@ -9,14 +9,15 @@ import ( ) const ( - ACTION_TYPING = "typing" - ACTION_POSTED = "posted" - ACTION_POST_EDITED = "post_edited" - ACTION_POST_DELETED = "post_deleted" - ACTION_CHANNEL_VIEWED = "channel_viewed" - ACTION_NEW_USER = "new_user" - ACTION_USER_ADDED = "user_added" - ACTION_USER_REMOVED = "user_removed" + ACTION_TYPING = "typing" + ACTION_POSTED = "posted" + ACTION_POST_EDITED = "post_edited" + ACTION_POST_DELETED = "post_deleted" + ACTION_CHANNEL_VIEWED = "channel_viewed" + ACTION_NEW_USER = "new_user" + ACTION_USER_ADDED = "user_added" + ACTION_USER_REMOVED = "user_removed" + ACTION_PREFERENCE_CHANGED = "preference_changed" ) type Message struct { diff --git a/model/outgoing_webhook.go b/model/outgoing_webhook.go index 9a1b89a85..0b4fd6bbe 100644 --- a/model/outgoing_webhook.go +++ b/model/outgoing_webhook.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. +// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/outgoing_webhook_test.go b/model/outgoing_webhook_test.go index 0d1cd773e..665b85b6f 100644 --- a/model/outgoing_webhook_test.go +++ b/model/outgoing_webhook_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. +// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/preference.go b/model/preference.go index 4f2ba0099..a3230959c 100644 --- a/model/preference.go +++ b/model/preference.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. +// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/preference_test.go b/model/preference_test.go index 66b7ac50b..e29250bba 100644 --- a/model/preference_test.go +++ b/model/preference_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. +// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/preferences.go b/model/preferences.go index 1ef16151f..f11b5fd80 100644 --- a/model/preferences.go +++ b/model/preferences.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. +// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/team_test.go b/model/team_test.go index 112d48a9d..4b691e76a 100644 --- a/model/team_test.go +++ b/model/team_test.go @@ -45,7 +45,7 @@ func TestTeamIsValid(t *testing.T) { t.Fatal("should be invalid") } - o.Email = "corey@hulen.com" + o.Email = "corey+test@hulen.com" o.DisplayName = strings.Repeat("01234567890", 20) if err := o.IsValid(true); err == nil { t.Fatal("should be invalid") diff --git a/model/utils.go b/model/utils.go index b49b4bb24..5596b06ff 100644 --- a/model/utils.go +++ b/model/utils.go @@ -5,6 +5,7 @@ package model import ( "bytes" + "crypto/rand" "encoding/base32" "encoding/json" "fmt" @@ -81,6 +82,17 @@ func NewId() string { return b.String() } +func NewRandomString(length int) string { + var b bytes.Buffer + str := make([]byte, length+8) + rand.Read(str) + encoder := base32.NewEncoder(encoding, &b) + encoder.Write(str) + encoder.Close() + b.Truncate(length) // removes the '==' padding + return b.String() +} + // GetMillis is a convience method to get milliseconds since epoch. func GetMillis() int64 { return time.Now().UnixNano() / int64(time.Millisecond) diff --git a/model/utils_test.go b/model/utils_test.go index 7f14bcdf0..aab535fc9 100644 --- a/model/utils_test.go +++ b/model/utils_test.go @@ -17,6 +17,15 @@ func TestNewId(t *testing.T) { } } +func TestRandomString(t *testing.T) { + for i := 0; i < 1000; i++ { + r := NewRandomString(32) + if len(r) != 32 { + t.Fatal("should be 32 chars") + } + } +} + func TestAppError(t *testing.T) { err := NewAppError("TestAppError", "message", "") json := err.ToJson() @@ -47,21 +56,21 @@ func TestMapJson(t *testing.T) { } func TestValidEmail(t *testing.T) { - if !IsValidEmail("corey@hulen.com") { + if !IsValidEmail("corey+test@hulen.com") { t.Error("email should be valid") } - if IsValidEmail("@corey@hulen.com") { + if IsValidEmail("@corey+test@hulen.com") { t.Error("should be invalid") } } func TestValidLower(t *testing.T) { - if !IsLower("corey@hulen.com") { + if !IsLower("corey+test@hulen.com") { t.Error("should be valid") } - if IsLower("Corey@hulen.com") { + if IsLower("Corey+test@hulen.com") { t.Error("should be invalid") } } |