File size: 1,177 Bytes
48471f7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9e52285
48471f7
9e52285
 
 
 
 
 
48471f7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// 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{}
}