From eb720241da3d786c6ec79f2325277fa4af23846f Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Wed, 26 Feb 2025 13:04:55 +0100 Subject: [feature] Enforce OAuth token scopes (#3835) * move tokenauth to apiutil * enforce scopes * docs * update test models, remove deprecated "follow" * file header * tests * tweak scope matcher * simplify... * fix tests * log user out of settings panel in case of oauth error --- internal/api/client/interactionrequests/authorize.go | 9 +++++---- internal/api/client/interactionrequests/get.go | 10 ++++++---- internal/api/client/interactionrequests/getpage.go | 10 ++++++---- internal/api/client/interactionrequests/reject.go | 9 +++++---- 4 files changed, 22 insertions(+), 16 deletions(-) (limited to 'internal/api/client/interactionrequests') diff --git a/internal/api/client/interactionrequests/authorize.go b/internal/api/client/interactionrequests/authorize.go index 1e5589f7e..8191923ba 100644 --- a/internal/api/client/interactionrequests/authorize.go +++ b/internal/api/client/interactionrequests/authorize.go @@ -23,7 +23,6 @@ import ( "github.com/gin-gonic/gin" apiutil "github.com/superseriousbusiness/gotosocial/internal/api/util" "github.com/superseriousbusiness/gotosocial/internal/gtserror" - "github.com/superseriousbusiness/gotosocial/internal/oauth" ) // InteractionRequestAuthorizePOSTHandler swagger:operation POST /api/v1/interaction_requests/{id}/authorize authorizeInteractionRequest @@ -66,9 +65,11 @@ import ( // '500': // description: internal server error func (m *Module) InteractionRequestAuthorizePOSTHandler(c *gin.Context) { - authed, err := oauth.Authed(c, true, true, true, true) - if err != nil { - errWithCode := gtserror.NewErrorUnauthorized(err, err.Error()) + authed, errWithCode := apiutil.TokenAuth(c, + true, true, true, true, + apiutil.ScopeWriteStatuses, + ) + if errWithCode != nil { apiutil.ErrorHandler(c, errWithCode, m.processor.InstanceGetV1) return } diff --git a/internal/api/client/interactionrequests/get.go b/internal/api/client/interactionrequests/get.go index a354a8623..d1d5f5eb4 100644 --- a/internal/api/client/interactionrequests/get.go +++ b/internal/api/client/interactionrequests/get.go @@ -23,7 +23,6 @@ import ( "github.com/gin-gonic/gin" apiutil "github.com/superseriousbusiness/gotosocial/internal/api/util" "github.com/superseriousbusiness/gotosocial/internal/gtserror" - "github.com/superseriousbusiness/gotosocial/internal/oauth" ) // InteractionRequestGETHandler swagger:operation GET /api/v1/interaction_requests/{id} getInteractionRequest @@ -65,9 +64,12 @@ import ( // '500': // description: internal server error func (m *Module) InteractionRequestGETHandler(c *gin.Context) { - authed, err := oauth.Authed(c, true, true, true, true) - if err != nil { - apiutil.ErrorHandler(c, gtserror.NewErrorUnauthorized(err, err.Error()), m.processor.InstanceGetV1) + authed, errWithCode := apiutil.TokenAuth(c, + true, true, true, true, + apiutil.ScopeReadNotifications, + ) + if errWithCode != nil { + apiutil.ErrorHandler(c, errWithCode, m.processor.InstanceGetV1) return } diff --git a/internal/api/client/interactionrequests/getpage.go b/internal/api/client/interactionrequests/getpage.go index 1978a055c..f3f1251cc 100644 --- a/internal/api/client/interactionrequests/getpage.go +++ b/internal/api/client/interactionrequests/getpage.go @@ -24,7 +24,6 @@ import ( "github.com/gin-gonic/gin" apiutil "github.com/superseriousbusiness/gotosocial/internal/api/util" "github.com/superseriousbusiness/gotosocial/internal/gtserror" - "github.com/superseriousbusiness/gotosocial/internal/oauth" "github.com/superseriousbusiness/gotosocial/internal/paging" ) @@ -137,9 +136,12 @@ import ( // '500': // description: internal server error func (m *Module) InteractionRequestsGETHandler(c *gin.Context) { - authed, err := oauth.Authed(c, true, true, true, true) - if err != nil { - apiutil.ErrorHandler(c, gtserror.NewErrorUnauthorized(err, err.Error()), m.processor.InstanceGetV1) + authed, errWithCode := apiutil.TokenAuth(c, + true, true, true, true, + apiutil.ScopeReadNotifications, + ) + if errWithCode != nil { + apiutil.ErrorHandler(c, errWithCode, m.processor.InstanceGetV1) return } diff --git a/internal/api/client/interactionrequests/reject.go b/internal/api/client/interactionrequests/reject.go index 33c426462..0102d872a 100644 --- a/internal/api/client/interactionrequests/reject.go +++ b/internal/api/client/interactionrequests/reject.go @@ -23,7 +23,6 @@ import ( "github.com/gin-gonic/gin" apiutil "github.com/superseriousbusiness/gotosocial/internal/api/util" "github.com/superseriousbusiness/gotosocial/internal/gtserror" - "github.com/superseriousbusiness/gotosocial/internal/oauth" ) // InteractionRequestRejectPOSTHandler swagger:operation POST /api/v1/interaction_requests/{id}/reject rejectInteractionRequest @@ -66,9 +65,11 @@ import ( // '500': // description: internal server error func (m *Module) InteractionRequestRejectPOSTHandler(c *gin.Context) { - authed, err := oauth.Authed(c, true, true, true, true) - if err != nil { - errWithCode := gtserror.NewErrorUnauthorized(err, err.Error()) + authed, errWithCode := apiutil.TokenAuth(c, + true, true, true, true, + apiutil.ScopeWriteStatuses, + ) + if errWithCode != nil { apiutil.ErrorHandler(c, errWithCode, m.processor.InstanceGetV1) return } -- cgit v1.2.3