public void CacheAccessKey(StoreAccessKey key, string accountOrUserId, string storeId)
 {
     _cache.Add("StoreAccessKey:" + accountOrUserId + ":" + storeId,
                key,
                null,
                DateTime.Now.AddMinutes(15.0),
                Cache.NoSlidingExpiration,
                CacheItemPriority.Normal,
                null);
 }
 /// <summary>
 /// Returns the access key for an account to access a store
 /// </summary>
 /// <param name="accountId">The ID of the account requesting access</param>
 /// <param name="storeId">The store to be accessed</param>
 /// <returns>The access key for the store</returns>
 public StoreAccessKey GetAccountAccessKey(string accountId, string storeId)
 {
     var ret = _cache.LookupAccessKey(accountId, storeId);
     if (ret == null)
     {
         var context = GetAccountsContext();
         var access =
             context.StoreAccesss.FirstOrDefault(
                 s => s.AccessStore.Id.Equals(storeId) && s.Grantee.Id.Equals(accountId));
         if (access == null)
         {
             return null;
         }
         ret = new StoreAccessKey(access);
         _cache.CacheAccessKey(ret, accountId, storeId);
     }
     return ret;
 }
 /// <summary>
 /// Returns the access key for a user to access a store
 /// </summary>
 /// <param name="userId">The user requesting access</param>
 /// <param name="storeId">The store to be accessed</param>
 /// <returns>The access key for that store</returns>
 public StoreAccessKey GetUserAccessKey(string userId, string storeId)
 {
     var ret = _cache.LookupAccessKey(userId, storeId);
     if (ret == null)
     {
         var context = GetAccountsContext();
         var account = context.Accounts.FirstOrDefault(a => a.UserTokens.Any(t => t.Id.Equals(userId)));
         if (account == null) return null;
         var access =
             context.StoreAccesss.FirstOrDefault(
                 s => s.AccessStore.Id.Equals(storeId) && s.Grantee.Equals(account));
         if (access == null) return null;
         ret = new StoreAccessKey(access);
         _cache.CacheAccessKey(ret, userId, storeId);
     }
     return ret;
 }
 public void CacheAccessKey(StoreAccessKey key, string accountOrUserId, string storeId)
 {
     return;
 }