diff --git a/openapi/user/login.go b/openapi/user/login.go index f1427ab1..b458a28b 100644 --- a/openapi/user/login.go +++ b/openapi/user/login.go @@ -78,31 +78,6 @@ func getCaptcha(c *gin.Context) { }) } -// refreshCaptcha is the handler for refresh captcha image -func refreshCaptcha(c *gin.Context) { - var option helper.CaptchaOption = helper.NewCaptchaOption() - - err := c.ShouldBindQuery(&option) - if err != nil { - response.RespondWithError(c, http.StatusBadRequest, &response.ErrorResponse{ - Code: response.ErrInvalidRequest.Code, - ErrorDescription: err.Error(), - }) - return - } - - // Set the type to image - option.Type = "image" - id, content := helper.CaptchaMake(option) - - // Return in the format expected by the frontend - response.RespondWithSuccess(c, http.StatusOK, gin.H{ - "captcha_id": id, - "captcha_image": content, - "expires_in": 300, // 5 minutes - }) -} - // LoginThirdParty is the handler for third party login func LoginThirdParty(providerID string, userinfo *oauthtypes.OIDCUserInfo, ip string) (*LoginResponse, error) { diff --git a/openapi/user/oauth.go b/openapi/user/oauth.go index 19a47ccc..3ccaa825 100644 --- a/openapi/user/oauth.go +++ b/openapi/user/oauth.go @@ -188,7 +188,14 @@ func authback(c *gin.Context) { SendLoginCookies(c, loginResponse, sid) // Send IDToken to the client - response.RespondWithSuccess(c, response.StatusOK, map[string]interface{}{"id_token": loginResponse.IDToken}) + response.RespondWithSuccess(c, response.StatusOK, LoginSuccessResponse{ + SessionID: sid, + IDToken: loginResponse.IDToken, + AccessToken: loginResponse.AccessToken, + RefreshToken: loginResponse.RefreshToken, + ExpiresIn: loginResponse.ExpiresIn, + RefreshTokenExpiresIn: loginResponse.RefreshTokenExpiresIn, + }) } // getOAuthAuthorizationURL generates OAuth authorization URL for a provider diff --git a/openapi/user/types.go b/openapi/user/types.go index 029efd4b..c9b99dab 100644 --- a/openapi/user/types.go +++ b/openapi/user/types.go @@ -172,6 +172,16 @@ type LoginResponse struct { Scope string `json:"scope,omitempty"` } +// LoginSuccessResponse represents the response for login success +type LoginSuccessResponse struct { + IDToken string `json:"id_token,omitempty"` + AccessToken string `json:"access_token,omitempty"` + SessionID string `json:"session_id,omitempty"` + RefreshToken string `json:"refresh_token,omitempty"` + ExpiresIn int `json:"expires_in,omitempty"` + RefreshTokenExpiresIn int `json:"refresh_token_expires_in,omitempty"` +} + // Built-in preset mapping types const ( MappingGoogle = "google"