Support most github's sdk

This commit is contained in:
Lunny Xiao 2022-11-22 15:55:39 +08:00 committed by Jason Song
parent 2ecb59c092
commit 45afa0ee9f
2 changed files with 26 additions and 8 deletions

View File

@ -111,7 +111,8 @@ func (b *Basic) Verify(req *http.Request, w http.ResponseWriter, store DataStore
// check task token // check task token
task, err := bots_model.GetTaskByToken(db.DefaultContext, authToken) task, err := bots_model.GetTaskByToken(db.DefaultContext, authToken)
if err == nil && task != nil && task.Status.IsRunning() { if err == nil && task != nil {
if task.Status.IsRunning() {
log.Trace("Basic Authorization: Valid AccessToken for task[%d]", task.ID) log.Trace("Basic Authorization: Valid AccessToken for task[%d]", task.ID)
store.GetData()["IsBotToken"] = true store.GetData()["IsBotToken"] = true
@ -119,6 +120,8 @@ func (b *Basic) Verify(req *http.Request, w http.ResponseWriter, store DataStore
return user_model.NewBotUser() return user_model.NewBotUser()
} }
log.Warn("task %v status is %v but auth request sent: %v", task.ID, task.Status, req.RemoteAddr)
}
if !setting.Service.EnableBasicAuth { if !setting.Service.EnableBasicAuth {
return nil return nil

View File

@ -11,6 +11,7 @@ import (
"time" "time"
auth_model "code.gitea.io/gitea/models/auth" auth_model "code.gitea.io/gitea/models/auth"
bots_model "code.gitea.io/gitea/models/bots"
"code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/db"
user_model "code.gitea.io/gitea/models/user" user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
@ -92,7 +93,21 @@ func (o *OAuth2) userIDFromToken(req *http.Request, store DataStore) int64 {
} }
t, err := auth_model.GetAccessTokenBySHA(tokenSHA) t, err := auth_model.GetAccessTokenBySHA(tokenSHA)
if err != nil { if err != nil {
if !auth_model.IsErrAccessTokenNotExist(err) && !auth_model.IsErrAccessTokenEmpty(err) { if auth_model.IsErrAccessTokenNotExist(err) {
// check task token
task, err := bots_model.GetTaskByToken(db.DefaultContext, tokenSHA)
if err == nil && task != nil {
if task.Status.IsRunning() {
log.Trace("Basic Authorization: Valid AccessToken for task[%d]", task.ID)
store.GetData()["IsBotToken"] = true
store.GetData()["BotTaskID"] = task.ID
return user_model.BotUserID
}
log.Warn("task %v status is %v but auth request sent: %v", task.ID, task.Status, req.RemoteAddr)
}
} else if !auth_model.IsErrAccessTokenNotExist(err) && !auth_model.IsErrAccessTokenEmpty(err) {
log.Error("GetAccessTokenBySHA: %v", err) log.Error("GetAccessTokenBySHA: %v", err)
} }
return 0 return 0
@ -119,12 +134,12 @@ func (o *OAuth2) Verify(req *http.Request, w http.ResponseWriter, store DataStor
} }
id := o.userIDFromToken(req, store) id := o.userIDFromToken(req, store)
if id <= 0 { if id == -1 || id <= -3 { // -2 means bots, so we need to allow it.
return nil return nil
} }
log.Trace("OAuth2 Authorization: Found token for user[%d]", id) log.Trace("OAuth2 Authorization: Found token for user[%d]", id)
user, err := user_model.GetUserByID(id) user, err := user_model.GetPossbileUserByID(req.Context(), id)
if err != nil { if err != nil {
if !user_model.IsErrUserNotExist(err) { if !user_model.IsErrUserNotExist(err) {
log.Error("GetUserByName: %v", err) log.Error("GetUserByName: %v", err)