diff --git a/backend/api/auth.go b/backend/api/auth.go
index abf658e..2c330cb 100644
--- a/backend/api/auth.go
+++ b/backend/api/auth.go
@@ -162,22 +162,23 @@ func (s *Server) Callback(c echo.Context, params autogen.CallbackParams) error {
}
stateCache.Delete(params.State)
+ conf := config.GetConfig()
+
account, err := s.DBackend.GetAccount(c.Request().Context(), accountID.(string))
if err != nil {
if err != mongo.ErrNoDocuments {
logrus.Error(err)
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
// Check if account is onBoard
acc, found := onBoardCache.Get(accountID.(string))
if !found {
- return ErrorAccNotFound(c)
+ logrus.Error(err)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
account = acc.(*models.Account)
}
- conf := config.GetConfig()
-
// Get token from Google
oauth2Config := oauth2.Config{
ClientID: conf.OauthConfig.GoogleClientID,
@@ -193,7 +194,7 @@ func (s *Server) Callback(c echo.Context, params autogen.CallbackParams) error {
token, err := oauth2Config.Exchange(c.Request().Context(), params.Code)
if err != nil {
logrus.Error(err)
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
// Get user from Google
@@ -201,7 +202,7 @@ func (s *Server) Callback(c echo.Context, params autogen.CallbackParams) error {
resp, err := client.Get("https://www.googleapis.com/oauth2/v2/userinfo")
if err != nil {
logrus.Error(err)
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
defer resp.Body.Close()
@@ -209,25 +210,25 @@ func (s *Server) Callback(c echo.Context, params autogen.CallbackParams) error {
err = json.NewDecoder(resp.Body).Decode(usr)
if err != nil {
logrus.Error(err)
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
adminService, err := admin.NewService(c.Request().Context(), option.WithTokenSource(oauth2Config.TokenSource(c.Request().Context(), token)))
if err != nil {
logrus.Error(err)
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
t, err := adminService.Users.Get(usr.ID).Projection("custom").CustomFieldMask("Education").ViewType("domain_public").Do()
if err != nil {
logrus.Error(err)
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
edc := &education{}
err = json.Unmarshal(t.CustomSchemas["Education"], edc)
if err != nil {
logrus.Error(err)
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
account.FirstName = usr.FirstName
@@ -242,7 +243,7 @@ func (s *Server) Callback(c echo.Context, params autogen.CallbackParams) error {
err = s.DBackend.CreateAccount(c.Request().Context(), account)
if err != nil {
logrus.Error(err)
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
// Delete ONBOARD cookie
@@ -251,7 +252,7 @@ func (s *Server) Callback(c echo.Context, params autogen.CallbackParams) error {
err = s.DBackend.UpdateAccount(c.Request().Context(), account)
if err != nil {
logrus.Error(err)
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
}
@@ -259,7 +260,7 @@ func (s *Server) Callback(c echo.Context, params autogen.CallbackParams) error {
r, found := redirectCache.Get(params.State)
if !found {
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
redirectCache.Delete(params.State)
@@ -286,7 +287,7 @@ func (s *Server) CallbackInpromptu(c echo.Context, params autogen.CallbackParams
token, err := oauth2Config.Exchange(c.Request().Context(), params.Code)
if err != nil {
logrus.Error(err)
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
// Get user from Google
@@ -294,7 +295,7 @@ func (s *Server) CallbackInpromptu(c echo.Context, params autogen.CallbackParams
resp, err := client.Get("https://www.googleapis.com/oauth2/v2/userinfo")
if err != nil {
logrus.Error(err)
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
defer resp.Body.Close()
@@ -302,7 +303,7 @@ func (s *Server) CallbackInpromptu(c echo.Context, params autogen.CallbackParams
err = json.NewDecoder(resp.Body).Decode(usr)
if err != nil {
logrus.Error(err)
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
account, err := s.DBackend.GetAccountByGoogle(c.Request().Context(), usr.ID)
@@ -311,25 +312,25 @@ func (s *Server) CallbackInpromptu(c echo.Context, params autogen.CallbackParams
return ErrorAccNotFound(c)
}
logrus.Error(err)
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
adminService, err := admin.NewService(c.Request().Context(), option.WithTokenSource(oauth2Config.TokenSource(c.Request().Context(), token)))
if err != nil {
logrus.Error(err)
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
t, err := adminService.Users.Get(usr.ID).Projection("custom").CustomFieldMask("Education").ViewType("domain_public").Do()
if err != nil {
logrus.Error(err)
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
edc := &education{}
err = json.Unmarshal(t.CustomSchemas["Education"], edc)
if err != nil {
logrus.Error(err)
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
account.FirstName = usr.FirstName
@@ -341,13 +342,12 @@ func (s *Server) CallbackInpromptu(c echo.Context, params autogen.CallbackParams
err = s.DBackend.UpdateAccount(c.Request().Context(), account)
if err != nil {
logrus.Error(err)
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne")
}
r, found := redirectCache.Get(params.State)
if !found {
- logrus.Error("no redirect found")
- return Error500(c)
+ return c.Redirect(http.StatusPermanentRedirect, conf.ApiConfig.FrontendBasePath+"/borne/connected")
}
redirectCache.Delete(params.State)
@@ -410,13 +410,13 @@ func (s *Server) ConnectGoogle(c echo.Context, p autogen.ConnectGoogleParams) er
conf := config.GetConfig()
// Get ?r=
- redirect := p.R
+ rel := p.R
// Check if it's a safe redirect (TODO: check if this is correct)
- if strings.HasPrefix(redirect, conf.ApiConfig.FrontendBasePath) {
- redirectCache.Set(redirect, true, cache.DefaultExpiration)
+ switch rel {
+ case "admin":
+ rel = conf.ApiConfig.FrontendBasePath + "/admin"
}
-
// Init OAuth2 flow with Google
oauth2Config := oauth2.Config{
ClientID: conf.OauthConfig.GoogleClientID,
@@ -432,7 +432,7 @@ func (s *Server) ConnectGoogle(c echo.Context, p autogen.ConnectGoogleParams) er
// state is not nonce
state := uuid.NewString()
- redirectCache.Set(state, redirect, cache.DefaultExpiration)
+ redirectCache.Set(state, rel, cache.DefaultExpiration)
hostDomainOption := oauth2.SetAuthURLParam("hd", "telecomnancy.net")
// Redirect to Google
diff --git a/frontend/src/routes/auth/+page.svelte b/frontend/src/routes/auth/+page.svelte
index c345820..d9ed1b4 100644
--- a/frontend/src/routes/auth/+page.svelte
+++ b/frontend/src/routes/auth/+page.svelte
@@ -1,14 +1,5 @@