gitea源码

auth.go 1.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package conan
  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 "conan"
  15. }
  16. // Verify extracts the user from the Bearer token
  17. func (a *Auth) Verify(req *http.Request, w http.ResponseWriter, store auth.DataStore, sess auth.SessionStore) (*user_model.User, error) {
  18. packageMeta, err := packages.ParseAuthorizationRequest(req)
  19. if err != nil {
  20. log.Trace("ParseAuthorizationToken: %v", err)
  21. return nil, err
  22. }
  23. if packageMeta == nil || packageMeta.UserID == 0 {
  24. return nil, nil
  25. }
  26. u, err := user_model.GetUserByID(req.Context(), packageMeta.UserID)
  27. if err != nil {
  28. return nil, err
  29. }
  30. if packageMeta.Scope != "" {
  31. store.GetData()["IsApiToken"] = true
  32. store.GetData()["ApiTokenScope"] = packageMeta.Scope
  33. }
  34. return u, nil
  35. }