package controllers import ( "fmt" "main/mvc/models" "net/http" "github.com/gin-contrib/sessions" "github.com/gin-gonic/gin" ) type LoginRequest struct { Username string `form:"username" json:"username"` Password string `form:"password" json:"password"` } func Login(tmplname string, group *gin.RouterGroup, s *models.Site) { group.POST(fmt.Sprintf("/%s", tmplname), func(c *gin.Context) { var requestData LoginRequest // Привязка данных формы к структуре if err := c.ShouldBind(&requestData); err != nil { c.Redirect(http.StatusFound, "/index/1?Ошибка при привязке данных к структуре") return } accessLvl, _ := models.AccessCheck(s.DB, requestData.Username, requestData.Password) if accessLvl == 2 { session := sessions.Default(c) session.Set("access_lvl", accessLvl) session.Save() c.Redirect(http.StatusFound, "/index/1?Вход выполнен") } else { c.Redirect(http.StatusFound, "/login/1?Ошибка входа") } }) } func Logout(tmplname string, group *gin.RouterGroup, s *models.Site) { group.POST(fmt.Sprintf("/%s", tmplname), func(c *gin.Context) { session := sessions.Default(c) session.Clear() session.Save() c.Redirect(http.StatusFound, "/index/1?Выход выполнен") }) }