public bool UserHasPermission(UserAndOrganizationDTO userAndOrg, string permissionName) { if (!_permissionsCache.TryGetValue(userAndOrg.UserId, out var permissions)) { permissions = _permissionsDbSet .Where(p => p.Roles.Any(r => r.Users.Any(u => u.UserId == userAndOrg.UserId))) .Where(FilterActiveModules(userAndOrg.OrganizationId)) .Select(x => x.Name) .ToList(); _permissionsCache.TryAdd(userAndOrg.UserId, permissions); } var isPermitted = permissions.Contains(permissionName); return(isPermitted); }
public static TItem GetOrCreate <TItem>(this ICustomCache cache, object key, Func <ICacheEntry, TItem> factory) { if (!cache.TryGetValue(key, out object result)) { ICacheEntry entry = cache.CreateEntry(key); result = factory(entry); entry.SetValue(result); entry.Dispose(); } return((TItem)result); }
public void OnActionExecuting(ActionExecutingContext context) { string cacheKey = GetCacheKey(context.HttpContext.Request); if (!_cache.TryGetValue(cacheKey, out ActionExecutedContext previousResponse)) { return; } context.Result = previousResponse.Result; context.HttpContext.Response.ApplyResponseFromCacheHeader(); }
public async Task Should_Get_Admin_User_Permissions_From_Cache() { _permissionCache.TryGetValue("UserId1", out _).Returns(x => { x[1] = new List <string> { "TEST1_BASIC", "TEST1_ADMIN" }; return(true); }); var permissionGroups = (await _permissionService.GetUserPermissionsAsync("UserId1", 1)).ToList(); Assert.AreEqual(2, permissionGroups.Count); Assert.AreEqual("TEST1_BASIC", permissionGroups.ToArray()[0]); Assert.AreEqual("TEST1_ADMIN", permissionGroups.ToArray()[1]); }
public void Should_Get_Admin_User_Permissions_From_Cache() { IEnumerable <string> permissions; _permissionCache.TryGetValue("UserId1", out permissions).Returns(x => { x[1] = new List <string>() { "TEST1_BASIC", "TEST1_ADMIN" }; return(true); }); var permissionGroups = _permissionService.GetUserPermissions("UserId1", 1); Assert.AreEqual(2, permissionGroups.Count()); Assert.AreEqual("TEST1_BASIC", permissionGroups.ToArray()[0]); Assert.AreEqual("TEST1_ADMIN", permissionGroups.ToArray()[1]); }