package middleware import "github.com/gin-gonic/gin" // AuthSubject is the minimal authenticated identity stored in gin context. // Decision: {UserID int64, Concurrency int} type AuthSubject struct { UserID int64 Concurrency int } func GetAuthSubjectFromContext(c *gin.Context) (AuthSubject, bool) { value, exists := c.Get(string(ContextKeyUser)) if !exists { return AuthSubject{}, false } subject, ok := value.(AuthSubject) return subject, ok } func GetUserRoleFromContext(c *gin.Context) (string, bool) { value, exists := c.Get(string(ContextKeyUserRole)) if !exists { return "", false } role, ok := value.(string) return role, ok }