Files
goodBaby/main.go
T
2026-06-19 18:47:36 +08:00

72 lines
1.7 KiB
Go

package main
import (
"crypto/rand"
"fmt"
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/sessions/cookie"
"github.com/gin-gonic/gin"
"github.com/robfig/cron/v3"
"github.com/ssdomei232/goodBaby/api/account"
"github.com/ssdomei232/goodBaby/api/rule"
"github.com/ssdomei232/goodBaby/api/user"
"github.com/ssdomei232/goodBaby/handler/checker"
"github.com/ssdomei232/goodBaby/handler/runner"
)
func main() {
runner.InitExecutorRegistry()
c := cron.New()
c.AddFunc("@every 10m", checker.CheckTimers)
c.Start()
r := gin.Default()
store := cookie.NewStore(generateRandomKey(32))
r.Use(sessions.Sessions("goodbaby-session", store))
v1 := r.Group("/api/v1")
{
v1.POST("/user/registry", user.HandleRegistry)
v1.POST("/user/login", user.HandleLogin)
}
// 需要认证的路由组
authorized := v1.Group("/")
authorized.Use(user.AuthMiddleware())
{
users := authorized.Group("/user")
{
users.GET("/info", user.HandleGetUserInfo)
}
rules := authorized.Group("/rules")
{
rules.GET("/", rule.HandleGetAllRules)
rules.POST("/", rule.HandleCreateRule)
rules.PUT("/:ruleID", rule.HandleEditRule)
rules.DELETE("/:ruleID", rule.HandleDeleteRule)
}
accounts := authorized.Group("/accounts")
{
accounts.GET("/", account.HandleGetAllAccounts)
accounts.POST("/", account.HandleAddAccount)
accounts.GET("/:accountID/check", account.HandleCheckDeleteAccount)
accounts.DELETE("/:accountID", account.HandleDeleteAccount)
}
}
r.Run(":8088")
}
func generateRandomKey(length int) []byte {
key := make([]byte, length)
_, err := rand.Read(key)
if err != nil {
panic(fmt.Sprintf("无法生成随机密钥: %v", err))
}
return key
}