summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/gotosocial/action/admin/account/account.go39
-rw-r--r--cmd/gotosocial/admin.go15
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",