Skip to content

Commit d8e92d5

Browse files
committed
[oidc] consider returnTo URL
1 parent a587920 commit d8e92d5

File tree

3 files changed

+9
-6
lines changed

3 files changed

+9
-6
lines changed

components/public-api-server/pkg/oidc/router.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,13 @@ func (s *Service) getStartHandler() http.HandlerFunc {
4242
return
4343
}
4444

45+
returnToURL := r.URL.Query().Get("returnTo")
46+
if returnToURL == "" {
47+
returnToURL = "/"
48+
}
49+
4550
redirectURL := getCallbackURL(r.Host)
46-
startParams, err := s.GetStartParams(config, redirectURL)
51+
startParams, err := s.GetStartParams(config, redirectURL, returnToURL)
4752
if err != nil {
4853
http.Error(rw, "failed to start auth flow", http.StatusInternalServerError)
4954
return

components/public-api-server/pkg/oidc/service.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,14 +69,12 @@ func NewService(sessionServiceAddress string, dbConn *gorm.DB, cipher db.Cipher,
6969
}
7070
}
7171

72-
func (s *Service) GetStartParams(config *ClientConfig, redirectURL string) (*StartParams, error) {
72+
func (s *Service) GetStartParams(config *ClientConfig, redirectURL string, returnToURL string) (*StartParams, error) {
7373
// state is supposed to a) be present on client request as cookie header
7474
// and b) to be mirrored by the IdP on callback requests.
7575
stateParam := StateParam{
7676
ClientConfigID: config.ID,
77-
78-
// TODO(at) read a relative URL from `returnTo` query param of the start request
79-
ReturnToURL: "/",
77+
ReturnToURL: returnToURL,
8078
}
8179
state, err := s.encodeStateParam(stateParam)
8280
if err != nil {

components/public-api-server/pkg/oidc/service_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func TestGetStartParams(t *testing.T) {
4343
},
4444
}
4545

46-
params, err := service.GetStartParams(config, redirectURL)
46+
params, err := service.GetStartParams(config, redirectURL, "/")
4747

4848
require.NoError(t, err)
4949
require.NotNil(t, params.Nonce)

0 commit comments

Comments
 (0)