100 lines
2.3 KiB
Go
100 lines
2.3 KiB
Go
package mid
|
|
|
|
//import (
|
|
// "log"
|
|
// "net/http"
|
|
// "time"
|
|
//
|
|
// "management/internal/erpserver/model/dto"
|
|
// v1 "management/internal/erpserver/service/v1"
|
|
// "management/internal/pkg/know"
|
|
// "management/internal/pkg/session"
|
|
//)
|
|
//
|
|
//var publicRoutes = map[string]bool{
|
|
// "/home.html": true,
|
|
// "/dashboard": true,
|
|
// "/system/menus": true,
|
|
// "/upload/img": true,
|
|
// "/upload/file": true,
|
|
// "/upload/multi_files": true,
|
|
// "/pear.json": true,
|
|
// "/logout": true,
|
|
//}
|
|
//
|
|
//func Authorize(
|
|
// sess session.Manager,
|
|
// menuService v1.MenuService,
|
|
//) func(http.Handler) http.Handler {
|
|
// return func(next http.Handler) http.Handler {
|
|
// return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
// ctx := r.Context()
|
|
// path := r.URL.Path
|
|
//
|
|
// // 登陆检查
|
|
// n := time.Now()
|
|
// user, err := sess.GetUser(ctx, know.StoreName)
|
|
// if err != nil || user.ID == 0 {
|
|
// http.Redirect(w, r, "/", http.StatusFound)
|
|
// return
|
|
// }
|
|
//
|
|
// log.Printf("scs get user: %s", time.Since(n).String())
|
|
//
|
|
// // 公共路由放行
|
|
// if publicRoutes[path] {
|
|
// ctx = setUser(ctx, user)
|
|
// next.ServeHTTP(w, r.WithContext(ctx))
|
|
// return
|
|
// }
|
|
//
|
|
// n1 := time.Now()
|
|
// // 权限检查
|
|
// menus, err := menuService.ListByRoleIDToMap(ctx, user.RoleID)
|
|
// if err != nil || !hasPermission(menus, path) {
|
|
// http.Error(w, "Forbidden", http.StatusForbidden)
|
|
// return
|
|
// }
|
|
//
|
|
// log.Printf("listByRoleIDToMap: %s", time.Since(n1).String())
|
|
//
|
|
// n2 := time.Now()
|
|
// cur := getCurrentMenus(menus, path)
|
|
// log.Printf("getCurrentMenus: %s", time.Since(n2).String())
|
|
//
|
|
// ctx = setUser(ctx, user)
|
|
// ctx = setCurMenus(ctx, cur)
|
|
//
|
|
// next.ServeHTTP(w, r.WithContext(ctx))
|
|
// })
|
|
// }
|
|
//}
|
|
//
|
|
//func hasPermission(menus map[string]*dto.OwnerMenuDto, path string) bool {
|
|
// _, ok := menus[path]
|
|
// return ok
|
|
//}
|
|
//
|
|
//func getCurrentMenus(data map[string]*dto.OwnerMenuDto, path string) []dto.OwnerMenuDto {
|
|
// var res []dto.OwnerMenuDto
|
|
//
|
|
// menu, ok := data[path]
|
|
// if !ok {
|
|
// return res
|
|
// }
|
|
//
|
|
// for _, item := range data {
|
|
// if menu.IsList {
|
|
// if item.ParentID == menu.ID || item.ID == menu.ID {
|
|
// res = append(res, *item)
|
|
// }
|
|
// } else {
|
|
// if item.ParentID == menu.ParentID {
|
|
// res = append(res, *item)
|
|
// }
|
|
// }
|
|
// }
|
|
//
|
|
// return res
|
|
//}
|