Add Captcha handlers to OpenAPI routing

- Integrated Captcha functionality by adding a new route for captcha handlers within the OpenAPI structure.
- Updated the Attach method to include the Captcha endpoint, ensuring OAuth protection for the new route.
- Enhanced overall routing organization by grouping captcha-related handlers under a dedicated path.
This commit is contained in:
Max 2025-07-31 10:35:02 +08:00
parent 409151037a
commit e0b12d7bb7
2 changed files with 61 additions and 0 deletions

View file

@ -0,0 +1,57 @@
package captcha
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/yaoapp/yao/helper"
"github.com/yaoapp/yao/openapi/oauth/types"
"github.com/yaoapp/yao/openapi/response"
)
// Attach attaches the hello world handlers to the router
func Attach(group *gin.RouterGroup, oauth types.OAuth) {
// Health check
group.GET("/image", image)
// OAuth Protected Resource
group.GET("/audio", audio)
}
// image captcha
func image(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)
response.RespondWithSuccess(c, http.StatusOK, gin.H{"id": id, "data": content})
}
// audio captcha
func audio(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(),
})
}
// Set the type to audio
option.Type = "audio"
id, content := helper.CaptchaMake(option)
response.RespondWithSuccess(c, http.StatusOK, gin.H{"id": id, "data": content})
}

View file

@ -6,6 +6,7 @@ import (
"github.com/gin-gonic/gin"
"github.com/yaoapp/gou/application"
"github.com/yaoapp/yao/config"
"github.com/yaoapp/yao/openapi/captcha"
"github.com/yaoapp/yao/openapi/chat"
"github.com/yaoapp/yao/openapi/dsl"
"github.com/yaoapp/yao/openapi/file"
@ -100,5 +101,8 @@ func (openapi *OpenAPI) Attach(router *gin.Engine) {
// Signin handlers
signin.Attach(group, openapi.OAuth)
// Captcha handlers
captcha.Attach(group.Group("/captcha"), openapi.OAuth)
// Custom handlers (Defined by developer)
}