summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/app/handler/auth/init.go')
-rw-r--r--pkg/app/handler/auth/init.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/pkg/app/handler/auth/init.go b/pkg/app/handler/auth/init.go
new file mode 100644
index 0000000..e97e997
--- /dev/null
+++ b/pkg/app/handler/auth/init.go
@@ -0,0 +1,47 @@
+package auth
+
+import (
+ "context"
+ "encoding/gob"
+ "github.com/coreos/go-oidc"
+ "github.com/gorilla/sessions"
+ "go-gentoo/pkg/config"
+ "go-gentoo/pkg/models"
+ "golang.org/x/oauth2"
+)
+
+var (
+ Oauth2Config oauth2.Config
+ Verifier *oidc.IDTokenVerifier
+ Ctx context.Context
+ CookieStore *sessions.CookieStore
+)
+
+func Init() {
+ gob.Register(&models.User{})
+
+ Ctx = context.Background()
+ provider, err := oidc.NewProvider(Ctx, config.OIDConfigURL())
+ if err != nil {
+ panic(err)
+ }
+
+ CookieStore = sessions.NewCookieStore([]byte(config.SessionSecret()))
+
+ // Configure an OpenID Connect aware OAuth2 client.
+ Oauth2Config = oauth2.Config{
+ ClientID: config.OIDClientID(),
+ ClientSecret: config.OIDClientSecret(),
+ RedirectURL: config.ApplicationURL() + "/auth/callback",
+ // Discovery returns the OAuth2 endpoints.
+ Endpoint: provider.Endpoint(),
+ // "openid" is a required scope for OpenID Connect flows.
+ Scopes: []string{oidc.ScopeOpenID, "profile", "email"},
+ }
+
+ oidcConfig := &oidc.Config{
+ ClientID: config.OIDClientID(),
+ }
+ Verifier = provider.Verifier(oidcConfig)
+
+}