aboutsummaryrefslogtreecommitdiff
path: root/server/auth/provider.go
diff options
context:
space:
mode:
Diffstat (limited to 'server/auth/provider.go')
-rw-r--r--server/auth/provider.go18
1 files changed, 16 insertions, 2 deletions
diff --git a/server/auth/provider.go b/server/auth/provider.go
index 06dc1c9..d4a8e58 100644
--- a/server/auth/provider.go
+++ b/server/auth/provider.go
@@ -1,11 +1,16 @@
package auth
-import "golang.org/x/oauth2"
+import (
+ "fmt"
+ "net/http"
+
+ "golang.org/x/oauth2"
+)
// Provider is an abstraction of different auth methods.
type Provider interface {
Name() string
- StartSession(string) *Session
+ StartSession(string, *http.Request) *Session
Exchange(string) (*oauth2.Token, error)
Username(*oauth2.Token) string
Valid(*oauth2.Token) bool
@@ -28,3 +33,12 @@ func (s *Session) Authorize(provider Provider, code string) error {
s.Token = t
return nil
}
+
+// Oauth2RedirectURL returns an OAuth redirect_uri for this request.
+func Oauth2RedirectURL(r *http.Request) string {
+ protocol := "http"
+ if r.TLS != nil {
+ protocol = "https"
+ }
+ return fmt.Sprintf("%s://%s/auth/callback", protocol, r.Host)
+}