From d2f9fd52fe8b0da6f23775f242660329fcef6421 Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Fri, 6 May 2016 12:08:49 -0400 Subject: Fixing /logout command (#2908) --- api/command_logout.go | 14 ++++++++++++-- api/command_logout_test.go | 8 +------- api/user.go | 5 +---- 3 files changed, 14 insertions(+), 13 deletions(-) (limited to 'api') diff --git a/api/command_logout.go b/api/command_logout.go index 912093162..9fff4e2d5 100644 --- a/api/command_logout.go +++ b/api/command_logout.go @@ -33,6 +33,16 @@ func (me *LogoutProvider) GetCommand(c *Context) *model.Command { } func (me *LogoutProvider) DoCommand(c *Context, channelId string, message string) *model.CommandResponse { - - return &model.CommandResponse{GotoLocation: c.GetTeamURL() + "/logout", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL, Text: c.T("api.command_logout.success_message")} + FAIL := &model.CommandResponse{ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL, Text: c.T("api.command_logout.fail_message")} + SUCCESS := &model.CommandResponse{GotoLocation: "/", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL, Text: c.T("api.command_logout.success_message")} + + // We can't actually remove the user's cookie from here so we just dump their session and let the browser figure it out + if c.Session.Id != "" { + RevokeSessionById(c, c.Session.Id) + if c.Err != nil { + return FAIL + } + return SUCCESS + } + return FAIL } diff --git a/api/command_logout_test.go b/api/command_logout_test.go index eec959115..6d74549af 100644 --- a/api/command_logout_test.go +++ b/api/command_logout_test.go @@ -4,17 +4,11 @@ package api import ( - "strings" "testing" - - "github.com/mattermost/platform/model" ) func TestLogoutTestCommand(t *testing.T) { th := Setup().InitBasic() - rs1 := th.BasicClient.Must(th.BasicClient.Command(th.BasicChannel.Id, "/logout", false)).Data.(*model.CommandResponse) - if !strings.HasSuffix(rs1.GotoLocation, "logout") { - t.Fatal("failed to logout") - } + th.BasicClient.Must(th.BasicClient.Command(th.BasicChannel.Id, "/logout", false)) } diff --git a/api/user.go b/api/user.go index 1331bd3da..de4242f24 100644 --- a/api/user.go +++ b/api/user.go @@ -764,10 +764,7 @@ func Logout(c *Context, w http.ResponseWriter, r *http.Request) { c.LogAudit("") c.RemoveSessionCookie(w, r) if c.Session.Id != "" { - if result := <-Srv.Store.Session().Remove(c.Session.Id); result.Err != nil { - c.Err = result.Err - return - } + RevokeSessionById(c, c.Session.Id) } } -- cgit v1.2.3-1-g7c22