feat: enrich task record details
This commit is contained in:
@@ -39,6 +39,7 @@ type User struct {
|
||||
APIKeyID string `json:"apiKeyId,omitempty"`
|
||||
APIKeySecret string `json:"apiKeySecret,omitempty"`
|
||||
APIKeyName string `json:"apiKeyName,omitempty"`
|
||||
APIKeyPrefix string `json:"apiKeyPrefix,omitempty"`
|
||||
}
|
||||
|
||||
type contextKey string
|
||||
@@ -135,6 +136,7 @@ func (a *Authenticator) verifyJWT(tokenString string) (*User, error) {
|
||||
APIKeyID: stringClaim(claims, "apiKeyId"),
|
||||
APIKeySecret: stringClaim(claims, "apiKeySecret"),
|
||||
APIKeyName: stringClaim(claims, "apiKeyName"),
|
||||
APIKeyPrefix: stringClaim(claims, "apiKeyPrefix"),
|
||||
}
|
||||
if user.Source == "" {
|
||||
user.Source = "gateway"
|
||||
@@ -162,6 +164,9 @@ func (a *Authenticator) SignJWT(user *User, ttl time.Duration) (string, error) {
|
||||
"userGroupId": user.UserGroupID,
|
||||
"userGroupKey": user.UserGroupKey,
|
||||
"userGroupKeys": user.UserGroupKeys,
|
||||
"apiKeyId": user.APIKeyID,
|
||||
"apiKeyName": user.APIKeyName,
|
||||
"apiKeyPrefix": user.APIKeyPrefix,
|
||||
"iat": now.Unix(),
|
||||
"exp": now.Add(ttl).Unix(),
|
||||
}
|
||||
@@ -235,6 +240,31 @@ func hasPermission(roles []string, required Permission) bool {
|
||||
return granted[required]
|
||||
}
|
||||
|
||||
func PermissionLevel(roles []string) int {
|
||||
level := 0
|
||||
for _, role := range roles {
|
||||
switch role {
|
||||
case "admin", "manager":
|
||||
if level < 4 {
|
||||
level = 4
|
||||
}
|
||||
case "operator":
|
||||
if level < 3 {
|
||||
level = 3
|
||||
}
|
||||
case "creator":
|
||||
if level < 2 {
|
||||
level = 2
|
||||
}
|
||||
case "user":
|
||||
if level < 1 {
|
||||
level = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
return level
|
||||
}
|
||||
|
||||
func permissionsForRole(role string) []Permission {
|
||||
switch role {
|
||||
case "admin", "manager":
|
||||
|
||||
Reference in New Issue
Block a user