mirror of
https://github.com/coder/coder.git
synced 2025-07-15 22:20:27 +00:00
feat: pass access_token
to coder_git_auth
resource (#6713)
This allows template authors to leverage git auth to perform custom actions, like clone repositories.
This commit is contained in:
51
testutil/oauth2.go
Normal file
51
testutil/oauth2.go
Normal file
@ -0,0 +1,51 @@
|
||||
package testutil
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/url"
|
||||
"time"
|
||||
|
||||
"golang.org/x/oauth2"
|
||||
)
|
||||
|
||||
type OAuth2Config struct {
|
||||
Token *oauth2.Token
|
||||
TokenSourceFunc OAuth2TokenSource
|
||||
}
|
||||
|
||||
func (*OAuth2Config) AuthCodeURL(state string, _ ...oauth2.AuthCodeOption) string {
|
||||
return "/?state=" + url.QueryEscape(state)
|
||||
}
|
||||
|
||||
func (c *OAuth2Config) Exchange(_ context.Context, _ string, _ ...oauth2.AuthCodeOption) (*oauth2.Token, error) {
|
||||
if c.Token == nil {
|
||||
return &oauth2.Token{
|
||||
AccessToken: "access_token",
|
||||
RefreshToken: "refresh_token",
|
||||
Expiry: time.Now().Add(time.Hour),
|
||||
}, nil
|
||||
}
|
||||
return c.Token, nil
|
||||
}
|
||||
|
||||
func (c *OAuth2Config) TokenSource(_ context.Context, _ *oauth2.Token) oauth2.TokenSource {
|
||||
if c.TokenSourceFunc == nil {
|
||||
return OAuth2TokenSource(func() (*oauth2.Token, error) {
|
||||
if c.Token == nil {
|
||||
return &oauth2.Token{
|
||||
AccessToken: "access_token",
|
||||
RefreshToken: "refresh_token",
|
||||
Expiry: time.Now().Add(time.Hour),
|
||||
}, nil
|
||||
}
|
||||
return c.Token, nil
|
||||
})
|
||||
}
|
||||
return c.TokenSourceFunc
|
||||
}
|
||||
|
||||
type OAuth2TokenSource func() (*oauth2.Token, error)
|
||||
|
||||
func (o OAuth2TokenSource) Token() (*oauth2.Token, error) {
|
||||
return o()
|
||||
}
|
Reference in New Issue
Block a user