Browse Source

Moved the anonymousUserId setting to UserBasketProvider

pull/196/head
Galip Tolga Erdem 3 years ago
parent
commit
d852a717a3
  1. 33
      apps/public-web/src/EShopOnAbp.PublicWeb/ServiceProviders/UserBasketProvider.cs

33
apps/public-web/src/EShopOnAbp.PublicWeb/ServiceProviders/UserBasketProvider.cs

@ -3,7 +3,6 @@ using System.Threading.Tasks;
using EShopOnAbp.BasketService.Services; using EShopOnAbp.BasketService.Services;
using EShopOnAbp.Shared.Hosting.AspNetCore; using EShopOnAbp.Shared.Hosting.AspNetCore;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace EShopOnAbp.PublicWeb.ServiceProviders namespace EShopOnAbp.PublicWeb.ServiceProviders
@ -13,34 +12,40 @@ namespace EShopOnAbp.PublicWeb.ServiceProviders
private HttpContext HttpContext => _httpContextAccessor.HttpContext; private HttpContext HttpContext => _httpContextAccessor.HttpContext;
private readonly IHttpContextAccessor _httpContextAccessor; private readonly IHttpContextAccessor _httpContextAccessor;
private readonly ILogger<UserBasketProvider> _logger;
private readonly IBasketAppService _basketAppService; private readonly IBasketAppService _basketAppService;
public UserBasketProvider( public UserBasketProvider(
IHttpContextAccessor httpContextAccessor, IHttpContextAccessor httpContextAccessor,
ILogger<UserBasketProvider> logger,
IBasketAppService basketAppService) IBasketAppService basketAppService)
{ {
_httpContextAccessor = httpContextAccessor; _httpContextAccessor = httpContextAccessor;
_logger = logger;
_basketAppService = basketAppService; _basketAppService = basketAppService;
} }
public virtual async Task<BasketDto> GetBasketAsync() public virtual async Task<BasketDto> GetBasketAsync()
{ {
try var anonymousUserId = await GetAnonymousUserId();
{
// Get anonymous user id from cookie
HttpContext.Request.Cookies.TryGetValue(EShopConstants.AnonymousUserClaimName,
out string anonymousUserId);
return await _basketAppService.GetAsync(Guid.Parse(anonymousUserId)); return await _basketAppService.GetAsync(Guid.Parse(anonymousUserId));
} }
catch (Exception ex)
// Get anonymous user id from cookie
private async Task<string> GetAnonymousUserId()
{
HttpContext.Request.Cookies.TryGetValue(EShopConstants.AnonymousUserClaimName, out string anonymousUserId);
// Generate guid for anonymous user id and set to cookie for 14 days
if (string.IsNullOrEmpty(anonymousUserId))
{ {
_logger.LogError(ex, ex.Message); anonymousUserId = Guid.NewGuid().ToString();
return null; HttpContext.Response.Cookies.Append(EShopConstants.AnonymousUserClaimName, anonymousUserId,
new CookieOptions
{
SameSite = SameSiteMode.Lax,
Expires = DateTimeOffset.UtcNow.AddDays(14)
});
} }
return anonymousUserId;
} }
} }
} }
Loading…
Cancel
Save