From f99ff5d513c75f4d982f5ca383102950ad39759c Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Fri, 10 Jun 2016 16:36:51 -0700 Subject: [PATCH] auth: cleanup get perm func --- auth/range_perm_cache.go | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/auth/range_perm_cache.go b/auth/range_perm_cache.go index acc73f9f7..7b99209ed 100644 --- a/auth/range_perm_cache.go +++ b/auth/range_perm_cache.go @@ -73,7 +73,7 @@ func mergeRangePerms(perms []*rangePerm) []*rangePerm { return merged } -func (as *authStore) makeUnifiedPerms(tx backend.BatchTx, userName string) *unifiedRangePermissions { +func getMergedPerms(tx backend.BatchTx, userName string) *unifiedRangePermissions { user := getUser(tx, userName) if user == nil { plog.Errorf("invalid user name %s", userName) @@ -92,18 +92,26 @@ func (as *authStore) makeUnifiedPerms(tx backend.BatchTx, userName string) *unif if len(perm.RangeEnd) == 0 { continue } + rp := &rangePerm{begin: string(perm.Key), end: string(perm.RangeEnd)} - if perm.PermType == authpb.READWRITE || perm.PermType == authpb.READ { - readPerms = append(readPerms, &rangePerm{begin: string(perm.Key), end: string(perm.RangeEnd)}) - } + switch perm.PermType { + case authpb.READWRITE: + readPerms = append(readPerms, rp) + writePerms = append(writePerms, rp) - if perm.PermType == authpb.READWRITE || perm.PermType == authpb.WRITE { - writePerms = append(writePerms, &rangePerm{begin: string(perm.Key), end: string(perm.RangeEnd)}) + case authpb.READ: + readPerms = append(readPerms, rp) + + case authpb.WRITE: + writePerms = append(writePerms, rp) } } } - return &unifiedRangePermissions{readPerms: mergeRangePerms(readPerms), writePerms: mergeRangePerms(writePerms)} + return &unifiedRangePermissions{ + readPerms: mergeRangePerms(readPerms), + writePerms: mergeRangePerms(writePerms), + } } func checkCachedPerm(cachedPerms *unifiedRangePermissions, userName string, key, rangeEnd string, write, read bool) bool { @@ -137,7 +145,7 @@ func (as *authStore) isRangeOpPermitted(tx backend.BatchTx, userName string, key return checkCachedPerm(as.rangePermCache[userName], userName, key, rangeEnd, write, read) } - perms := as.makeUnifiedPerms(tx, userName) + perms := getMergedPerms(tx, userName) if perms == nil { plog.Errorf("failed to create a unified permission of user %s", userName) return false