@@ -124,6 +124,27 @@ func handleCliResponseExtra(extra private.ResponseExtra) error {
124124 return nil
125125}
126126
127+ func getLFSAuthToken (ctx context.Context , lfsVerb string , results * private.ServCommandResults ) (string , error ) {
128+ now := time .Now ()
129+ claims := lfs.Claims {
130+ RegisteredClaims : jwt.RegisteredClaims {
131+ ExpiresAt : jwt .NewNumericDate (now .Add (setting .LFS .HTTPAuthExpiry )),
132+ NotBefore : jwt .NewNumericDate (now ),
133+ },
134+ RepoID : results .RepoID ,
135+ Op : lfsVerb ,
136+ UserID : results .UserID ,
137+ }
138+ token := jwt .NewWithClaims (jwt .SigningMethodHS256 , claims )
139+
140+ // Sign and get the complete encoded token as a string using the secret
141+ tokenString , err := token .SignedString (setting .LFS .JWTSecretBytes )
142+ if err != nil {
143+ return "" , fail (ctx , "Failed to sign JWT Token" , "Failed to sign JWT token: %v" , err )
144+ }
145+ return fmt .Sprintf ("Bearer %s" , tokenString ), nil
146+ }
147+
127148func runServ (c * cli.Context ) error {
128149 ctx , cancel := installSignals ()
129150 defer cancel ()
@@ -264,29 +285,16 @@ func runServ(c *cli.Context) error {
264285 if verb == lfsAuthenticateVerb {
265286 url := fmt .Sprintf ("%s%s/%s.git/info/lfs" , setting .AppURL , url .PathEscape (results .OwnerName ), url .PathEscape (results .RepoName ))
266287
267- now := time .Now ()
268- claims := lfs.Claims {
269- RegisteredClaims : jwt.RegisteredClaims {
270- ExpiresAt : jwt .NewNumericDate (now .Add (setting .LFS .HTTPAuthExpiry )),
271- NotBefore : jwt .NewNumericDate (now ),
272- },
273- RepoID : results .RepoID ,
274- Op : lfsVerb ,
275- UserID : results .UserID ,
276- }
277- token := jwt .NewWithClaims (jwt .SigningMethodHS256 , claims )
278-
279- // Sign and get the complete encoded token as a string using the secret
280- tokenString , err := token .SignedString (setting .LFS .JWTSecretBytes )
288+ token , err := getLFSAuthToken (ctx , lfsVerb , results )
281289 if err != nil {
282- return fail ( ctx , "Failed to sign JWT Token" , "Failed to sign JWT token: %v" , err )
290+ return err
283291 }
284292
285293 tokenAuthentication := & git_model.LFSTokenResponse {
286294 Header : make (map [string ]string ),
287295 Href : url ,
288296 }
289- tokenAuthentication .Header ["Authorization" ] = fmt . Sprintf ( "Bearer %s" , tokenString )
297+ tokenAuthentication .Header ["Authorization" ] = token
290298
291299 enc := json .NewEncoder (os .Stdout )
292300 err = enc .Encode (tokenAuthentication )
0 commit comments