diff options
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/gotosocial/action/admin/account/account.go | 39 | ||||
-rw-r--r-- | cmd/gotosocial/admin.go | 15 |
2 files changed, 52 insertions, 2 deletions
diff --git a/cmd/gotosocial/action/admin/account/account.go b/cmd/gotosocial/action/admin/account/account.go index 612f10cc8..e2fd82642 100644 --- a/cmd/gotosocial/action/admin/account/account.go +++ b/cmd/gotosocial/action/admin/account/account.go @@ -30,6 +30,7 @@ import ( "github.com/superseriousbusiness/gotosocial/internal/gtsmodel" "github.com/superseriousbusiness/gotosocial/internal/log" "github.com/superseriousbusiness/gotosocial/internal/state" + "github.com/superseriousbusiness/gotosocial/internal/util" "github.com/superseriousbusiness/gotosocial/internal/validate" "golang.org/x/crypto/bcrypt" ) @@ -294,7 +295,43 @@ var Disable action.GTSAction = func(ctx context.Context) error { return err } - user.Disabled = func() *bool { d := true; return &d }() + user.Disabled = util.Ptr(true) + return state.DB.UpdateUser( + ctx, user, + "disabled", + ) +} + +// Enable sets Disabled to false on a user. +var Enable action.GTSAction = func(ctx context.Context) error { + state, err := initState(ctx) + if err != nil { + return err + } + + defer func() { + // Ensure state gets stopped on return. + if err := stopState(state); err != nil { + log.Error(ctx, err) + } + }() + + username := config.GetAdminAccountUsername() + if err := validate.Username(username); err != nil { + return err + } + + account, err := state.DB.GetAccountByUsernameDomain(ctx, username, "") + if err != nil { + return err + } + + user, err := state.DB.GetUserByAccountID(ctx, account.ID) + if err != nil { + return err + } + + user.Disabled = util.Ptr(false) return state.DB.UpdateUser( ctx, user, "disabled", diff --git a/cmd/gotosocial/admin.go b/cmd/gotosocial/admin.go index 3b2ea69e3..41eb40633 100644 --- a/cmd/gotosocial/admin.go +++ b/cmd/gotosocial/admin.go @@ -108,7 +108,7 @@ func adminCommands() *cobra.Command { adminAccountDisableCmd := &cobra.Command{ Use: "disable", - Short: "prevent a local account from signing in or posting etc, but don't delete anything", + Short: "set 'disabled' to true on a local account to prevent it from signing in or posting etc, but don't delete anything", PreRunE: func(cmd *cobra.Command, args []string) error { return preRun(preRunArgs{cmd: cmd}) }, @@ -119,6 +119,19 @@ func adminCommands() *cobra.Command { config.AddAdminAccount(adminAccountDisableCmd) adminAccountCmd.AddCommand(adminAccountDisableCmd) + adminAccountEnableCmd := &cobra.Command{ + Use: "enable", + Short: "undo a previous disable command by setting 'disabled' to false on a local account", + PreRunE: func(cmd *cobra.Command, args []string) error { + return preRun(preRunArgs{cmd: cmd}) + }, + RunE: func(cmd *cobra.Command, args []string) error { + return run(cmd.Context(), account.Enable) + }, + } + config.AddAdminAccount(adminAccountEnableCmd) + adminAccountCmd.AddCommand(adminAccountEnableCmd) + adminAccountPasswordCmd := &cobra.Command{ Use: "password", Short: "set a new password for the given local account", |