forked from NYANDEV/forgejo
OAuth2 token can be used in basic auth (#6747)
This commit is contained in:
parent
199faadea3
commit
ec2d489d15
2 changed files with 28 additions and 2 deletions
|
@ -1,4 +1,5 @@
|
|||
// Copyright 2014 The Gogs Authors. All rights reserved.
|
||||
// Copyright 2019 The Gitea Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
|
@ -54,7 +55,7 @@ func SignedInID(ctx *macaron.Context, sess session.Store) int64 {
|
|||
// Let's see if token is valid.
|
||||
if len(tokenSHA) > 0 {
|
||||
if strings.Contains(tokenSHA, ".") {
|
||||
uid := checkOAuthAccessToken(tokenSHA)
|
||||
uid := CheckOAuthAccessToken(tokenSHA)
|
||||
if uid != 0 {
|
||||
ctx.Data["IsApiToken"] = true
|
||||
}
|
||||
|
@ -85,7 +86,8 @@ func SignedInID(ctx *macaron.Context, sess session.Store) int64 {
|
|||
return 0
|
||||
}
|
||||
|
||||
func checkOAuthAccessToken(accessToken string) int64 {
|
||||
// CheckOAuthAccessToken returns uid of user from oauth token token
|
||||
func CheckOAuthAccessToken(accessToken string) int64 {
|
||||
// JWT tokens require a "."
|
||||
if !strings.Contains(accessToken, ".") {
|
||||
return 0
|
||||
|
@ -178,6 +180,18 @@ func SignedInUser(ctx *macaron.Context, sess session.Store) (*models.User, bool)
|
|||
// Assume password is token
|
||||
authToken = passwd
|
||||
}
|
||||
|
||||
uid := CheckOAuthAccessToken(authToken)
|
||||
if uid != 0 {
|
||||
var err error
|
||||
ctx.Data["IsApiToken"] = true
|
||||
|
||||
u, err = models.GetUserByID(uid)
|
||||
if err != nil {
|
||||
log.Error("GetUserByID: %v", err)
|
||||
return nil, false
|
||||
}
|
||||
}
|
||||
token, err := models.GetAccessTokenBySHA(authToken)
|
||||
if err == nil {
|
||||
if isUsernameToken {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// Copyright 2014 The Gogs Authors. All rights reserved.
|
||||
// Copyright 2019 The Gitea Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
|
@ -18,6 +19,7 @@ import (
|
|||
"time"
|
||||
|
||||
"code.gitea.io/gitea/models"
|
||||
"code.gitea.io/gitea/modules/auth"
|
||||
"code.gitea.io/gitea/modules/base"
|
||||
"code.gitea.io/gitea/modules/context"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
|
@ -166,6 +168,16 @@ func HTTP(ctx *context.Context) {
|
|||
// Assume password is token
|
||||
authToken = authPasswd
|
||||
}
|
||||
uid := auth.CheckOAuthAccessToken(authToken)
|
||||
if uid != 0 {
|
||||
ctx.Data["IsApiToken"] = true
|
||||
|
||||
authUser, err = models.GetUserByID(uid)
|
||||
if err != nil {
|
||||
ctx.ServerError("GetUserByID", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
// Assume password is a token.
|
||||
token, err := models.GetAccessTokenBySHA(authToken)
|
||||
if err == nil {
|
||||
|
|
Loading…
Reference in a new issue