Try your search with a different keyword or use * as a wildcard.
using Microsoft.AspNetCore.Mvc.Rendering;
using Nop.Core;
using Nop.Core.Domain.Security;
using Nop.Services.Customers;
using Nop.Services.Security;
using Nop.Web.Framework.Models;
namespace Nop.Web.Framework.Factories;
///
/// Represents the base implementation of the factory of model which supports access control list (ACL)
///
public partial class AclSupportedModelFactory : IAclSupportedModelFactory
{
#region Fields
protected readonly IAclService _aclService;
protected readonly ICustomerService _customerService;
#endregion
#region Ctor
public AclSupportedModelFactory(IAclService aclService,
ICustomerService customerService)
{
_aclService = aclService;
_customerService = customerService;
}
#endregion
#region Methods
///
/// Prepare selected and all available customer roles for the passed model
///
/// ACL supported model type
/// Model
/// A task that represents the asynchronous operation
public virtual async Task PrepareModelCustomerRolesAsync(TModel model) where TModel : IAclSupportedModel
{
ArgumentNullException.ThrowIfNull(model);
//prepare available customer roles
var availableRoles = await _customerService.GetAllCustomerRolesAsync(showHidden: true);
model.AvailableCustomerRoles = availableRoles.Select(role => new SelectListItem
{
Text = role.Name,
Value = role.Id.ToString(),
Selected = model.SelectedCustomerRoleIds.Contains(role.Id)
}).ToList();
}
///
/// Prepare selected and all available customer roles for the passed model by ACL mappings
///
/// ACL supported model type
/// ACL supported entity type
/// Model
/// Entity
/// Whether to ignore existing ACL mappings
/// A task that represents the asynchronous operation
public virtual async Task PrepareModelCustomerRolesAsync(TModel model, TEntity entity, bool ignoreAclMappings)
where TModel : IAclSupportedModel where TEntity : BaseEntity, IAclSupported
{
ArgumentNullException.ThrowIfNull(model);
//prepare customer roles with granted access
if (!ignoreAclMappings && entity != null)
model.SelectedCustomerRoleIds = (await _aclService.GetCustomerRoleIdsWithAccessAsync(entity)).ToList();
await PrepareModelCustomerRolesAsync(model);
}
#endregion
}