From 0924417a810f0461b2dab208e605b5934f25b40c Mon Sep 17 00:00:00 2001 From: Ruidy Date: Sun, 19 May 2024 21:04:44 +0200 Subject: [PATCH] add google login --- internal/auth/service.go | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 internal/auth/service.go diff --git a/internal/auth/service.go b/internal/auth/service.go new file mode 100644 index 0000000..b0e66bd --- /dev/null +++ b/internal/auth/service.go @@ -0,0 +1,48 @@ +package auth + +import ( + "sort" + + "github.com/gorilla/sessions" + "github.com/markbates/goth" + "github.com/markbates/goth/gothic" + "github.com/markbates/goth/providers/google" +) + +type Service struct { + secret string + googleClientId string + googleSecret string + googleRedirectUrl string +} + +type ProviderIndex struct { + ProvidersMap map[string]string + Providers []string +} + +func NewService(secret, googleClientId, googleSecret, googleRedirectUrl string) *Service { + return &Service{ + secret, + googleClientId, + googleSecret, + googleRedirectUrl, + } +} + +func (as Service) GetProviderIndex() *ProviderIndex { + goth.UseProviders(google.New(as.googleClientId, as.googleSecret, as.googleRedirectUrl)) + + m := map[string]string{ + "google": "Google", + } + var keys []string + for k := range m { + keys = append(keys, k) + } + sort.Strings(keys) + + gothic.Store = sessions.NewCookieStore([]byte(as.secret)) + + return &ProviderIndex{Providers: keys, ProvidersMap: m} +}