gitea源码

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