hikan.ru/mvc/controllers/auth.go

48 lines
1.3 KiB
Go
Raw Normal View History

2025-02-02 16:43:55 +03:00
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?Выход выполнен")
})
}