From 9d405381068874b90b2ffe0327b8eb5689c60d95 Mon Sep 17 00:00:00 2001 From: enahum Date: Thu, 15 Sep 2016 12:33:16 -0300 Subject: PLT-4157 CLI to make a user active or inactive (#4025) --- api/cli_test.go | 24 ++++++++++++++++++++++++ mattermost.go | 43 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/api/cli_test.go b/api/cli_test.go index c25394c17..de2347058 100644 --- a/api/cli_test.go +++ b/api/cli_test.go @@ -417,3 +417,27 @@ func TestCliCreateChannel(t *testing.T) { t.Fatal() } } + +func TestCliMakeUserActiveAndInactive(t *testing.T) { + if disableCliTests { + return + } + + th := Setup().InitBasic() + + // first inactivate the user + cmd := exec.Command("bash", "-c", `go run ../mattermost.go -activate_user -inactive -email="`+th.BasicUser.Email+`"`) + output, err := cmd.CombinedOutput() + if err != nil { + t.Log(string(output)) + t.Fatal() + } + + // activate the inactive user + cmd2 := exec.Command("bash", "-c", `go run ../mattermost.go -activate_user -email="`+th.BasicUser.Email+`"`) + output2, err2 := cmd2.CombinedOutput() + if err2 != nil { + t.Log(string(output2)) + t.Fatal() + } +} diff --git a/mattermost.go b/mattermost.go index 73fd472ef..2f277140a 100644 --- a/mattermost.go +++ b/mattermost.go @@ -62,6 +62,7 @@ var flagCmdPermanentDeleteAllUsers bool var flagCmdResetDatabase bool var flagCmdRunLdapSync bool var flagCmdMigrateAccounts bool +var flagCmdActivateUser bool var flagUsername string var flagCmdUploadLicense bool var flagConfigFile string @@ -79,6 +80,7 @@ var flagMatchField string var flagChannelType string var flagChannelHeader string var flagChannelPurpose string +var flagUserSetInactive bool func doLoadConfig(filename string) (err string) { defer func() { @@ -372,6 +374,8 @@ func parseCmds() { flag.BoolVar(&flagCmdRunLdapSync, "ldap_sync", false, "") flag.BoolVar(&flagCmdMigrateAccounts, "migrate_accounts", false, "") flag.BoolVar(&flagCmdUploadLicense, "upload_license", false, "") + flag.BoolVar(&flagCmdActivateUser, "activate_user", false, "") + flag.BoolVar(&flagUserSetInactive, "inactive", false, "") flag.Parse() @@ -397,7 +401,8 @@ func parseCmds() { flagCmdResetDatabase || flagCmdRunLdapSync || flagCmdMigrateAccounts || - flagCmdUploadLicense) + flagCmdUploadLicense || + flagCmdActivateUser) } func runCmds() { @@ -423,6 +428,7 @@ func runCmds() { cmdUploadLicense() cmdRunLdapSync() cmdRunMigrateAccounts() + cmdActivateUser() } type TeamForUpgrade struct { @@ -1336,6 +1342,34 @@ func cmdUploadLicense() { } } +func cmdActivateUser() { + if flagCmdActivateUser { + if len(flagEmail) == 0 { + fmt.Fprintln(os.Stderr, "flag needs an argument: -email") + flag.Usage() + os.Exit(1) + } + + var user *model.User + if result := <-api.Srv.Store.User().GetByEmail(flagEmail); result.Err != nil { + l4g.Error("%v", result.Err) + flushLogAndExit(1) + } else { + user = result.Data.(*model.User) + } + + if user.IsLDAPUser() { + l4g.Error("%v", utils.T("api.user.update_active.no_deactivate_ldap.app_error")) + } + + if _, err := api.UpdateActive(user, !flagUserSetInactive); err != nil { + l4g.Error("%v", err) + } + + os.Exit(0) + } +} + func flushLogAndExit(code int) { l4g.Close() time.Sleep(time.Second) @@ -1391,6 +1425,13 @@ FLAGS: admin who has access to all teams and configuration settings. COMMANDS: + -activate_user Set a user as active or inactive. It requies + the -email flag. + + Examples: + platform -activate_user -email="user@example.com" + platform -activate_user -inactive -email="user@example.com" + -create_team Creates a team. It requires the -team_name and -email flag to create a team. Example: -- cgit v1.2.3-1-g7c22