diff options
Diffstat (limited to 'server/auth/provider.go')
-rw-r--r-- | server/auth/provider.go | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/server/auth/provider.go b/server/auth/provider.go new file mode 100644 index 0000000..ae512bd --- /dev/null +++ b/server/auth/provider.go @@ -0,0 +1,27 @@ +package auth + +import "golang.org/x/oauth2" + +type Provider interface { + Name() string + StartSession(string) *Session + Exchange(string) (*oauth2.Token, error) + Username(*oauth2.Token) string + Valid(*oauth2.Token) bool + Revoke(*oauth2.Token) error +} + +type Session struct { + AuthURL string + Token *oauth2.Token + State string +} + +func (s *Session) Authorize(provider Provider, code string) error { + t, err := provider.Exchange(code) + if err != nil { + return err + } + s.Token = t + return nil +} |