@ -398,7 +398,7 @@ func (a *appAuth) init() error {
}
}
// 2. 同步角色权限 (Diff Sync)
// 2. 同步角色权限 (Diff Sync)
// ID格式: scope :roleCo de :permissionID :level
// ID格式: scope d:permission:level (用于唯一标识和 Diff Sync)
var targetIDs [ ] string
var targetIDs [ ] string
// 获取该角色当前scope下的所有权限ID, 用于快速比对
// 获取该角色当前scope下的所有权限ID, 用于快速比对
@ -422,8 +422,8 @@ func (a *appAuth) init() error {
var level int
var level int
fmt . Sscanf ( levelStr , "%d" , & level )
fmt . Sscanf ( levelStr , "%d" , & level )
// 生成确定性 ID
// 生成确定性 ID : scoped:permission:level
id := fmt . Sprintf ( "%s:%s:% s:% d", a . scop e, role . Cod e, permID , level )
id := fmt . Sprintf ( "%s:%s:% d", a . scop e, permID , level )
targetIDs = append ( targetIDs , id )
targetIDs = append ( targetIDs , id )
// 检查是否存在
// 检查是否存在
@ -476,7 +476,7 @@ func (a *appAuth) getUserPermissions(userID string) ([]models.Permission, error)
// UserRole 关联的是 RoleID
// UserRole 关联的是 RoleID
// Role 表已经没有 Scope, 所以这里查出用户拥有的所有角色ID
// Role 表已经没有 Scope, 所以这里查出用户拥有的所有角色ID
var roleIDs [ ] string
var roleIDs [ ] string
if err := db . Table( "user_roles" ) .
if err := db . Model( & models . UserRole { } ) .
Where ( "user_id = ?" , userID ) .
Where ( "user_id = ?" , userID ) .
Pluck ( "role_id" , & roleIDs ) . Error ; err != nil {
Pluck ( "role_id" , & roleIDs ) . Error ; err != nil {
return nil , err
return nil , err