mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[feature] Refactor tokens, allow multiple app redirect_uris (#3849)
* [feature] Refactor tokens, allow multiple app redirect_uris * move + tweak handlers a bit * return error for unset oauth2.ClientStore funcs * wrap UpdateToken with cache * panic handling * cheeky little time optimization * unlock on error
This commit is contained in:
@@ -93,11 +93,29 @@ const (
|
||||
// scope permits the wanted scope.
|
||||
func (has Scope) Permits(wanted Scope) bool {
|
||||
if has == wanted {
|
||||
// Exact match.
|
||||
// Exact match on either a
|
||||
// top-level or granular scope.
|
||||
return true
|
||||
}
|
||||
|
||||
// Check if we have a parent scope of what's wanted,
|
||||
// eg., we have scope "admin", we want "admin:read".
|
||||
return strings.HasPrefix(string(wanted), string(has))
|
||||
// Ensure we have a
|
||||
// known top-level scope.
|
||||
switch has {
|
||||
|
||||
case ScopeProfile,
|
||||
ScopePush,
|
||||
ScopeRead,
|
||||
ScopeWrite,
|
||||
ScopeAdmin,
|
||||
ScopeAdminRead,
|
||||
ScopeAdminWrite:
|
||||
// Check if top-level includes wanted,
|
||||
// eg., have "admin", want "admin:read".
|
||||
return strings.HasPrefix(string(wanted), string(has)+":")
|
||||
|
||||
default:
|
||||
// Unknown top-level scope,
|
||||
// can't permit anything.
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user