2026-07-14 17:12:39 +08:00

50 lines
1.2 KiB
Go

package appregistry
import (
"database/sql"
"hyapp-admin-server/internal/middleware"
"hyapp-admin-server/internal/repository"
"hyapp-admin-server/internal/response"
"github.com/gin-gonic/gin"
)
type Handler struct {
service *Service
store *repository.Store
}
func New(userDB *sql.DB, store *repository.Store) *Handler {
return &Handler{service: NewService(userDB), store: store}
}
func (h *Handler) ListApps(c *gin.Context) {
items, err := h.service.ListApps(c.Request.Context())
if err != nil {
response.ServerError(c, "获取 App 列表失败")
return
}
response.OK(c, gin.H{"items": items, "total": len(items)})
}
func (h *Handler) ListVisibleApps(c *gin.Context) {
access, err := h.store.AppAccessForUser(middleware.CurrentUserID(c))
if err != nil {
response.ServerError(c, "获取 App 权限失败")
return
}
items, err := h.service.ListApps(c.Request.Context())
if err != nil {
response.ServerError(c, "获取 App 列表失败")
return
}
visible := make([]App, 0, len(items))
for _, item := range items {
if access.Allows(item.AppCode) {
visible = append(visible, item)
}
}
response.OK(c, gin.H{"items": visible, "total": len(visible), "mode": access.Mode})
}