gorm update
This commit is contained in:
@@ -6,31 +6,32 @@ import (
|
||||
|
||||
"management/internal/erpserver/model/dto"
|
||||
"management/internal/pkg/config"
|
||||
"management/internal/pkg/middleware"
|
||||
"management/internal/pkg/know"
|
||||
"management/internal/pkg/render"
|
||||
"management/internal/pkg/session"
|
||||
|
||||
"github.com/drhin/logger"
|
||||
)
|
||||
|
||||
type Handler struct {
|
||||
Config *config.Config
|
||||
Log *logger.Logger
|
||||
Middleware middleware.Middleware
|
||||
Config *config.Config
|
||||
Log *logger.Logger
|
||||
|
||||
render render.Render
|
||||
session session.Manager
|
||||
render render.Render
|
||||
}
|
||||
|
||||
func NewHandler(
|
||||
config *config.Config,
|
||||
log *logger.Logger,
|
||||
middleware middleware.Middleware,
|
||||
session session.Manager,
|
||||
render render.Render,
|
||||
) *Handler {
|
||||
return &Handler{
|
||||
Config: config,
|
||||
Log: log,
|
||||
Middleware: middleware,
|
||||
render: render,
|
||||
Config: config,
|
||||
Log: log,
|
||||
session: session,
|
||||
render: render,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +39,19 @@ func NewHandler(
|
||||
// middleware 帮助方法
|
||||
|
||||
func (h *Handler) AuthUser(ctx context.Context) dto.AuthorizeUser {
|
||||
return h.Middleware.AuthUser(ctx)
|
||||
u, err := h.session.GetUser(ctx, know.StoreName)
|
||||
if err != nil {
|
||||
return dto.AuthorizeUser{}
|
||||
}
|
||||
return *u
|
||||
}
|
||||
|
||||
func (h *Handler) RenewToken(ctx context.Context) error {
|
||||
return h.session.RenewToken(ctx)
|
||||
}
|
||||
|
||||
func (h *Handler) Destroy(ctx context.Context) error {
|
||||
return h.session.Destroy(ctx)
|
||||
}
|
||||
|
||||
// =====================================================================================================================
|
||||
|
||||
@@ -167,11 +167,15 @@ func (h *UserHandler) Login(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
switch r.Method {
|
||||
case http.MethodGet:
|
||||
if h.Middleware.IsAuth(ctx) && h.Middleware.RefreshToken(ctx) {
|
||||
http.Redirect(w, r, "/home.html", http.StatusFound)
|
||||
return
|
||||
user := h.AuthUser(ctx)
|
||||
if user.ID > 0 {
|
||||
if err := h.RenewToken(ctx); err == nil {
|
||||
http.Redirect(w, r, "/home.html", http.StatusFound)
|
||||
return
|
||||
}
|
||||
}
|
||||
_ = h.Middleware.Destroy(ctx)
|
||||
|
||||
_ = h.Destroy(ctx)
|
||||
h.HTML(w, r, "oauth/login.tmpl", nil)
|
||||
case http.MethodPost:
|
||||
defer func(Body io.ReadCloser) {
|
||||
@@ -207,7 +211,7 @@ func (h *UserHandler) Login(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
func (h *UserHandler) Logout(w http.ResponseWriter, r *http.Request) {
|
||||
err := h.Middleware.Destroy(r.Context())
|
||||
err := h.Destroy(r.Context())
|
||||
if err != nil {
|
||||
h.Log.Error(err.Error(), err)
|
||||
}
|
||||
|
||||
@@ -5,14 +5,20 @@ import (
|
||||
|
||||
"management/internal/erpserver/handler/common"
|
||||
"management/internal/erpserver/handler/system"
|
||||
v1 "management/internal/erpserver/service/v1"
|
||||
mi "management/internal/pkg/middleware"
|
||||
"management/internal/pkg/session"
|
||||
|
||||
"github.com/drhin/logger"
|
||||
"github.com/go-chi/chi/v5"
|
||||
"github.com/go-chi/chi/v5/middleware"
|
||||
)
|
||||
|
||||
func NewHTTPServer(
|
||||
mi mi.Middleware,
|
||||
sm session.Manager,
|
||||
log *logger.Logger,
|
||||
menuService v1.MenuService,
|
||||
auditLogService v1.AuditLogService,
|
||||
captchaHandler *common.CaptchaHandler,
|
||||
uploadHandler *common.UploadHandler,
|
||||
configHandler *system.ConfigHandler,
|
||||
@@ -34,106 +40,108 @@ func NewHTTPServer(
|
||||
staticServer := http.FileServer(http.Dir("./web/statics/"))
|
||||
r.Handle("/statics/*", http.StripPrefix("/statics", staticServer))
|
||||
|
||||
uploadServer := http.FileServer(http.Dir("./upload/"))
|
||||
r.Handle("/upload/*", http.StripPrefix("/upload", uploadServer))
|
||||
uploadServer := http.FileServer(http.Dir("./public/"))
|
||||
r.Handle("/public/*", http.StripPrefix("/public", uploadServer))
|
||||
|
||||
r.Group(func(r chi.Router) {
|
||||
r.Use(mi.NoSurf) // CSRF
|
||||
r.Use(mi.LoadSession) // Session
|
||||
|
||||
r.Get("/captcha", captchaHandler.Captcha)
|
||||
|
||||
r.With(mi.Authorize, mi.Audit).Post("/upload/img", uploadHandler.Img)
|
||||
r.With(mi.Authorize, mi.Audit).Post("/upload/file", uploadHandler.File)
|
||||
r.With(mi.Authorize, mi.Audit).Post("/upload/multi_files", uploadHandler.MultiFiles)
|
||||
r.Use(mi.NoSurf) // CSRF
|
||||
r.Use(mi.LoadSession(sm)) // Session
|
||||
|
||||
r.Get("/", userHandler.Login)
|
||||
r.Get("/captcha", captchaHandler.Captcha)
|
||||
r.Post("/login", userHandler.Login)
|
||||
r.Get("/logout", userHandler.Logout)
|
||||
|
||||
r.With(mi.Authorize).Get("/home.html", homeHandler.Home)
|
||||
r.With(mi.Authorize).Get("/dashboard", homeHandler.Dashboard)
|
||||
r.Group(func(r chi.Router) {
|
||||
r.Use(mi.Authorize(sm, menuService))
|
||||
|
||||
r.With(mi.Authorize).Get("/pear.json", configHandler.Pear)
|
||||
r.Get("/logout", userHandler.Logout)
|
||||
|
||||
r.Route("/system", func(r chi.Router) {
|
||||
r.Use(mi.Authorize)
|
||||
r.Get("/home.html", homeHandler.Home)
|
||||
r.Get("/dashboard", homeHandler.Dashboard)
|
||||
r.Get("/pear.json", configHandler.Pear)
|
||||
|
||||
r.Route("/config", func(r chi.Router) {
|
||||
r.Use(mi.Audit)
|
||||
r.Get("/list", configHandler.List)
|
||||
r.Post("/list", configHandler.List)
|
||||
r.Get("/add", configHandler.Add)
|
||||
r.Get("/edit", configHandler.Edit)
|
||||
r.Post("/save", configHandler.Save)
|
||||
r.Post("/refresh_cache", configHandler.RefreshCache)
|
||||
r.Post("/reset_pear", configHandler.ResetPear)
|
||||
r.Route("/upload", func(r chi.Router) {
|
||||
r.Use(mi.Audit(sm, auditLogService, log))
|
||||
r.Get("/img", uploadHandler.Img)
|
||||
r.Get("/file", uploadHandler.File)
|
||||
r.Get("/multi_files", uploadHandler.MultiFiles)
|
||||
})
|
||||
|
||||
r.Get("/menus", menuHandler.Menus)
|
||||
r.Route("/menu", func(r chi.Router) {
|
||||
r.Use(mi.Audit)
|
||||
r.Get("/list", menuHandler.List)
|
||||
r.Post("/list", menuHandler.List)
|
||||
r.Get("/add", menuHandler.Add)
|
||||
r.Get("/add_children", menuHandler.AddChildren)
|
||||
r.Get("/edit", menuHandler.Edit)
|
||||
r.Post("/save", menuHandler.Save)
|
||||
r.Post("/data", menuHandler.Data)
|
||||
r.Post("/refresh_cache", menuHandler.RefreshCache)
|
||||
})
|
||||
r.Route("/system", func(r chi.Router) {
|
||||
r.Use(mi.Audit(sm, auditLogService, log))
|
||||
|
||||
r.Route("/department", func(r chi.Router) {
|
||||
r.Use(mi.Audit)
|
||||
r.Get("/menus", menuHandler.Menus)
|
||||
|
||||
r.Get("/list", departmentHandler.List)
|
||||
r.Post("/list", departmentHandler.List)
|
||||
r.Get("/add", departmentHandler.Add)
|
||||
r.Get("/add_children", departmentHandler.AddChildren)
|
||||
r.Get("/edit", departmentHandler.Edit)
|
||||
r.Post("/save", departmentHandler.Save)
|
||||
r.Post("/data", departmentHandler.Data)
|
||||
r.Post("/refresh_cache", departmentHandler.RefreshCache)
|
||||
r.Post("/rebuild_parent_path", departmentHandler.RebuildParentPath)
|
||||
})
|
||||
r.Route("/config", func(r chi.Router) {
|
||||
r.Get("/list", configHandler.List)
|
||||
r.Post("/list", configHandler.List)
|
||||
r.Get("/add", configHandler.Add)
|
||||
r.Get("/edit", configHandler.Edit)
|
||||
r.Post("/save", configHandler.Save)
|
||||
r.Post("/refresh_cache", configHandler.RefreshCache)
|
||||
r.Post("/reset_pear", configHandler.ResetPear)
|
||||
})
|
||||
|
||||
r.Route("/role", func(r chi.Router) {
|
||||
r.Use(mi.Audit)
|
||||
r.Route("/menu", func(r chi.Router) {
|
||||
r.Get("/list", menuHandler.List)
|
||||
r.Post("/list", menuHandler.List)
|
||||
r.Get("/add", menuHandler.Add)
|
||||
r.Get("/add_children", menuHandler.AddChildren)
|
||||
r.Get("/edit", menuHandler.Edit)
|
||||
r.Post("/save", menuHandler.Save)
|
||||
r.Post("/data", menuHandler.Data)
|
||||
r.Post("/refresh_cache", menuHandler.RefreshCache)
|
||||
})
|
||||
|
||||
r.Get("/list", roleHandler.List)
|
||||
r.Post("/list", roleHandler.List)
|
||||
r.Get("/add", roleHandler.Add)
|
||||
r.Get("/add_children", roleHandler.AddChildren)
|
||||
r.Get("/edit", roleHandler.Edit)
|
||||
r.Post("/save", roleHandler.Save)
|
||||
r.Post("/data", roleHandler.Data)
|
||||
r.Post("/refresh_cache", roleHandler.RefreshCache)
|
||||
r.Post("/rebuild_parent_path", roleHandler.RebuildParentPath)
|
||||
r.Post("/refresh_role_menus", roleHandler.RefreshRoleMenus)
|
||||
r.Get("/set_menu", roleHandler.SetMenu)
|
||||
r.Post("/set_menu", roleHandler.SetMenu)
|
||||
})
|
||||
r.Route("/department", func(r chi.Router) {
|
||||
r.Get("/list", departmentHandler.List)
|
||||
r.Post("/list", departmentHandler.List)
|
||||
r.Get("/add", departmentHandler.Add)
|
||||
r.Get("/add_children", departmentHandler.AddChildren)
|
||||
r.Get("/edit", departmentHandler.Edit)
|
||||
r.Post("/save", departmentHandler.Save)
|
||||
r.Post("/data", departmentHandler.Data)
|
||||
r.Post("/refresh_cache", departmentHandler.RefreshCache)
|
||||
r.Post("/rebuild_parent_path", departmentHandler.RebuildParentPath)
|
||||
})
|
||||
|
||||
r.Route("/user", func(r chi.Router) {
|
||||
r.Get("/list", userHandler.List)
|
||||
r.Post("/list", userHandler.List)
|
||||
r.Get("/add", userHandler.Add)
|
||||
r.Get("/edit", userHandler.Edit)
|
||||
r.Post("/save", userHandler.Save)
|
||||
r.Get("/profile", userHandler.Profile)
|
||||
r.Post("/data", userHandler.Data)
|
||||
})
|
||||
r.Route("/role", func(r chi.Router) {
|
||||
r.Get("/list", roleHandler.List)
|
||||
r.Post("/list", roleHandler.List)
|
||||
r.Get("/add", roleHandler.Add)
|
||||
r.Get("/add_children", roleHandler.AddChildren)
|
||||
r.Get("/edit", roleHandler.Edit)
|
||||
r.Post("/save", roleHandler.Save)
|
||||
r.Post("/data", roleHandler.Data)
|
||||
r.Post("/refresh_cache", roleHandler.RefreshCache)
|
||||
r.Post("/rebuild_parent_path", roleHandler.RebuildParentPath)
|
||||
r.Post("/refresh_role_menus", roleHandler.RefreshRoleMenus)
|
||||
r.Get("/set_menu", roleHandler.SetMenu)
|
||||
r.Post("/set_menu", roleHandler.SetMenu)
|
||||
})
|
||||
|
||||
r.Route("/login_log", func(r chi.Router) {
|
||||
r.Get("/list", loginLogHandler.List)
|
||||
r.Post("/list", loginLogHandler.List)
|
||||
})
|
||||
r.Route("/user", func(r chi.Router) {
|
||||
r.Get("/list", userHandler.List)
|
||||
r.Post("/list", userHandler.List)
|
||||
r.Get("/add", userHandler.Add)
|
||||
r.Get("/edit", userHandler.Edit)
|
||||
r.Post("/save", userHandler.Save)
|
||||
r.Get("/profile", userHandler.Profile)
|
||||
r.Post("/data", userHandler.Data)
|
||||
})
|
||||
|
||||
r.Route("/audit_log", func(r chi.Router) {
|
||||
r.Get("/list", auditHandler.List)
|
||||
r.Post("/list", auditHandler.List)
|
||||
r.Route("/login_log", func(r chi.Router) {
|
||||
r.Get("/list", loginLogHandler.List)
|
||||
r.Post("/list", loginLogHandler.List)
|
||||
})
|
||||
|
||||
r.Route("/audit_log", func(r chi.Router) {
|
||||
r.Get("/list", auditHandler.List)
|
||||
r.Post("/list", auditHandler.List)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
return r
|
||||
|
||||
@@ -45,7 +45,7 @@ func NewAuditLog(r *http.Request, email, os, browser string, start, end time.Tim
|
||||
contentType := r.Header.Get("Content-Type")
|
||||
if strings.Contains(contentType, "application/json") {
|
||||
body := make([]byte, r.ContentLength)
|
||||
r.Body.Read(body)
|
||||
_, _ = r.Body.Read(body)
|
||||
params = string(body)
|
||||
} else if strings.Contains(contentType, "application/x-www-form-urlencoded") {
|
||||
params = r.Form.Encode()
|
||||
|
||||
@@ -11,14 +11,14 @@ import (
|
||||
type Service struct {
|
||||
Log *logger.Logger
|
||||
Tx repository.Transaction
|
||||
Session session.Session
|
||||
Session session.Manager
|
||||
Redis redis.Cache
|
||||
}
|
||||
|
||||
func NewService(
|
||||
log *logger.Logger,
|
||||
tx repository.Transaction,
|
||||
session session.Session,
|
||||
session session.Manager,
|
||||
redis redis.Cache,
|
||||
) *Service {
|
||||
return &Service{
|
||||
|
||||
@@ -2,7 +2,6 @@ package system
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"strconv"
|
||||
"time"
|
||||
@@ -181,7 +180,7 @@ func (s *userService) login(ctx context.Context, req *form.Login) error {
|
||||
}
|
||||
|
||||
func (s *userService) loginSuccess(ctx context.Context, user *system.User, req *form.Login) error {
|
||||
auth := dto.AuthorizeUser{
|
||||
return s.Session.PutUser(ctx, know.StoreName, &dto.AuthorizeUser{
|
||||
ID: user.ID,
|
||||
Uuid: user.Uuid,
|
||||
Email: user.Email,
|
||||
@@ -191,13 +190,5 @@ func (s *userService) loginSuccess(ctx context.Context, user *system.User, req *
|
||||
OS: req.Os,
|
||||
IP: req.Ip,
|
||||
Browser: req.Browser,
|
||||
}
|
||||
|
||||
gob, err := json.Marshal(auth)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
s.Session.Put(ctx, know.StoreName, gob)
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
@@ -13,7 +13,6 @@ import (
|
||||
commonService "management/internal/erpserver/service/v1/common"
|
||||
systemService "management/internal/erpserver/service/v1/system"
|
||||
"management/internal/pkg/config"
|
||||
"management/internal/pkg/middleware"
|
||||
"management/internal/pkg/redis"
|
||||
"management/internal/pkg/render"
|
||||
"management/internal/pkg/session"
|
||||
@@ -72,9 +71,8 @@ func NewWire(*config.Config, *logger.Logger) (*chi.Mux, func(), error) {
|
||||
panic(wire.Build(
|
||||
repositorySet,
|
||||
redis.New,
|
||||
session.New,
|
||||
session.NewSCSManager,
|
||||
serviceSet,
|
||||
middleware.New,
|
||||
render.New,
|
||||
handlerSet,
|
||||
serverSet,
|
||||
|
||||
@@ -19,7 +19,6 @@ import (
|
||||
"management/internal/erpserver/service/v1/common"
|
||||
system2 "management/internal/erpserver/service/v1/system"
|
||||
"management/internal/pkg/config"
|
||||
"management/internal/pkg/middleware"
|
||||
"management/internal/pkg/redis"
|
||||
"management/internal/pkg/render"
|
||||
"management/internal/pkg/session"
|
||||
@@ -32,7 +31,11 @@ func NewWire(configConfig *config.Config, loggerLogger *logger.Logger) (*chi.Mux
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
sessionSession := session.New(db, configConfig)
|
||||
manager, err := session.NewSCSManager(db, configConfig)
|
||||
if err != nil {
|
||||
cleanup()
|
||||
return nil, nil, err
|
||||
}
|
||||
repositoryRepository := repository.NewRepository(db, loggerLogger)
|
||||
transaction := repository.NewTransaction(repositoryRepository)
|
||||
cache, cleanup2, err := redis.New(configConfig, loggerLogger)
|
||||
@@ -40,7 +43,7 @@ func NewWire(configConfig *config.Config, loggerLogger *logger.Logger) (*chi.Mux
|
||||
cleanup()
|
||||
return nil, nil, err
|
||||
}
|
||||
serviceService := service.NewService(loggerLogger, transaction, sessionSession, cache)
|
||||
serviceService := service.NewService(loggerLogger, transaction, manager, cache)
|
||||
menuRepository := system.NewMenuRepository(repositoryRepository)
|
||||
roleRepository := system.NewRoleRepository(repositoryRepository)
|
||||
roleService := system2.NewRoleService(serviceService, roleRepository)
|
||||
@@ -49,14 +52,13 @@ func NewWire(configConfig *config.Config, loggerLogger *logger.Logger) (*chi.Mux
|
||||
menuService := system2.NewMenuService(serviceService, menuRepository, roleService, roleMenuService)
|
||||
auditLogRepository := system.NewAuditLogRepository(repositoryRepository)
|
||||
auditLogService := system2.NewAuditLogService(serviceService, auditLogRepository)
|
||||
middlewareMiddleware := middleware.New(sessionSession, menuService, auditLogService)
|
||||
renderRender, err := render.New(sessionSession, menuService)
|
||||
renderRender, err := render.New(manager, menuService)
|
||||
if err != nil {
|
||||
cleanup2()
|
||||
cleanup()
|
||||
return nil, nil, err
|
||||
}
|
||||
handlerHandler := handler.NewHandler(configConfig, loggerLogger, middlewareMiddleware, renderRender)
|
||||
handlerHandler := handler.NewHandler(configConfig, loggerLogger, manager, renderRender)
|
||||
captchaService := common.NewCaptchaService()
|
||||
captchaHandler := common2.NewCaptchaHandler(handlerHandler, captchaService)
|
||||
uploadHandler := common2.NewUploadHandler(handlerHandler)
|
||||
@@ -76,7 +78,7 @@ func NewWire(configConfig *config.Config, loggerLogger *logger.Logger) (*chi.Mux
|
||||
menuHandler := system3.NewMenuHandler(handlerHandler, menuService)
|
||||
roleHandler := system3.NewRoleHandler(handlerHandler, roleService, menuService)
|
||||
departmentHandler := system3.NewDepartmentHandler(handlerHandler, departmentService)
|
||||
mux := NewHTTPServer(middlewareMiddleware, captchaHandler, uploadHandler, configHandler, homeHandler, userHandler, loginLogHandler, auditHandler, menuHandler, roleHandler, departmentHandler)
|
||||
mux := NewHTTPServer(manager, loggerLogger, menuService, auditLogService, captchaHandler, uploadHandler, configHandler, homeHandler, userHandler, loginLogHandler, auditHandler, menuHandler, roleHandler, departmentHandler)
|
||||
return mux, func() {
|
||||
cleanup2()
|
||||
cleanup()
|
||||
|
||||
Reference in New Issue
Block a user