diff options
author | 2024-03-13 13:53:29 +0100 | |
---|---|---|
committer | 2024-03-13 13:53:29 +0100 | |
commit | ab2d063fcb04f241a3147c843a021491f5fc0a55 (patch) | |
tree | 3d2eff864e8b19d4d9a24f4f1fe92feda8ee4dac /internal/api/client/admin | |
parent | [bugfix]: Add missing Link headers in Swagger spec (#2751) (diff) | |
download | gotosocial-ab2d063fcb04f241a3147c843a021491f5fc0a55.tar.xz |
[feature] Process outgoing Move from clientAPI (#2750)
* prevent moved accounts from taking create-type actions
* update move logic
* federate move out
* indicate on web profile when an account has moved
* [docs] Add migration docs section
* lock while checking + setting move state
* use redirectFollowers func for clientAPI as well
* comment typo
* linter? i barely know 'er!
* Update internal/uris/uri.go
Co-authored-by: Daenney <daenney@users.noreply.github.com>
* add a couple tests for move
* fix little mistake exposed by tests (thanks tests)
* ensure Move marked as successful
* attach shared util funcs to struct
* lock whole account when doing move
* move moving check to after error check
* replace repeated text with error func
* linterrrrrr!!!!
* catch self follow case
---------
Co-authored-by: Daenney <daenney@users.noreply.github.com>
Diffstat (limited to 'internal/api/client/admin')
-rw-r--r-- | internal/api/client/admin/accountaction.go | 5 | ||||
-rw-r--r-- | internal/api/client/admin/domainkeysexpire.go | 5 | ||||
-rw-r--r-- | internal/api/client/admin/domainpermission.go | 10 | ||||
-rw-r--r-- | internal/api/client/admin/emailtest.go | 5 | ||||
-rw-r--r-- | internal/api/client/admin/emojicreate.go | 5 | ||||
-rw-r--r-- | internal/api/client/admin/emojidelete.go | 5 | ||||
-rw-r--r-- | internal/api/client/admin/emojiupdate.go | 5 | ||||
-rw-r--r-- | internal/api/client/admin/headerfilter.go | 10 | ||||
-rw-r--r-- | internal/api/client/admin/mediacleanup.go | 5 | ||||
-rw-r--r-- | internal/api/client/admin/mediarefetch.go | 5 | ||||
-rw-r--r-- | internal/api/client/admin/reportresolve.go | 5 | ||||
-rw-r--r-- | internal/api/client/admin/rulecreate.go | 5 | ||||
-rw-r--r-- | internal/api/client/admin/ruledelete.go | 5 | ||||
-rw-r--r-- | internal/api/client/admin/ruleupdate.go | 5 |
14 files changed, 80 insertions, 0 deletions
diff --git a/internal/api/client/admin/accountaction.go b/internal/api/client/admin/accountaction.go index 89bcf644e..7d74e8530 100644 --- a/internal/api/client/admin/accountaction.go +++ b/internal/api/client/admin/accountaction.go @@ -99,6 +99,11 @@ func (m *Module) AccountActionPOSTHandler(c *gin.Context) { return } + if authed.Account.IsMoving() { + apiutil.ForbiddenAfterMove(c) + return + } + form := &apimodel.AdminActionRequest{} if err := c.ShouldBind(form); err != nil { apiutil.ErrorHandler(c, gtserror.NewErrorBadRequest(err, err.Error()), m.processor.InstanceGetV1) diff --git a/internal/api/client/admin/domainkeysexpire.go b/internal/api/client/admin/domainkeysexpire.go index 4990d879f..0926519f5 100644 --- a/internal/api/client/admin/domainkeysexpire.go +++ b/internal/api/client/admin/domainkeysexpire.go @@ -107,6 +107,11 @@ func (m *Module) DomainKeysExpirePOSTHandler(c *gin.Context) { return } + if authed.Account.IsMoving() { + apiutil.ForbiddenAfterMove(c) + return + } + if _, err := apiutil.NegotiateAccept(c, apiutil.JSONAcceptHeaders...); err != nil { apiutil.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGetV1) return diff --git a/internal/api/client/admin/domainpermission.go b/internal/api/client/admin/domainpermission.go index 05319086f..90c0eb4c0 100644 --- a/internal/api/client/admin/domainpermission.go +++ b/internal/api/client/admin/domainpermission.go @@ -75,6 +75,11 @@ func (m *Module) createDomainPermissions( return } + if authed.Account.IsMoving() { + apiutil.ForbiddenAfterMove(c) + return + } + if _, err := apiutil.NegotiateAccept(c, apiutil.JSONAcceptHeaders...); err != nil { apiutil.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGetV1) return @@ -178,6 +183,11 @@ func (m *Module) deleteDomainPermission( return } + if authed.Account.IsMoving() { + apiutil.ForbiddenAfterMove(c) + return + } + if _, err := apiutil.NegotiateAccept(c, apiutil.JSONAcceptHeaders...); err != nil { apiutil.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGetV1) return diff --git a/internal/api/client/admin/emailtest.go b/internal/api/client/admin/emailtest.go index 8f274e226..42b405ce7 100644 --- a/internal/api/client/admin/emailtest.go +++ b/internal/api/client/admin/emailtest.go @@ -93,6 +93,11 @@ func (m *Module) EmailTestPOSTHandler(c *gin.Context) { return } + if authed.Account.IsMoving() { + apiutil.ForbiddenAfterMove(c) + return + } + if _, err := apiutil.NegotiateAccept(c, apiutil.JSONAcceptHeaders...); err != nil { apiutil.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGetV1) return diff --git a/internal/api/client/admin/emojicreate.go b/internal/api/client/admin/emojicreate.go index 9086b27e0..75661f1c3 100644 --- a/internal/api/client/admin/emojicreate.go +++ b/internal/api/client/admin/emojicreate.go @@ -110,6 +110,11 @@ func (m *Module) EmojiCreatePOSTHandler(c *gin.Context) { return } + if authed.Account.IsMoving() { + apiutil.ForbiddenAfterMove(c) + return + } + if _, err := apiutil.NegotiateAccept(c, apiutil.JSONAcceptHeaders...); err != nil { apiutil.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGetV1) return diff --git a/internal/api/client/admin/emojidelete.go b/internal/api/client/admin/emojidelete.go index b5cf72daf..47248a1b9 100644 --- a/internal/api/client/admin/emojidelete.go +++ b/internal/api/client/admin/emojidelete.go @@ -87,6 +87,11 @@ func (m *Module) EmojiDELETEHandler(c *gin.Context) { return } + if authed.Account.IsMoving() { + apiutil.ForbiddenAfterMove(c) + return + } + if _, err := apiutil.NegotiateAccept(c, apiutil.JSONAcceptHeaders...); err != nil { apiutil.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGetV1) return diff --git a/internal/api/client/admin/emojiupdate.go b/internal/api/client/admin/emojiupdate.go index ffde2d597..1d41dd545 100644 --- a/internal/api/client/admin/emojiupdate.go +++ b/internal/api/client/admin/emojiupdate.go @@ -137,6 +137,11 @@ func (m *Module) EmojiPATCHHandler(c *gin.Context) { return } + if authed.Account.IsMoving() { + apiutil.ForbiddenAfterMove(c) + return + } + if _, err := apiutil.NegotiateAccept(c, apiutil.JSONAcceptHeaders...); err != nil { apiutil.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGetV1) return diff --git a/internal/api/client/admin/headerfilter.go b/internal/api/client/admin/headerfilter.go index 7b1a85c86..01bcaca16 100644 --- a/internal/api/client/admin/headerfilter.go +++ b/internal/api/client/admin/headerfilter.go @@ -114,6 +114,11 @@ func (m *Module) createHeaderFilter(c *gin.Context, create func(context.Context, return } + if authed.Account.IsMoving() { + apiutil.ForbiddenAfterMove(c) + return + } + if _, err := apiutil.NegotiateAccept(c, apiutil.JSONAcceptHeaders...); err != nil { errWithCode := gtserror.NewErrorNotAcceptable(err, err.Error()) apiutil.ErrorHandler(c, errWithCode, m.processor.InstanceGetV1) @@ -157,6 +162,11 @@ func (m *Module) deleteHeaderFilter(c *gin.Context, delete func(context.Context, return } + if authed.Account.IsMoving() { + apiutil.ForbiddenAfterMove(c) + return + } + filterID, errWithCode := apiutil.ParseID(c.Param("ID")) if errWithCode != nil { apiutil.ErrorHandler(c, errWithCode, m.processor.InstanceGetV1) diff --git a/internal/api/client/admin/mediacleanup.go b/internal/api/client/admin/mediacleanup.go index 7a0ee4bd6..661a8ff15 100644 --- a/internal/api/client/admin/mediacleanup.go +++ b/internal/api/client/admin/mediacleanup.go @@ -81,6 +81,11 @@ func (m *Module) MediaCleanupPOSTHandler(c *gin.Context) { return } + if authed.Account.IsMoving() { + apiutil.ForbiddenAfterMove(c) + return + } + form := &apimodel.MediaCleanupRequest{} if err := c.ShouldBind(form); err != nil { apiutil.ErrorHandler(c, gtserror.NewErrorBadRequest(err, err.Error()), m.processor.InstanceGetV1) diff --git a/internal/api/client/admin/mediarefetch.go b/internal/api/client/admin/mediarefetch.go index 1c0da6dea..b2b0516ba 100644 --- a/internal/api/client/admin/mediarefetch.go +++ b/internal/api/client/admin/mediarefetch.go @@ -83,6 +83,11 @@ func (m *Module) MediaRefetchPOSTHandler(c *gin.Context) { return } + if authed.Account.IsMoving() { + apiutil.ForbiddenAfterMove(c) + return + } + if errWithCode := m.processor.Admin().MediaRefetch(c.Request.Context(), authed.Account, c.Query(DomainQueryKey)); errWithCode != nil { apiutil.ErrorHandler(c, errWithCode, m.processor.InstanceGetV1) return diff --git a/internal/api/client/admin/reportresolve.go b/internal/api/client/admin/reportresolve.go index 2ad979b0b..51c268a2d 100644 --- a/internal/api/client/admin/reportresolve.go +++ b/internal/api/client/admin/reportresolve.go @@ -97,6 +97,11 @@ func (m *Module) ReportResolvePOSTHandler(c *gin.Context) { return } + if authed.Account.IsMoving() { + apiutil.ForbiddenAfterMove(c) + return + } + if _, err := apiutil.NegotiateAccept(c, apiutil.JSONAcceptHeaders...); err != nil { apiutil.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGetV1) return diff --git a/internal/api/client/admin/rulecreate.go b/internal/api/client/admin/rulecreate.go index 155c69db0..8728940c5 100644 --- a/internal/api/client/admin/rulecreate.go +++ b/internal/api/client/admin/rulecreate.go @@ -77,6 +77,11 @@ func (m *Module) RulePOSTHandler(c *gin.Context) { return } + if authed.Account.IsMoving() { + apiutil.ForbiddenAfterMove(c) + return + } + if _, err := apiutil.NegotiateAccept(c, apiutil.JSONAcceptHeaders...); err != nil { apiutil.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGetV1) return diff --git a/internal/api/client/admin/ruledelete.go b/internal/api/client/admin/ruledelete.go index 834149978..ead219e34 100644 --- a/internal/api/client/admin/ruledelete.go +++ b/internal/api/client/admin/ruledelete.go @@ -85,6 +85,11 @@ func (m *Module) RuleDELETEHandler(c *gin.Context) { return } + if authed.Account.IsMoving() { + apiutil.ForbiddenAfterMove(c) + return + } + if _, err := apiutil.NegotiateAccept(c, apiutil.JSONAcceptHeaders...); err != nil { apiutil.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGetV1) return diff --git a/internal/api/client/admin/ruleupdate.go b/internal/api/client/admin/ruleupdate.go index 2ba31485e..bf838f7ae 100644 --- a/internal/api/client/admin/ruleupdate.go +++ b/internal/api/client/admin/ruleupdate.go @@ -77,6 +77,11 @@ func (m *Module) RulePATCHHandler(c *gin.Context) { return } + if authed.Account.IsMoving() { + apiutil.ForbiddenAfterMove(c) + return + } + if _, err := apiutil.NegotiateAccept(c, apiutil.JSONAcceptHeaders...); err != nil { apiutil.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGetV1) return |