mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-11-02 05:02:24 -06:00
[bugfix] Fix '+'-separated scopes not being recognized (#4028)
* [bugfix] Fix '+'-separated scopes not being recognized * comment
This commit is contained in:
parent
d308fd0d0a
commit
e9f6d186dc
6 changed files with 35 additions and 19 deletions
|
|
@ -20,6 +20,7 @@ package auth
|
|||
import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"github.com/gin-contrib/sessions"
|
||||
"github.com/gin-gonic/gin"
|
||||
|
|
@ -229,8 +230,8 @@ func (m *Module) AuthorizePOSTHandler(c *gin.Context) {
|
|||
}
|
||||
|
||||
// redirectAuthFormToSignIn binds an OAuthAuthorize form,
|
||||
// stores the values in the form into the session, and
|
||||
// redirects the user to the sign in page.
|
||||
// presumed to be set as url query params, stores the values
|
||||
// into the session, and redirects the user to the sign in page.
|
||||
func (m *Module) redirectAuthFormToSignIn(c *gin.Context) {
|
||||
s := sessions.Default(c)
|
||||
|
||||
|
|
@ -240,9 +241,14 @@ func (m *Module) redirectAuthFormToSignIn(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
// Set default scope to read.
|
||||
// If scope isn't set default to read.
|
||||
//
|
||||
// Else massage submitted scope(s) from
|
||||
// '+'-separated to space-separated.
|
||||
if form.Scope == "" {
|
||||
form.Scope = "read"
|
||||
} else {
|
||||
form.Scope = strings.ReplaceAll(form.Scope, "+", " ")
|
||||
}
|
||||
|
||||
// Save these values from the form so we
|
||||
|
|
|
|||
|
|
@ -80,10 +80,12 @@ func (m *Module) TokenRevokePOSTHandler(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
// Don't set `binding:"required"` on these
|
||||
// fields as we want to validate them ourself.
|
||||
form := &struct {
|
||||
ClientID string `form:"client_id" validate:"required"`
|
||||
ClientSecret string `form:"client_secret" validate:"required"`
|
||||
Token string `form:"token" validate:"required"`
|
||||
ClientID string `form:"client_id"`
|
||||
ClientSecret string `form:"client_secret"`
|
||||
Token string `form:"token"`
|
||||
}{}
|
||||
if err := c.ShouldBind(form); err != nil {
|
||||
errWithCode := gtserror.NewErrorBadRequest(err, err.Error())
|
||||
|
|
|
|||
|
|
@ -101,8 +101,8 @@ func (m *Module) SignInPOSTHandler(c *gin.Context) {
|
|||
|
||||
// Parse email + password.
|
||||
form := &struct {
|
||||
Email string `form:"username" validate:"required"`
|
||||
Password string `form:"password" validate:"required"`
|
||||
Email string `form:"username" binding:"required"`
|
||||
Password string `form:"password" binding:"required"`
|
||||
}{}
|
||||
if err := c.ShouldBind(form); err != nil {
|
||||
m.clearSessionWithBadRequest(c, s, err, oauth.HelpfulAdvice)
|
||||
|
|
@ -235,7 +235,7 @@ func (m *Module) TwoFactorCodePOSTHandler(c *gin.Context) {
|
|||
|
||||
// Parse 2fa code.
|
||||
form := &struct {
|
||||
Code string `form:"code" validate:"required"`
|
||||
Code string `form:"code" binding:"required"`
|
||||
}{}
|
||||
if err := c.ShouldBind(form); err != nil {
|
||||
m.clearSessionWithBadRequest(c, s, err, oauth.HelpfulAdvice)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue