Skip to content

Commit

Permalink
feat: redirect to install
Browse files Browse the repository at this point in the history
  • Loading branch information
1379 authored and 1379 committed Nov 6, 2022
1 parent 58cc28a commit 68e30b7
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 2 deletions.
3 changes: 3 additions & 0 deletions event/listener/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package listener

import (
"context"
"fmt"
"time"

"go.uber.org/zap"
Expand Down Expand Up @@ -85,7 +86,9 @@ func (s *StartListener) printStartInfo(ctx context.Context) error {
}
site := logger.BlueBold + "Sonic started at " + blogURL + logger.Reset
log.Info(site)
fmt.Println(site)
adminSite := logger.BlueBold + "Sonic admin started at " + blogURL + "/admin" + logger.Reset
log.Info(adminSite)
fmt.Println(adminSite)
return nil
}
45 changes: 45 additions & 0 deletions handler/middleware/install.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package middleware

import (
"net/http"

"github.com/gin-gonic/gin"

"github.com/go-sonic/sonic/model/property"
"github.com/go-sonic/sonic/service"
)

type InstallRedirectMiddleware struct {
optionService service.OptionService
}

func NewInstallRedirectMiddleware(optionService service.OptionService) *InstallRedirectMiddleware {
return &InstallRedirectMiddleware{
optionService: optionService,
}
}

func (i *InstallRedirectMiddleware) InstallRedirect() gin.HandlerFunc {
skipPath := map[string]struct{}{
"/api/admin/installations": {},
"/api/admin/is_installed": {},
"/api/admin/login/precheck": {},
}
return func(ctx *gin.Context) {
path := ctx.Request.URL.Path
if _, ok := skipPath[path]; ok {
return
}
isInstall, err := i.optionService.GetOrByDefaultWithErr(ctx, property.IsInstalled, false)
if err != nil {
abortWithStatusJSON(ctx, http.StatusInternalServerError, http.StatusText(http.StatusInternalServerError))
return
}
if !isInstall.(bool) {
ctx.Redirect(http.StatusFound, "/admin/#install")
ctx.Abort()
return
}
ctx.Next()
}
}
4 changes: 2 additions & 2 deletions handler/route.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ func (s *Server) RegisterRouters() {
}
{
adminApiRouter := router.Group("/api/admin")
adminApiRouter.Use(s.LogMiddleware.LoggerWithConfig(middleware.GinLoggerConfig{}), s.RecoveryMiddleware.RecoveryWithLogger())
adminApiRouter.Use(s.LogMiddleware.LoggerWithConfig(middleware.GinLoggerConfig{}), s.RecoveryMiddleware.RecoveryWithLogger(), s.InstallRedirectMiddleware.InstallRedirect())
adminApiRouter.GET("/is_installed", s.wrapHandler(s.AdminHandler.IsInstalled))
adminApiRouter.POST("/login/precheck", s.wrapHandler(s.AdminHandler.AuthPreCheck))
adminApiRouter.POST("/login", s.wrapHandler(s.AdminHandler.Auth))
Expand Down Expand Up @@ -278,7 +278,7 @@ func (s *Server) RegisterRouters() {
}
{
contentRouter := router.Group("")
contentRouter.Use(s.LogMiddleware.LoggerWithConfig(middleware.GinLoggerConfig{}), s.RecoveryMiddleware.RecoveryWithLogger())
contentRouter.Use(s.LogMiddleware.LoggerWithConfig(middleware.GinLoggerConfig{}), s.RecoveryMiddleware.RecoveryWithLogger(), s.InstallRedirectMiddleware.InstallRedirect())

contentRouter.POST("/content/:type/:slug/authentication", s.wrapHTMLHandler(s.ViewHandler.Authenticate))

Expand Down
3 changes: 3 additions & 0 deletions handler/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ type Server struct {
AuthMiddleware *middleware.AuthMiddleware
LogMiddleware *middleware.GinLoggerMiddleware
RecoveryMiddleware *middleware.RecoveryMiddleware
InstallRedirectMiddleware *middleware.InstallRedirectMiddleware
OptionService service.OptionService
ThemeService service.ThemeService
SheetService service.SheetService
Expand Down Expand Up @@ -85,6 +86,7 @@ type ServerParams struct {
AuthMiddleware *middleware.AuthMiddleware
LogMiddleware *middleware.GinLoggerMiddleware
RecoveryMiddleware *middleware.RecoveryMiddleware
InstallRedirectMiddleware *middleware.InstallRedirectMiddleware
OptionService service.OptionService
ThemeService service.ThemeService
SheetService service.SheetService
Expand Down Expand Up @@ -148,6 +150,7 @@ func NewServer(param ServerParams, lifecycle fx.Lifecycle) *Server {
AuthMiddleware: param.AuthMiddleware,
LogMiddleware: param.LogMiddleware,
RecoveryMiddleware: param.RecoveryMiddleware,
InstallRedirectMiddleware: param.InstallRedirectMiddleware,
AdminHandler: param.AdminHandler,
AttachmentHandler: param.AttachmentHandler,
BackupHandler: param.BackupHandler,
Expand Down
1 change: 1 addition & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ func InitApp() *fx.App {
middleware.NewAuthMiddleware,
middleware.NewGinLoggerMiddleware,
middleware.NewRecoveryMiddleware,
middleware.NewInstallRedirectMiddleware,
),
fx.Populate(&dal.DB),
fx.Populate(&eventBus),
Expand Down

0 comments on commit 68e30b7

Please sign in to comment.