MCPcopy Create free account
hub / github.com/astercloud/aster / getUserPermissions

Method getUserPermissions

pkg/security/access_control.go:755–794  ·  view source on GitHub ↗

getUserPermissions 获取用户的所有权限

(userID string)

Source from the content-addressed store, hash-verified

753
754// getUserPermissions 获取用户的所有权限
755func (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 获取父角色权限
797func (ac *AccessController) getParentRolePermissions(role *Role) []string {

Callers 2

CheckPermissionMethod · 0.95
CreateSessionMethod · 0.95

Calls 1

Tested by

no test coverage detected