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