40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
package handler
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/wmms/wmms/internal/middleware"
|
|
"github.com/wmms/wmms/internal/service"
|
|
"github.com/wmms/wmms/pkg/response"
|
|
)
|
|
|
|
func (h *Handler) ListAccessibleOrganizations(c *gin.Context) {
|
|
access, err := service.NewOrganizationAccessService().List(middleware.GetCurrentUserID(c))
|
|
if err != nil {
|
|
response.InternalError(c, "公司访问范围加载失败")
|
|
return
|
|
}
|
|
response.Success(c, access)
|
|
}
|
|
|
|
func (h *Handler) SwitchOrganizationContext(c *gin.Context) {
|
|
var req struct {
|
|
OrganizationID int64 `json:"organization_id" binding:"required,gt=0"`
|
|
PreviousOrganizationID int64 `json:"previous_organization_id"`
|
|
}
|
|
if !bind(c, &req) {
|
|
return
|
|
}
|
|
result, err := service.NewOrganizationAccessService().Switch(middleware.GetCurrentUserID(c), req.OrganizationID, req.PreviousOrganizationID)
|
|
if err != nil {
|
|
if errors.Is(err, service.ErrOrganizationInaccessible) {
|
|
response.Forbidden(c, err.Error())
|
|
} else {
|
|
response.InternalError(c, "公司切换失败")
|
|
}
|
|
return
|
|
}
|
|
response.Success(c, result)
|
|
}
|