Logout
This commit is contained in:
		@@ -7,6 +7,8 @@ import (
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	config "learnsteam/cslms-api/configs"
 | 
			
		||||
	"learnsteam/cslms-api/internal/database"
 | 
			
		||||
	"learnsteam/cslms-api/internal/models"
 | 
			
		||||
 | 
			
		||||
	"github.com/gin-gonic/gin"
 | 
			
		||||
	"github.com/golang-jwt/jwt/v5"
 | 
			
		||||
@@ -35,10 +37,14 @@ func Auth(permission string) gin.HandlerFunc {
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		fmt.Println("token", extract(c.Request))
 | 
			
		||||
		fmt.Println("sub", sub)
 | 
			
		||||
		valid := Valid(c.Request)
 | 
			
		||||
		if !valid {
 | 
			
		||||
			c.JSON(http.StatusUnauthorized, gin.H{"error": "token is not valid"})
 | 
			
		||||
			c.Abort()
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		c.Set("token", extract(c.Request))
 | 
			
		||||
		c.Set("token", Extract(c.Request))
 | 
			
		||||
		c.Set("sub", sub)
 | 
			
		||||
		c.Set("role", role)
 | 
			
		||||
		c.Next()
 | 
			
		||||
@@ -67,17 +73,21 @@ func Permission(permission *string) gin.HandlerFunc {
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		fmt.Println("token", extract(c.Request))
 | 
			
		||||
		fmt.Println("sub", sub)
 | 
			
		||||
		valid := Valid(c.Request)
 | 
			
		||||
		if !valid {
 | 
			
		||||
			c.JSON(http.StatusUnauthorized, gin.H{"error": "token is not valid"})
 | 
			
		||||
			c.Abort()
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		c.Set("token", extract(c.Request))
 | 
			
		||||
		c.Set("token", Extract(c.Request))
 | 
			
		||||
		c.Set("sub", sub)
 | 
			
		||||
		c.Set("role", role)
 | 
			
		||||
		c.Next()
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func extract(r *http.Request) string {
 | 
			
		||||
func Extract(r *http.Request) string {
 | 
			
		||||
	authorization := r.Header.Get("Authorization")
 | 
			
		||||
	strArr := strings.Split(authorization, " ")
 | 
			
		||||
	if len(strArr) == 2 {
 | 
			
		||||
@@ -86,8 +96,8 @@ func extract(r *http.Request) string {
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func verify(r *http.Request) (*jwt.Token, error) {
 | 
			
		||||
	tokenString := extract(r)
 | 
			
		||||
func Verify(r *http.Request) (*jwt.Token, error) {
 | 
			
		||||
	tokenString := Extract(r)
 | 
			
		||||
	jwtToken, err := jwt.Parse(tokenString, func(jwtToken *jwt.Token) (interface{}, error) {
 | 
			
		||||
		if _, ok := jwtToken.Method.(*jwt.SigningMethodHMAC); !ok {
 | 
			
		||||
			return nil, fmt.Errorf("unexpected signing method: %v", jwtToken.Header["alg"])
 | 
			
		||||
@@ -99,8 +109,9 @@ func verify(r *http.Request) (*jwt.Token, error) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func UserID(r *http.Request) (int64, error) {
 | 
			
		||||
	jwtToken, err := verify(r)
 | 
			
		||||
	jwtToken, err := Verify(r)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Println(err)
 | 
			
		||||
		return -1, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -120,7 +131,7 @@ func UserID(r *http.Request) (int64, error) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Role(r *http.Request) (*string, error) {
 | 
			
		||||
	jwtToken, err := verify(r)
 | 
			
		||||
	jwtToken, err := Verify(r)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
@@ -134,3 +145,12 @@ func Role(r *http.Request) (*string, error) {
 | 
			
		||||
 | 
			
		||||
	return &role, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Valid(r *http.Request) bool {
 | 
			
		||||
	tokenString := Extract(r)
 | 
			
		||||
	var token models.Token
 | 
			
		||||
	fmt.Println(tokenString)
 | 
			
		||||
	err := database.DB.Where("token = ? AND status = ?", tokenString, "on").First(&token).Error
 | 
			
		||||
	fmt.Println(&token)
 | 
			
		||||
	return err == nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user