// auth/auth.go package middleware import ( "api.qobiltu.id/controller" "api.qobiltu.id/models" "api.qobiltu.id/services" "github.com/gin-gonic/gin" ) func AuthUser(c *gin.Context) { var currAccData models.AccountData if c.Request.Header["Authorization"] != nil { token := c.Request.Header["Authorization"] currAccData.UserID, currAccData.VerifyStatus, currAccData.ErrVerif = services.VerifyToken(token[0]) if currAccData.VerifyStatus == "invalid-token" || currAccData.VerifyStatus == "expired" { currAccData.UserID = 0 controller.ResponseFAIL(c, 401, models.Exception{Unauthorized: true, Message: "Your session is expired, Please re-Login!"}) c.Abort() return } else { c.Set("accountData", currAccData) c.Next() } } else { currAccData.UserID = 0 currAccData.VerifyStatus = "no-token" currAccData.ErrVerif = nil controller.ResponseFAIL(c, 401, models.Exception{Unauthorized: true, Message: "You have to login first!"}) c.Abort() return } } func GetAccountData(c *gin.Context) models.AccountData { cParam, _ := c.Get("accountData") if cParam != nil { return cParam.(models.AccountData) } return models.AccountData{} }