fix: use withlock for get oidc code entry

This commit is contained in:
Stavros
2026-06-02 12:14:10 +03:00
parent b3c152fa1c
commit b636e6ff57
+13 -3
View File
@@ -465,18 +465,28 @@ func (service *OIDCService) ValidateGrantType(grantType string) error {
}
func (service *OIDCService) GetCodeEntry(codeHash string, clientId string) (*AuthorizeCodeEntry, bool) {
entry, ok := service.caches.code.Get(codeHash)
var entry AuthorizeCodeEntry
var ok bool
service.caches.code.WithLock(func(actions CacheStoreActions[AuthorizeCodeEntry]) {
entry, ok = service.caches.code.Get(codeHash)
if !ok {
return nil, false
return
}
if entry.ClientID != clientId {
return nil, false
ok = false
return
}
// Since the code can only be used once, we delete it from the cache after retrieving it
service.caches.code.Delete(codeHash)
})
if !ok {
return nil, false
}
return &entry, true
}