private async Task <Dictionary <string, AuthorizationPolicy> > GetDynamicAuthorizationPoliciesFromPlatformPermissions() { var cacheKey = CacheKey.With(GetType(), "GetDynamicAuthorizationPoliciesFromPlatformPermissions"); var result = await _memoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { cacheEntry.AddExpirationToken(SecurityCacheRegion.CreateChangeToken()); var resultLookup = new Dictionary <string, AuthorizationPolicy>(); foreach (var permission in await _platformSecurityApi.GetPermissionsAsync()) { resultLookup[permission.Id] = new AuthorizationPolicyBuilder().AddRequirements(new PermissionAuthorizationRequirement { Permission = permission.Id }).Build(); } //Register storefront permissions foreach (var permission in SecurityConstants.Permissions.AllPermissions) { resultLookup[permission] = new AuthorizationPolicyBuilder().AddRequirements(new PermissionAuthorizationRequirement { Permission = permission }).Build(); } return(resultLookup); }); return(result); }
public async Task <IdentityResult> DeleteAsync(User user, CancellationToken cancellationToken) { await _platformSecurityApi.DeleteAsyncAsync(new[] { user.UserName }); //Evict user from the cache SecurityCacheRegion.ExpireUser(user.Id); return(IdentityResult.Success); }
private static User PrepareUserResult(ICacheEntry cacheEntry, AutoRestClients.PlatformModuleApi.Models.ApplicationUserExtended userDto) { if (userDto != null) { cacheEntry.SetAbsoluteExpiration(TimeSpan.FromMinutes(1)); cacheEntry.AddExpirationToken(SecurityCacheRegion.CreateChangeToken(userDto.Id)); return(userDto.ToUser()); } return(null); }
private User PrepareUserResult(MemoryCacheEntryOptions options, AutoRestClients.PlatformModuleApi.Models.ApplicationUserExtended userDto) { if (userDto != null) { var user = userDto.ToUser(); options.AddExpirationToken(new PollingApiUserChangeToken(_platformSecurityApi, _options.ChangesPollingInterval)); options.AddExpirationToken(SecurityCacheRegion.CreateChangeToken(userDto.Id)); return(user); } return(null); }
public override async Task <User> FindByLoginAsync(string loginProvider, string providerKey) { var cacheKey = CacheKey.With(GetType(), "FindByLoginAsync", loginProvider, providerKey); return(await _memoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { var userDto = await _commerceCoreApi.GetUserByLoginAsync(loginProvider, providerKey); if (userDto != null) { cacheEntry.AddExpirationToken(SecurityCacheRegion.CreateChangeToken(userDto.Id)); return userDto.ToUser(); } return null; }, cacheNullValue : false)); }
public async Task <IdentityResult> UpdateAsync(User user, CancellationToken cancellationToken) { if (user.Contact != null) { if (user.Contact.IsTransient()) { user.Contact = await _memberService.CreateContactAsync(user.Contact); } else { await _memberService.UpdateContactAsync(user.Contact); } } var dtoUser = user.ToUserDto(); var resultDto = await _platformSecurityApi.UpdateAsyncAsync(dtoUser); //Evict user from the cache SecurityCacheRegion.ExpireUser(user.Id); return(resultDto.ToIdentityResult()); }
private async Task <User> PrepareUserResultAsync(MemoryCacheEntryOptions options, AutoRestClients.PlatformModuleApi.Models.ApplicationUserExtended userDto) { if (userDto != null) { var user = userDto.ToUser(); var orderSearchResult = await _orderModule.SearchAsync(new CustomerOrderSearchCriteria() { CustomerId = user.Id, Take = 0, Skip = 0, }); user.IsFirstTimeBuyer = orderSearchResult.TotalCount == 0; options.AddExpirationToken(new PollingApiUserChangeToken(_platformSecurityApi, _options.ChangesPollingInterval)); options.AddExpirationToken(SecurityCacheRegion.CreateChangeToken(userDto.Id)); return(user); } return(null); }
public override async Task <IdentityResult> AddLoginAsync(User user, UserLoginInfo login) { var updateUser = await FindByIdAsync(user.Id); if (updateUser != null) { updateUser.ExternalLogins.Add(new ExternalUserLoginInfo { LoginProvider = login.LoginProvider, ProviderKey = login.ProviderKey, ProviderDisplayName = login.ProviderDisplayName }); } var resultDto = await _platformSecurityApi.UpdateAsyncAsync(updateUser.ToPlatformUserDto()); //Evict user from the cache SecurityCacheRegion.ExpireUser(user.Id); return(resultDto.ToIdentityResult()); }
public async Task <User> FindByIdAsync(string userId, CancellationToken cancellationToken) { var cacheKey = CacheKey.With(GetType(), "FindByIdAsync", userId); var result = await _memoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { var userDto = await _platformSecurityApi.GetUserByIdAsync(userId); if (userDto != null) { cacheEntry.AddExpirationToken(SecurityCacheRegion.CreateChangeToken(userDto.Id)); return(userDto.ToUser()); } return(null); }, cacheNullValue : false); //Load user associated contact if (result != null && result.ContactId != null) { result.Contact = await _memberService.GetContactByIdAsync(result.ContactId); } return(result); }