50 lines
1.2 KiB
Go
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})
|
|
}
|