getUserPermissions 获取用户的所有权限
(userID string)
| 753 | |
| 754 | // getUserPermissions 获取用户的所有权限 |
| 755 | func (ac *AccessController) getUserPermissions(userID string) []string { |
| 756 | // 检查缓存 |
| 757 | if permissions, exists := ac.userPermissions[userID]; exists { |
| 758 | var permissionIDs []string |
| 759 | for permID := range permissions { |
| 760 | permissionIDs = append(permissionIDs, permID) |
| 761 | } |
| 762 | return permissionIDs |
| 763 | } |
| 764 | |
| 765 | permissionSet := make(map[string]bool) |
| 766 | userRoles := ac.userRoles[userID] |
| 767 | |
| 768 | // 获取角色的权限 |
| 769 | for _, roleID := range userRoles { |
| 770 | rolePerms := ac.rolePermissions[roleID] |
| 771 | for _, permID := range rolePerms { |
| 772 | permissionSet[permID] = true |
| 773 | } |
| 774 | |
| 775 | // 递归获取父角色权限 |
| 776 | role, exists := ac.roles[roleID] |
| 777 | if exists { |
| 778 | parentPermissions := ac.getParentRolePermissions(role) |
| 779 | for _, permID := range parentPermissions { |
| 780 | permissionSet[permID] = true |
| 781 | } |
| 782 | } |
| 783 | } |
| 784 | |
| 785 | // 缓存结果 |
| 786 | ac.userPermissions[userID] = permissionSet |
| 787 | |
| 788 | var permissionIDs []string |
| 789 | for permID := range permissionSet { |
| 790 | permissionIDs = append(permissionIDs, permID) |
| 791 | } |
| 792 | |
| 793 | return permissionIDs |
| 794 | } |
| 795 | |
| 796 | // getParentRolePermissions 获取父角色权限 |
| 797 | func (ac *AccessController) getParentRolePermissions(role *Role) []string { |
no test coverage detected