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 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
|
// Use of this source code is governed by a MIT-style
|
||||||
// license that can be found in the LICENSE file.
|
// 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.
|
// Let's see if token is valid.
|
||||||
if len(tokenSHA) > 0 {
|
if len(tokenSHA) > 0 {
|
||||||
if strings.Contains(tokenSHA, ".") {
|
if strings.Contains(tokenSHA, ".") {
|
||||||
uid := checkOAuthAccessToken(tokenSHA)
|
uid := CheckOAuthAccessToken(tokenSHA)
|
||||||
if uid != 0 {
|
if uid != 0 {
|
||||||
ctx.Data["IsApiToken"] = true
|
ctx.Data["IsApiToken"] = true
|
||||||
}
|
}
|
||||||
|
@ -85,7 +86,8 @@ func SignedInID(ctx *macaron.Context, sess session.Store) int64 {
|
||||||
return 0
|
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 "."
|
// JWT tokens require a "."
|
||||||
if !strings.Contains(accessToken, ".") {
|
if !strings.Contains(accessToken, ".") {
|
||||||
return 0
|
return 0
|
||||||
|
@ -178,6 +180,18 @@ func SignedInUser(ctx *macaron.Context, sess session.Store) (*models.User, bool)
|
||||||
// Assume password is token
|
// Assume password is token
|
||||||
authToken = passwd
|
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)
|
token, err := models.GetAccessTokenBySHA(authToken)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
if isUsernameToken {
|
if isUsernameToken {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
// Copyright 2014 The Gogs Authors. All rights reserved.
|
// 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
|
// Use of this source code is governed by a MIT-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
@ -18,6 +19,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
|
"code.gitea.io/gitea/modules/auth"
|
||||||
"code.gitea.io/gitea/modules/base"
|
"code.gitea.io/gitea/modules/base"
|
||||||
"code.gitea.io/gitea/modules/context"
|
"code.gitea.io/gitea/modules/context"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
|
@ -166,6 +168,16 @@ func HTTP(ctx *context.Context) {
|
||||||
// Assume password is token
|
// Assume password is token
|
||||||
authToken = authPasswd
|
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.
|
// Assume password is a token.
|
||||||
token, err := models.GetAccessTokenBySHA(authToken)
|
token, err := models.GetAccessTokenBySHA(authToken)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
|
Loading…
Reference in a new issue