diff options
author | =Corey Hulen <corey@hulen.com> | 2015-09-21 15:11:56 -0700 |
---|---|---|
committer | =Corey Hulen <corey@hulen.com> | 2015-09-21 15:11:56 -0700 |
commit | ed9a2da83b3b77e7dd0314eaa92082ac8a2a9a9c (patch) | |
tree | 3c890327d884b33ad149196ddf9879313b2b000b /api | |
parent | ee5a77ec56ee13f5eb96fce6065b4b7a1845de89 (diff) | |
download | chat-ed9a2da83b3b77e7dd0314eaa92082ac8a2a9a9c.tar.gz chat-ed9a2da83b3b77e7dd0314eaa92082ac8a2a9a9c.tar.bz2 chat-ed9a2da83b3b77e7dd0314eaa92082ac8a2a9a9c.zip |
Adding email to admin console
Diffstat (limited to 'api')
-rw-r--r-- | api/admin.go | 27 | ||||
-rw-r--r-- | api/admin_test.go | 28 | ||||
-rw-r--r-- | api/team.go | 11 | ||||
-rw-r--r-- | api/user.go | 4 |
4 files changed, 61 insertions, 9 deletions
diff --git a/api/admin.go b/api/admin.go index 646597755..ca66b7cb4 100644 --- a/api/admin.go +++ b/api/admin.go @@ -24,6 +24,7 @@ func InitAdmin(r *mux.Router) { sr.Handle("/config", ApiUserRequired(getConfig)).Methods("GET") sr.Handle("/save_config", ApiUserRequired(saveConfig)).Methods("POST") sr.Handle("/client_props", ApiAppHandler(getClientProperties)).Methods("GET") + sr.Handle("/test_email", ApiUserRequired(testEmail)).Methods("POST") } func getLogs(c *Context, w http.ResponseWriter, r *http.Request) { @@ -98,3 +99,29 @@ func saveConfig(c *Context, w http.ResponseWriter, r *http.Request) { json := utils.Cfg.ToJson() w.Write([]byte(json)) } + +func testEmail(c *Context, w http.ResponseWriter, r *http.Request) { + if !c.HasSystemAdminPermissions("testEmail") { + return + } + + cfg := model.ConfigFromJson(r.Body) + if cfg == nil { + c.SetInvalidParam("testEmail", "config") + return + } + + if result := <-Srv.Store.User().Get(c.Session.UserId); result.Err != nil { + c.Err = result.Err + return + } else { + if err := utils.SendMailUsingConfig(result.Data.(*model.User).Email, "Mattermost - Testing Email Settings", "<br/><br/><br/>It appears your Mattermost email is setup correctly!", cfg); err != nil { + c.Err = err + return + } + } + + m := make(map[string]string) + m["SUCCESS"] = "true" + w.Write([]byte(model.MapToJson(m))) +} diff --git a/api/admin_test.go b/api/admin_test.go index e1778b5ac..c74fbf6e5 100644 --- a/api/admin_test.go +++ b/api/admin_test.go @@ -122,3 +122,31 @@ func TestSaveConfig(t *testing.T) { } } } + +func TestEmailTest(t *testing.T) { + Setup() + + team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN} + team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team) + + user := &model.User{TeamId: team.Id, Email: model.NewId() + "corey@test.com", Nickname: "Corey Hulen", Password: "pwd"} + user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User) + store.Must(Srv.Store.User().VerifyEmail(user.Id)) + + Client.LoginByEmail(team.Name, user.Email, "pwd") + + if _, err := Client.TestEmail(utils.Cfg); err == nil { + t.Fatal("Shouldn't have permissions") + } + + c := &Context{} + c.RequestId = model.NewId() + c.IpAddress = "cmd_line" + UpdateRoles(c, user, model.ROLE_SYSTEM_ADMIN) + + Client.LoginByEmail(team.Name, user.Email, "pwd") + + if _, err := Client.TestEmail(utils.Cfg); err != nil { + t.Fatal(err) + } +} diff --git a/api/team.go b/api/team.go index 92fcbff93..f0025fdbd 100644 --- a/api/team.go +++ b/api/team.go @@ -38,7 +38,7 @@ func InitTeam(r *mux.Router) { } func signupTeam(c *Context, w http.ResponseWriter, r *http.Request) { - if utils.Cfg.ServiceSettings.DisableEmailSignUp { + if !utils.Cfg.EmailSettings.AllowSignUpWithEmail { c.Err = model.NewAppError("signupTeam", "Team sign-up with email is disabled.", "") c.Err.StatusCode = http.StatusNotImplemented return @@ -76,10 +76,7 @@ func signupTeam(c *Context, w http.ResponseWriter, r *http.Request) { return } - if utils.Cfg.ServiceSettings.Mode == utils.MODE_DEV || utils.Cfg.EmailSettings.ByPassEmail { - m["follow_link"] = bodyPage.Props["Link"] - } - + m["follow_link"] = bodyPage.Props["Link"] w.Header().Set("Access-Control-Allow-Origin", " *") w.Write([]byte(model.MapToJson(m))) } @@ -147,7 +144,7 @@ func createTeamFromSSO(c *Context, w http.ResponseWriter, r *http.Request) { } func createTeamFromSignup(c *Context, w http.ResponseWriter, r *http.Request) { - if utils.Cfg.ServiceSettings.DisableEmailSignUp { + if !utils.Cfg.EmailSettings.AllowSignUpWithEmail { c.Err = model.NewAppError("createTeamFromSignup", "Team sign-up with email is disabled.", "") c.Err.StatusCode = http.StatusNotImplemented return @@ -257,7 +254,7 @@ func createTeam(c *Context, w http.ResponseWriter, r *http.Request) { } func CreateTeam(c *Context, team *model.Team) *model.Team { - if utils.Cfg.ServiceSettings.DisableEmailSignUp { + if !utils.Cfg.EmailSettings.AllowSignUpWithEmail { c.Err = model.NewAppError("createTeam", "Team sign-up with email is disabled.", "") c.Err.StatusCode = http.StatusNotImplemented return nil diff --git a/api/user.go b/api/user.go index 0a54b6a5d..352e1f0e1 100644 --- a/api/user.go +++ b/api/user.go @@ -58,7 +58,7 @@ func InitUser(r *mux.Router) { } func createUser(c *Context, w http.ResponseWriter, r *http.Request) { - if utils.Cfg.ServiceSettings.DisableEmailSignUp { + if !utils.Cfg.EmailSettings.AllowSignUpWithEmail { c.Err = model.NewAppError("signupTeam", "User sign-up with email is disabled.", "") c.Err.StatusCode = http.StatusNotImplemented return @@ -324,7 +324,7 @@ func checkUserPassword(c *Context, user *model.User, password string) bool { func Login(c *Context, w http.ResponseWriter, r *http.Request, user *model.User, deviceId string) { c.LogAuditWithUserId(user.Id, "attempt") - if !user.EmailVerified && !utils.Cfg.EmailSettings.ByPassEmail { + if !user.EmailVerified && utils.Cfg.EmailSettings.RequireEmailVerification { c.Err = model.NewAppError("Login", "Login failed because email address has not been verified", "user_id="+user.Id) c.Err.StatusCode = http.StatusForbidden return |