From 229acae260ce727a2cf7f9aa4eb389c73b00dbaa Mon Sep 17 00:00:00 2001 From: Fabricio Catae Date: Wed, 22 Feb 2017 00:49:29 -0300 Subject: [PATCH] Removed try/catch from VerifyUserAccessToResource exception (#4) --- .../Repositories/PermissionRepository.cs | 99 +++++++++++++------ 1 file changed, 68 insertions(+), 31 deletions(-) diff --git a/src/Arda.Permissions/Repositories/PermissionRepository.cs b/src/Arda.Permissions/Repositories/PermissionRepository.cs index 91828ad..5a2455e 100644 --- a/src/Arda.Permissions/Repositories/PermissionRepository.cs +++ b/src/Arda.Permissions/Repositories/PermissionRepository.cs @@ -212,44 +212,81 @@ public void DeleteUser(string uniqueName) } } - public bool VerifyUserAccessToResource(string uniqueName, string module, string resource) + CacheViewModel GetUserPermissionsCached(string uniqueName) { + CacheViewModel cachedView = null; + byte[] arraySerializedCached = null; + + if (uniqueName == null) + throw new ArgumentNullException("GetUserPermissionsCached(uniqueName: null)"); + try { - var propertiesSerializedCached = Util.GetString(_cache.Get(uniqueName)); - if (propertiesSerializedCached != null) - { - var permissions = new CacheViewModel(propertiesSerializedCached).Permissions; - - var perm = (from p in permissions - where p.Resource.ToLower().Equals(resource) && p.Module.ToLower().Equals(module) - select p).First(); + arraySerializedCached = _cache.Get(uniqueName); + } + catch(StackExchange.Redis.RedisConnectionException) + { + // Ignore transient network issues + } - if (perm != null) - { - return true; - } - else - { - return false; - } - } - else - { - return false; - } + if( arraySerializedCached != null ) + { + var propertiesSerializedCached = Util.GetString(arraySerializedCached); + cachedView = new CacheViewModel(propertiesSerializedCached); } - catch (Exception ex) + + return cachedView; + } + + public bool VerifyUserAccessToResource(string uniqueName, string module, string resource) + { + // THIS IMPLEMENTATION IS WRONG! + // If the cache is clean, then it will not properly verify the user access + + //try + //{ + // var propertiesSerializedCached = Util.GetString(_cache.Get(uniqueName)); + // if (propertiesSerializedCached != null) + // { + // var permissions = new CacheViewModel(propertiesSerializedCached).Permissions; + + // var perm = (from p in permissions + // where p.Resource.ToLower().Equals(resource) && p.Module.ToLower().Equals(module) + // select p).First(); + + // return (perm != null); + // } + // else + // { + // return false; + // } + //} + //catch (Exception ex) + //{ + // if (ex.Message == "Sequence contains no elements") + // { + // return false; + // } + // else + // { + // throw; + // } + //} + + var cachedView = GetUserPermissionsCached(uniqueName); + + if (cachedView != null) { - if (ex.Message == "Sequence contains no elements") - { - return false; - } - else - { - throw; - } + var permissions = cachedView.Permissions; + + var perm = (from p in permissions + where p.Resource.ToLower().Equals(resource) && p.Module.ToLower().Equals(module) + select p).First(); + + return (perm != null); } + + return false; } public bool VerifyIfUserIsInUserPermissionsDatabase(string uniqueName)