code.gitea.io/gitea@v1.21.7/routers/api/packages/container/auth.go (about)

     1  // Copyright 2022 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package container
     5  
     6  import (
     7  	"net/http"
     8  
     9  	user_model "code.gitea.io/gitea/models/user"
    10  	"code.gitea.io/gitea/modules/log"
    11  	"code.gitea.io/gitea/services/auth"
    12  	"code.gitea.io/gitea/services/packages"
    13  )
    14  
    15  var _ auth.Method = &Auth{}
    16  
    17  type Auth struct{}
    18  
    19  func (a *Auth) Name() string {
    20  	return "container"
    21  }
    22  
    23  // Verify extracts the user from the Bearer token
    24  // If it's an anonymous session a ghost user is returned
    25  func (a *Auth) Verify(req *http.Request, w http.ResponseWriter, store auth.DataStore, sess auth.SessionStore) (*user_model.User, error) {
    26  	uid, err := packages.ParseAuthorizationToken(req)
    27  	if err != nil {
    28  		log.Trace("ParseAuthorizationToken: %v", err)
    29  		return nil, err
    30  	}
    31  
    32  	if uid == 0 {
    33  		return nil, nil
    34  	}
    35  
    36  	u, err := user_model.GetPossibleUserByID(req.Context(), uid)
    37  	if err != nil {
    38  		log.Error("GetPossibleUserByID:  %v", err)
    39  		return nil, err
    40  	}
    41  
    42  	return u, nil
    43  }