Modify jwt middleware logic

Signed-off-by: Asai Neko <sugar@sne.moe>
This commit is contained in:
2026-01-02 12:36:07 +08:00
parent 3d685b5a86
commit cbec9bf2b3
7 changed files with 85 additions and 50 deletions

View File

@@ -46,8 +46,8 @@ func Magic(c *gin.Context) {
uri := viper.GetString("server.external_url") +
"/api/v1/auth/redirect?" +
"code=" + code +
"&redirect_uri" + req.RedirectUri +
"&state" + req.State
"&redirect_uri=" + req.RedirectUri +
"&state=" + req.State
debugMode := viper.GetString("server.debug_mode")
if debugMode == "true" {

View File

@@ -9,13 +9,19 @@ import (
func Checkin(c *gin.Context) {
data := new(data.Attendance)
userId, ok := c.Get("user_id")
userIdOrig, ok := c.Get("user_id")
if !ok {
c.JSON(401, gin.H{
"status": "unauthorized",
})
return
}
userId, err := uuid.Parse(userIdOrig.(string))
if err != nil {
c.JSON(500, gin.H{
"status": "failed to parse uuid",
})
}
// Get event id from query
eventIdOrig, ok := c.GetQuery("event_id")
@@ -34,8 +40,7 @@ func Checkin(c *gin.Context) {
})
return
}
data.UserId = userId.(uuid.UUID)
data.UserId = userId
code, err := data.GenCheckinCode(eventId)
if err != nil {
c.JSON(500, gin.H{
@@ -50,15 +55,21 @@ func Checkin(c *gin.Context) {
}
func CheckinSubmit(c *gin.Context) {
userId, ok := c.Get("user_id")
userIdOrig, ok := c.Get("user_id")
if !ok {
c.JSON(403, gin.H{
"status": "unauthorized",
})
}
userId, err := uuid.Parse(userIdOrig.(string))
if err != nil {
c.JSON(500, gin.H{
"status": "failed to parse uuid",
})
}
userData := new(data.User)
userData.GetByUserId(userId.(uuid.UUID))
userData.GetByUserId(userId)
if userData.PermissionLevel <= 20 {
c.JSON(403, gin.H{
"status": "access denied",

View File

@@ -9,16 +9,22 @@ import (
func Info(c *gin.Context) {
userData := new(data.User)
userId, ok := c.Get("user_id")
userIdOrig, ok := c.Get("user_id")
if !ok {
c.JSON(404, gin.H{
"status": "user not found",
})
return
}
userId, err := uuid.Parse(userIdOrig.(string))
if err != nil {
c.JSON(500, gin.H{
"status": "failed to parse uuid",
})
}
// Get user from database
user, err := userData.GetByUserId(userId.(uuid.UUID))
user, err := userData.GetByUserId(userId)
if err != nil {
c.JSON(404, gin.H{
"status": "user not found",

View File

@@ -8,11 +8,17 @@ import (
)
func Query(c *gin.Context) {
userId, ok := c.Get("user_id")
userIdOrig, ok := c.Get("user_id")
if !ok {
c.JSON(400, gin.H{"status": "could not found user_id"})
return
}
userId, err := uuid.Parse(userIdOrig.(string))
if err != nil {
c.JSON(500, gin.H{
"status": "failed to parse uuid",
})
}
eventIdOrig, ok := c.GetQuery("event_id")
if !ok {
@@ -26,7 +32,7 @@ func Query(c *gin.Context) {
}
attendanceData := new(data.Attendance)
attendance, err := attendanceData.GetAttendance(userId.(uuid.UUID), eventId)
attendance, err := attendanceData.GetAttendance(userId, eventId)
if err != nil {
c.JSON(500, gin.H{"status": "database error"})
return

View File

@@ -13,16 +13,22 @@ func Update(c *gin.Context) {
// New user model
user := new(data.User)
userId, ok := c.Get("user_id")
userIdOrig, ok := c.Get("user_id")
if !ok {
c.JSON(403, gin.H{
"status": "can not found user id",
})
return
}
userId, err := uuid.Parse(userIdOrig.(string))
if err != nil {
c.JSON(500, gin.H{
"status": "failed to parse uuid",
})
}
// Get user info
user.GetByUserId(userId.(uuid.UUID))
user.GetByUserId(userId)
// Reject permission 0 user
if user.PermissionLevel == 0 {
@@ -38,7 +44,7 @@ func Update(c *gin.Context) {
user.Subtitle = ReqInfo.Subtitle
// Update user info
user.UpdateByUserID(userId.(uuid.UUID))
user.UpdateByUserID(userId)
c.JSON(200, gin.H{
"status": "success",