diff --git a/ui/api/transport.go b/ui/api/transport.go index 3d44ab812..f1b959375 100644 --- a/ui/api/transport.go +++ b/ui/api/transport.go @@ -159,8 +159,7 @@ func MakeHandler(svc ui.Service, r *chi.Mux, instanceID, prefix string, secureCo for _, provider := range providers { if provider.IsEnabled() { - r.HandleFunc("/signup/"+provider.Name(), oauth2Handler(oauth2.SignUp, provider)) - r.HandleFunc("/signin/"+provider.Name(), oauth2Handler(oauth2.SignIn, provider)) + r.HandleFunc("/signin/"+provider.Name(), oauth2Handler(provider)) } } @@ -1122,19 +1121,9 @@ func decodeLogoutRequest(_ context.Context, _ *http.Request) (interface{}, error return nil, nil } -func oauth2Handler(state oauth2.State, provider oauth2.Provider) http.HandlerFunc { +func oauth2Handler(provider oauth2.Provider) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - var url string - var err error - switch state { - case oauth2.SignIn: - url, err = provider.GenerateSignInURL() - case oauth2.SignUp: - url, err = provider.GenerateSignUpURL() - default: - err = fmt.Errorf("invalid state") - } - + url, err := provider.GenerateURL() if err != nil { http.Redirect(w, r, "/login", http.StatusTemporaryRedirect) return diff --git a/ui/mocks/repository.go b/ui/mocks/repository.go index 6067992da..3b7ca7258 100644 --- a/ui/mocks/repository.go +++ b/ui/mocks/repository.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.42.0. DO NOT EDIT. +// Code generated by mockery v2.38.0. DO NOT EDIT. // Copyright (c) Abstract Machines diff --git a/ui/oauth2/google/provider.go b/ui/oauth2/google/provider.go index e4cdae811..627cae24a 100644 --- a/ui/oauth2/google/provider.go +++ b/ui/oauth2/google/provider.go @@ -50,15 +50,7 @@ func (cfg *config) IsEnabled() bool { return cfg.oauth2.ClientID != "" && cfg.oauth2.ClientSecret != "" } -func (cfg *config) GenerateSignInURL() (string, error) { - return cfg.generateURL(mgoauth2.SignIn.String()) -} - -func (cfg *config) GenerateSignUpURL() (string, error) { - return cfg.generateURL(mgoauth2.SignUp.String()) -} - -func (cfg *config) generateURL(state string) (string, error) { +func (cfg *config) GenerateURL() (string, error) { URL, err := url.Parse(cfg.oauth2.Endpoint.AuthURL) if err != nil { return "", fmt.Errorf("failed to parse google auth url: %s", err) @@ -72,8 +64,7 @@ func (cfg *config) generateURL(state string) (string, error) { parameters.Add("access_type", "offline") // prompt=consent is required to get the refresh token parameters.Add("prompt", "consent") - // login or register state is prepended to the state to be used in the callback - parameters.Add("state", fmt.Sprintf("%s-%s", state, cfg.state)) + parameters.Add("state", cfg.state) URL.RawQuery = parameters.Encode() return URL.String(), nil diff --git a/ui/oauth2/mocks/provider.go b/ui/oauth2/mocks/provider.go index a69dd5080..ca3f2738c 100644 --- a/ui/oauth2/mocks/provider.go +++ b/ui/oauth2/mocks/provider.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.42.0. DO NOT EDIT. +// Code generated by mockery v2.38.0. DO NOT EDIT. // Copyright (c) Abstract Machines @@ -11,40 +11,12 @@ type Provider struct { mock.Mock } -// GenerateSignInURL provides a mock function with given fields: -func (_m *Provider) GenerateSignInURL() (string, error) { +// GenerateURL provides a mock function with given fields: +func (_m *Provider) GenerateURL() (string, error) { ret := _m.Called() if len(ret) == 0 { - panic("no return value specified for GenerateSignInURL") - } - - var r0 string - var r1 error - if rf, ok := ret.Get(0).(func() (string, error)); ok { - return rf() - } - if rf, ok := ret.Get(0).(func() string); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(string) - } - - if rf, ok := ret.Get(1).(func() error); ok { - r1 = rf() - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GenerateSignUpURL provides a mock function with given fields: -func (_m *Provider) GenerateSignUpURL() (string, error) { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for GenerateSignUpURL") + panic("no return value specified for GenerateURL") } var r0 string diff --git a/ui/oauth2/oauth2.go b/ui/oauth2/oauth2.go index f2172234e..cd631973c 100644 --- a/ui/oauth2/oauth2.go +++ b/ui/oauth2/oauth2.go @@ -25,30 +25,6 @@ type Provider interface { // IsEnabled returns whether the provider is enabled. IsEnabled() bool - // GenerateSignInURL generates a URL for the sign-in flow. - GenerateSignInURL() (string, error) - - // GenerateSignUpURL generates a URL for the sign-up flow. - GenerateSignUpURL() (string, error) -} - -// State is the state of the OAuth2 flow. -type State uint8 - -const ( - // SignIn is the state for the sign-in flow. - SignIn State = iota - // SignUp is the state for the sign-up flow. - SignUp -) - -func (s State) String() string { - switch s { - case SignIn: - return "signin" - case SignUp: - return "signup" - default: - return "unknown" - } + // GenerateURL generates a URL for the sign-in flow and sign-up flow. + GenerateURL() (string, error) } diff --git a/ui/web/templates/registration.html b/ui/web/templates/registration.html index 5f184f078..28ccad5e0 100644 --- a/ui/web/templates/registration.html +++ b/ui/web/templates/registration.html @@ -81,7 +81,7 @@

Register

or sign up with: