blog_backend_api/main.go

101 lines
2.7 KiB
Go

package main
import (
"background/config"
"background/controller"
"background/controller/middle"
"background/db"
"background/logs"
"github.com/gin-gonic/gin"
"github.com/tommy351/gin-sessions"
"log"
"strconv"
)
var (
userController = controller.UserController{}
mailContoller = controller.MailController{}
)
func InitConfig() {
e := config.Init("user.yaml")
if nil != e {
log.Println(e.Error())
}
}
func InitMysql() {
c := config.GetMysqlConfig()
if c == nil {
logs.Error("cannnot connect mysql server")
} else {
db.Init()
}
}
func InitRedis() {
e := config.InitRedis()
if nil != e {
logs.Error(e.Error())
return
}
}
func InitLogs() {
logs.Init(config.GetLogConfig().Dir, config.GetLogConfig().File, config.GetLogConfig().Level, config.GetLogConfig().SaveFile)
}
func CORSMiddleware(c *gin.Context) {
ori := c.Request.Header.Get("Origin")
c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE")
c.Writer.Header().Set("Access-Control-Allow-Origin", ori)
c.Writer.Header().Set("Access-Control-Max-Age", "86400")
c.Writer.Header().Set("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding, x-access-token")
c.Writer.Header().Set("Access-Control-Expose-Headers", "Content-Length")
c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
if c.Request.Method == "OPTIONS" {
log.Println("OPTIONS")
c.AbortWithStatus(200)
} else {
c.Next()
}
}
func main() {
InitConfig()
InitLogs()
InitRedis()
InitMysql()
r := gin.Default()
store := sessions.NewCookieStore([]byte("secret123"))
r.Use(sessions.Middleware("sess_store", store))
r.Use(CORSMiddleware)
api := r.Group("/api")
{
/** 添加或修改用户 **/
api.POST("/user", userController.SetUser)
/** 删除用户 **/
api.DELETE("/user", userController.DelUser)
/** 获取单独用户详情信息 methods(id) **/
api.GET("/user", middle.AuthMiddle,userController.GetUser)
/** 获取所有用户 **/
api.GET("/users", middle.AuthMiddle,userController.Users)
api.POST("/search_users",middle.AuthMiddle,userController.SerarchUsers)
/** 用户登录 **/
api.POST("/login", userController.Login)
/** 用户注册 **/
api.POST("/register", userController.Register)
/** 用户退出登陆 **/
api.GET("/logout", middle.AuthMiddle,userController.Logout)
api.POST("/verify", mailContoller.OnSendEmailCode)
/** 修改密码**/
api.POST("modify_pass",middle.AuthMiddle,userController.ModifyPasswd)
api.PUT("article",controller.AddArticle) // 添加文章
}
e := r.Run(":" + strconv.Itoa(config.GetPort()))
if nil != e {
log.Print(e.Error())
}
}