diff --git a/appbase/logout/logout.go b/appbase/logout/logout.go new file mode 100644 index 0000000000000000000000000000000000000000..ea584cc1685665e43a74424923e75e7441df8770 --- /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 c431dc9f313ace68340476851edd145d08116994..2a5cf91860ec21c9908f0f4f4cb9d2e66d585801 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 79de0ba4777ade3467c0455c4fc98816e157d530..4919a6694851773fb4ec4d8422e77fecb91b1df2 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 81edd064314d0183f1f67a30de5d8780f0b9cf9a..c0ca0ed31651e77c1a4254f706093d8df960b4a6 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 0000000000000000000000000000000000000000..c473fc05adcfa4948408e743b7f05176aecb4fdf --- /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 +}