From 6b2eabf6108e078bed8143e91c605dec5ccfafa6 Mon Sep 17 00:00:00 2001 From: =Corey Hulen Date: Mon, 16 Nov 2015 17:12:49 -0800 Subject: Adding perm delete to cmd line --- mattermost.go | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 119 insertions(+), 1 deletion(-) (limited to 'mattermost.go') diff --git a/mattermost.go b/mattermost.go index e1ae58904..37b4c4c06 100644 --- a/mattermost.go +++ b/mattermost.go @@ -30,6 +30,8 @@ var flagCmdCreateUser bool var flagCmdAssignRole bool var flagCmdVersion bool var flagCmdResetPassword bool +var flagCmdResetPermanentDeleteUser bool +var flagCmdResetPermanentDeleteTeam bool var flagConfigFile string var flagEmail string var flagPassword string @@ -191,10 +193,12 @@ func parseCmds() { flag.BoolVar(&flagCmdAssignRole, "assign_role", false, "") flag.BoolVar(&flagCmdVersion, "version", false, "") flag.BoolVar(&flagCmdResetPassword, "reset_password", false, "") + flag.BoolVar(&flagCmdResetPermanentDeleteUser, "permanent_delete_user", false, "") + flag.BoolVar(&flagCmdResetPermanentDeleteTeam, "permanent_delete_team", false, "") flag.Parse() - flagRunCmds = flagCmdCreateTeam || flagCmdCreateUser || flagCmdAssignRole || flagCmdResetPassword || flagCmdVersion + flagRunCmds = flagCmdCreateTeam || flagCmdCreateUser || flagCmdAssignRole || flagCmdResetPassword || flagCmdVersion || flagCmdResetPermanentDeleteUser || flagCmdResetPermanentDeleteTeam } func runCmds() { @@ -203,6 +207,8 @@ func runCmds() { cmdCreateUser() cmdAssignRole() cmdResetPassword() + cmdPermDeleteUser() + cmdPermDeleteTeam() } func cmdCreateTeam() { @@ -406,6 +412,106 @@ func cmdResetPassword() { } } +func cmdPermDeleteUser() { + if flagCmdResetPermanentDeleteUser { + if len(flagTeamName) == 0 { + fmt.Fprintln(os.Stderr, "flag needs an argument: -team_name") + flag.Usage() + os.Exit(1) + } + + if len(flagEmail) == 0 { + fmt.Fprintln(os.Stderr, "flag needs an argument: -email") + flag.Usage() + os.Exit(1) + } + + c := &api.Context{} + c.RequestId = model.NewId() + c.IpAddress = "cmd_line" + + var team *model.Team + if result := <-api.Srv.Store.Team().GetByName(flagTeamName); result.Err != nil { + l4g.Error("%v", result.Err) + flushLogAndExit(1) + } else { + team = result.Data.(*model.Team) + } + + var user *model.User + if result := <-api.Srv.Store.User().GetByEmail(team.Id, flagEmail); result.Err != nil { + l4g.Error("%v", result.Err) + flushLogAndExit(1) + } else { + user = result.Data.(*model.User) + } + + var confirmBackup string + fmt.Print("Have you performed a database backup? (YES/NO): ") + fmt.Scanln(&confirmBackup) + if confirmBackup != "YES" { + flushLogAndExit(1) + } + + var confirm string + fmt.Printf("Are you sure you want to delete the user %v? All data will be permanently deleted? (YES/NO): ", user.Email) + fmt.Scanln(&confirm) + if confirm != "YES" { + flushLogAndExit(1) + } + + if err := api.PermanentDeleteUser(c, user); err != nil { + l4g.Error("%v", err) + flushLogAndExit(1) + } else { + flushLogAndExit(0) + } + } +} + +func cmdPermDeleteTeam() { + if flagCmdResetPermanentDeleteTeam { + if len(flagTeamName) == 0 { + fmt.Fprintln(os.Stderr, "flag needs an argument: -team_name") + flag.Usage() + os.Exit(1) + } + + c := &api.Context{} + c.RequestId = model.NewId() + c.IpAddress = "cmd_line" + + var team *model.Team + if result := <-api.Srv.Store.Team().GetByName(flagTeamName); result.Err != nil { + l4g.Error("%v", result.Err) + flushLogAndExit(1) + } else { + team = result.Data.(*model.Team) + } + + var confirmBackup string + fmt.Print("Have you performed a database backup? (YES/NO): ") + fmt.Scanln(&confirmBackup) + if confirmBackup != "YES" { + flushLogAndExit(1) + } + + var confirm string + fmt.Printf("Are you sure you want to delete the team %v? All data will be permanently deleted? (YES/NO): ", team.Name) + fmt.Scanln(&confirm) + if confirm != "YES" { + flushLogAndExit(1) + } + + if err := api.PermanentDeleteTeam(c, team); err != nil { + l4g.Error("%v", err) + flushLogAndExit(1) + } else { + flushLogAndExit(0) + } + } +} + func flushLogAndExit(code int) { l4g.Close() time.Sleep(time.Second) @@ -461,5 +567,17 @@ Usage: Example: platform -reset_password -team_name="name" -email="user@example.com" -password="newpassword" + -permanent_delete_user Permanently deletes a user and all related information + include posts from the database. It requires the + -team_name, and -email flag. + Example: + platform -permanent_delete_user -team_name="name" -email="user@example.com" + + -permanent_delete_team Permanently deletes a team and all users along with + all related information including posts from the database. + It requires the -team_name flag. + Example: + platform -permanent_delete_team -team_name="name" + ` -- cgit v1.2.3-1-g7c22 From 59722a13eef85cbe4a3cf710683c0ea0cb99348f Mon Sep 17 00:00:00 2001 From: =Corey Hulen Date: Mon, 16 Nov 2015 18:30:04 -0800 Subject: changing help text --- mattermost.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'mattermost.go') diff --git a/mattermost.go b/mattermost.go index 37b4c4c06..80f47b9d6 100644 --- a/mattermost.go +++ b/mattermost.go @@ -569,13 +569,15 @@ Usage: -permanent_delete_user Permanently deletes a user and all related information include posts from the database. It requires the - -team_name, and -email flag. + -team_name, and -email flag. You may need to restart the + server to invlidate the cache Example: platform -permanent_delete_user -team_name="name" -email="user@example.com" -permanent_delete_team Permanently deletes a team and all users along with all related information including posts from the database. - It requires the -team_name flag. + It requires the -team_name flag. You may need to restart + the server to invalidate the cache. Example: platform -permanent_delete_team -team_name="name" -- cgit v1.2.3-1-g7c22 From c115191d6b5abdefda856c063e3f9048dc82f830 Mon Sep 17 00:00:00 2001 From: =Corey Hulen Date: Wed, 18 Nov 2015 08:53:17 -0800 Subject: fixing based on feedback --- mattermost.go | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'mattermost.go') diff --git a/mattermost.go b/mattermost.go index 80f47b9d6..2d5727400 100644 --- a/mattermost.go +++ b/mattermost.go @@ -30,8 +30,8 @@ var flagCmdCreateUser bool var flagCmdAssignRole bool var flagCmdVersion bool var flagCmdResetPassword bool -var flagCmdResetPermanentDeleteUser bool -var flagCmdResetPermanentDeleteTeam bool +var flagCmdPermanentDeleteUser bool +var flagCmdPermanentDeleteTeam bool var flagConfigFile string var flagEmail string var flagPassword string @@ -193,12 +193,18 @@ func parseCmds() { flag.BoolVar(&flagCmdAssignRole, "assign_role", false, "") flag.BoolVar(&flagCmdVersion, "version", false, "") flag.BoolVar(&flagCmdResetPassword, "reset_password", false, "") - flag.BoolVar(&flagCmdResetPermanentDeleteUser, "permanent_delete_user", false, "") - flag.BoolVar(&flagCmdResetPermanentDeleteTeam, "permanent_delete_team", false, "") + flag.BoolVar(&flagCmdPermanentDeleteUser, "permanent_delete_user", false, "") + flag.BoolVar(&flagCmdPermanentDeleteTeam, "permanent_delete_team", false, "") flag.Parse() - flagRunCmds = flagCmdCreateTeam || flagCmdCreateUser || flagCmdAssignRole || flagCmdResetPassword || flagCmdVersion || flagCmdResetPermanentDeleteUser || flagCmdResetPermanentDeleteTeam + flagRunCmds = (flagCmdCreateTeam || + flagCmdCreateUser || + flagCmdAssignRole || + flagCmdResetPassword || + flagCmdVersion || + flagCmdPermanentDeleteUser || + flagCmdPermanentDeleteTeam) } func runCmds() { @@ -413,7 +419,7 @@ func cmdResetPassword() { } func cmdPermDeleteUser() { - if flagCmdResetPermanentDeleteUser { + if flagCmdPermanentDeleteUser { if len(flagTeamName) == 0 { fmt.Fprintln(os.Stderr, "flag needs an argument: -team_name") flag.Usage() @@ -470,7 +476,7 @@ func cmdPermDeleteUser() { } func cmdPermDeleteTeam() { - if flagCmdResetPermanentDeleteTeam { + if flagCmdPermanentDeleteTeam { if len(flagTeamName) == 0 { fmt.Fprintln(os.Stderr, "flag needs an argument: -team_name") flag.Usage() -- cgit v1.2.3-1-g7c22