code.gitea.io/gitea@v1.21.7/routers/api/packages/nuget/auth.go (about) 1 // Copyright 2022 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package nuget 5 6 import ( 7 "net/http" 8 9 auth_model "code.gitea.io/gitea/models/auth" 10 user_model "code.gitea.io/gitea/models/user" 11 "code.gitea.io/gitea/modules/log" 12 "code.gitea.io/gitea/modules/timeutil" 13 "code.gitea.io/gitea/services/auth" 14 ) 15 16 var _ auth.Method = &Auth{} 17 18 type Auth struct{} 19 20 func (a *Auth) Name() string { 21 return "nuget" 22 } 23 24 // https://docs.microsoft.com/en-us/nuget/api/package-publish-resource#request-parameters 25 func (a *Auth) Verify(req *http.Request, w http.ResponseWriter, store auth.DataStore, sess auth.SessionStore) (*user_model.User, error) { 26 token, err := auth_model.GetAccessTokenBySHA(req.Context(), req.Header.Get("X-NuGet-ApiKey")) 27 if err != nil { 28 if !(auth_model.IsErrAccessTokenNotExist(err) || auth_model.IsErrAccessTokenEmpty(err)) { 29 log.Error("GetAccessTokenBySHA: %v", err) 30 return nil, err 31 } 32 return nil, nil 33 } 34 35 u, err := user_model.GetUserByID(req.Context(), token.UID) 36 if err != nil { 37 log.Error("GetUserByID: %v", err) 38 return nil, err 39 } 40 41 token.UpdatedUnix = timeutil.TimeStampNow() 42 if err := auth_model.UpdateAccessToken(req.Context(), token); err != nil { 43 log.Error("UpdateAccessToken: %v", err) 44 } 45 46 return u, nil 47 }