From 6ba8dce7fabf2a3ff83f453155022b3a182ab0e1 Mon Sep 17 00:00:00 2001 From: Avi Aryan Date: Thu, 13 Jul 2017 21:35:48 +0530 Subject: [PATCH] add logout command #52 --- appbase/logout/logout.go | 17 +++++++++++++++++ appbase/session/session.go | 13 +++++++++++++ cmd/abc/appbase.go | 3 +++ cmd/abc/appbase_login.go | 2 +- cmd/abc/appbase_logout.go | 26 ++++++++++++++++++++++++++ 5 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 appbase/logout/logout.go create mode 100644 cmd/abc/appbase_logout.go diff --git a/appbase/logout/logout.go b/appbase/logout/logout.go new file mode 100644 index 0000000..ea584cc --- /dev/null +++ b/appbase/logout/logout.go @@ -0,0 +1,17 @@ +package logout + +import ( + "github.com/appbaseio/abc/appbase/session" + "os" +) + +// UserLogout log outs a user +func UserLogout() error { + err := session.DeleteUserSession() + if err != nil { + return err + } + // remove env var + os.Unsetenv("ABC_TOKEN") + return nil +} diff --git a/appbase/session/session.go b/appbase/session/session.go index c431dc9..2a5cf91 100644 --- a/appbase/session/session.go +++ b/appbase/session/session.go @@ -72,6 +72,19 @@ func SaveUserSession(data string) error { return err } +// DeleteUserSession deletes user session +func DeleteUserSession() error { + sessionFile, err := getSessionFilePath() + if err != nil { + return err + } + err = os.Remove(sessionFile) + if err != nil { + return err + } + return nil +} + // attachCookiesToRequest attaches cookies to a request func attachCookiesToRequest(req *http.Request) error { cookies, err := LoadUserSessionAsCookie() diff --git a/cmd/abc/appbase.go b/cmd/abc/appbase.go index 79de0ba..4919a66 100644 --- a/cmd/abc/appbase.go +++ b/cmd/abc/appbase.go @@ -17,6 +17,7 @@ func usageAppbase() { fmt.Fprintf(os.Stderr, " app display app details\n") fmt.Fprintf(os.Stderr, " create create app\n") fmt.Fprintf(os.Stderr, " delete delete app\n") + fmt.Fprintf(os.Stderr, " logout logout session\n") if imports.IsPrivate { fmt.Fprintf(os.Stderr, " import import data to appbase app\n") } @@ -39,6 +40,8 @@ func provisionAppbaseCLI(command string) func([]string) error { run = runCreate case "delete": run = runDelete + case "logout": + run = runLogout default: usage() os.Exit(1) diff --git a/cmd/abc/appbase_login.go b/cmd/abc/appbase_login.go index 81edd06..c0ca0ed 100644 --- a/cmd/abc/appbase_login.go +++ b/cmd/abc/appbase_login.go @@ -34,6 +34,6 @@ func isLoggedIn() bool { if login.IsUserAuthenticated() { return true } - fmt.Println("Not logged in.") + fmt.Println("Not logged in") return false } diff --git a/cmd/abc/appbase_logout.go b/cmd/abc/appbase_logout.go new file mode 100644 index 0000000..c473fc0 --- /dev/null +++ b/cmd/abc/appbase_logout.go @@ -0,0 +1,26 @@ +package main + +import ( + "fmt" + "github.com/appbaseio/abc/appbase/logout" +) + +// runLogout runs the logout command +func runLogout(args []string) error { + flagset := baseFlagSet("logout") + flagset.Usage = usageFor(flagset, "abc logout") + if err := flagset.Parse(args); err != nil { + return err + } + args = flagset.Args() + + switch len(args) { + case 0: + if isLoggedIn() { + return logout.UserLogout() + } + default: + fmt.Println("Wrong number of parameters. See help (--help).") + } + return nil +} -- GitLab