| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| package router |
| |
| import ( |
| "github.com/apache/answer/internal/controller" |
| "github.com/gin-gonic/gin" |
| ) |
| |
| type PluginAPIRouter struct { |
| connectorController *controller.ConnectorController |
| userCenterController *controller.UserCenterController |
| captchaController *controller.CaptchaController |
| embedController *controller.EmbedController |
| renderController *controller.RenderController |
| sidebarController *controller.SidebarController |
| } |
| |
| func NewPluginAPIRouter( |
| connectorController *controller.ConnectorController, |
| userCenterController *controller.UserCenterController, |
| captchaController *controller.CaptchaController, |
| embedController *controller.EmbedController, |
| renderController *controller.RenderController, |
| sidebarController *controller.SidebarController, |
| ) *PluginAPIRouter { |
| return &PluginAPIRouter{ |
| connectorController: connectorController, |
| userCenterController: userCenterController, |
| captchaController: captchaController, |
| embedController: embedController, |
| renderController: renderController, |
| sidebarController: sidebarController, |
| } |
| } |
| |
| func (pr *PluginAPIRouter) RegisterUnAuthConnectorRouter(r *gin.RouterGroup) { |
| // connector plugin |
| connectorController := pr.connectorController |
| r.GET(controller.ConnectorLoginRouterPrefix+":name", connectorController.ConnectorLoginDispatcher) |
| r.GET(controller.ConnectorRedirectRouterPrefix+":name", connectorController.ConnectorRedirectDispatcher) |
| r.GET("/connector/info", connectorController.ConnectorsInfo) |
| r.POST("/connector/binding/email", connectorController.ExternalLoginBindingUserSendEmail) |
| |
| // user center plugin |
| r.GET("/user-center/agent", pr.userCenterController.UserCenterAgent) |
| r.GET("/user-center/personal/branding", pr.userCenterController.UserCenterPersonalBranding) |
| r.GET(controller.UserCenterLoginRouter, pr.userCenterController.UserCenterLoginRedirect) |
| r.GET(controller.UserCenterSignUpRedirectRouter, pr.userCenterController.UserCenterSignUpRedirect) |
| r.GET("/user-center/login/callback", pr.userCenterController.UserCenterLoginCallback) |
| r.GET("/user-center/sign-up/callback", pr.userCenterController.UserCenterSignUpCallback) |
| |
| // captcha plugin |
| r.GET("/captcha/config", pr.captchaController.GetCaptchaConfig) |
| r.GET("/embed/config", pr.embedController.GetEmbedConfig) |
| r.GET("/render/config", pr.renderController.GetRenderConfig) |
| |
| // sidebar plugin |
| r.GET("/sidebar/config", pr.sidebarController.GetSidebarConfig) |
| } |
| |
| func (pr *PluginAPIRouter) RegisterAuthUserConnectorRouter(r *gin.RouterGroup) { |
| connectorController := pr.connectorController |
| r.GET("/connector/user/info", connectorController.ConnectorsUserInfo) |
| r.DELETE("/connector/user/unbinding", connectorController.ExternalLoginUnbinding) |
| |
| r.GET("/user-center/user/settings", pr.userCenterController.UserCenterUserSettings) |
| } |
| |
| func (pr *PluginAPIRouter) RegisterAuthAdminConnectorRouter(r *gin.RouterGroup) { |
| r.GET("/user-center/agent", pr.userCenterController.UserCenterAdminFunctionAgent) |
| } |