protected override void CachePermission(IPermissionItem permission) { lock (lockPad) { CachePermissionInternal(permission); } }
public override IPermissionItem GetPermission(long resourceId, long roleNumber) { VerifyPermissionAreLoaded(); PermissionList permissionList; IPermissionItem permission = null; if (permissionCache.TryGetValue(resourceId, out permissionList)) { if (permissionList.Contains(roleNumber)) { permission = permissionList[roleNumber]; } } else { //permission is not cached let's find it from the database permission = PermissionDb.GetPermission(resourceId, roleNumber); if (permission == null) { //permission does not exist in the database either. probably is a new permission. return(null); } //cache this permission lock (lockPad) { CachePermissionInternal(permission); } } return(permission); }
void CachePermissionInternal(IPermissionItem permission) { if (permission == null) { throw new ArgumentNullException(nameof(permission)); } PermissionList resourcePerms; if (permissionCache.TryGetValue(permission.ResourceId, out resourcePerms)) { resourcePerms.Add(permission); } else { resourcePerms = new PermissionList { permission }; permissionCache.Add(permission.ResourceId, resourcePerms); } }
/// <summary> /// Caches the permission. /// </summary> /// <param name="permission">The permission.</param> protected abstract void CachePermission(IPermissionItem permission);
public void Update(IPermissionItem permissionItem) { Insert(permissionItem.ResourceId, permissionItem.RoleNumber, permissionItem.PermValue); }