evaluateCondition 评估单个条件
(condition PolicyCondition, userID, resource, action string, context map[string]any)
| 683 | |
| 684 | // evaluateCondition 评估单个条件 |
| 685 | func (ac *AccessController) evaluateCondition(condition PolicyCondition, userID, resource, action string, context map[string]any) bool { |
| 686 | // 简化的条件评估 |
| 687 | switch condition.Field { |
| 688 | case "user.id": |
| 689 | return ac.compareValues(userID, string(condition.Operator), condition.Value) |
| 690 | case "resource": |
| 691 | return ac.compareValues(resource, string(condition.Operator), condition.Value) |
| 692 | case "action": |
| 693 | return ac.compareValues(action, string(condition.Operator), condition.Value) |
| 694 | default: |
| 695 | // 从context中获取值 |
| 696 | if val, exists := context[condition.Field]; exists { |
| 697 | return ac.compareValues(val, string(condition.Operator), condition.Value) |
| 698 | } |
| 699 | return false |
| 700 | } |
| 701 | } |
| 702 | |
| 703 | // compareValues 比较值 |
| 704 | func (ac *AccessController) compareValues(actual any, operator string, expected any) bool { |
no test coverage detected