123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package auth
- import (
- "exam_system/middleware/claims"
- result "exam_system/result"
- "net/http"
- "strings"
- "github.com/gin-gonic/gin"
- )
- func Auth() gin.HandlerFunc {
- return func(c *gin.Context) {
-
- if strings.HasPrefix(c.Request.RequestURI, "/auth") {
- c.Next()
- } else {
-
- tokenValidate(c)
- }
- }
- }
- func tokenValidate(c *gin.Context) {
- authHeader := c.Request.Header.Get("Authorization")
- if authHeader == "" {
- c.JSON(http.StatusUnauthorized, result.UNAUTHORIZED)
- c.Abort()
- return
- }
-
- parts := strings.SplitN(authHeader, " ", 2)
- if !(len(parts) == 2 && parts[0] == "Bearer") {
- c.JSON(http.StatusUnauthorized, result.UNAUTHORIZED)
- c.Abort()
- return
- }
-
- mc, err := claims.ParseToken(parts[1])
- if err != nil {
- c.JSON(http.StatusUnauthorized, result.UNAUTHORIZED)
- c.Abort()
- return
- }
-
- c.Set("id", mc.Id)
- c.Set("sid", mc.Sid)
- c.Set("username", mc.Username)
- c.Set("role", mc.Role)
- c.Next()
- }
|