Activities of "Vilasini"

hello maliming thanks for the help issue is resolved

hi mailiming, i need to use the IdentityUserOrganizationUnit in my existing project scenario how can i use it as a Repository. Thanks

hi maliming , Able to use the controller Thanks a lot . can you please explain where the issue occurred and how we can identify it , where do we need to fix the code if there is any Thanks

hi Maliming , i have tried above but still im not able to test my Api function it is not at all hitting the controller can you please help

hello sure PFB code :

Entity table: AuthenticationPolicy
 
public class AuthenticationPolicy : FullAuditedEntity<Guid>, IMultiTenant
{
    public Guid? TenantId { get; set;}
    public string Name { get; set;}
    public string Identity { get; set; }
    public IdentityType IdentityType { get; set;}
    public int MFALevels { get; set;}
    public string Authentications { get; set; }
    public string AlternateAuthentications { get; set; }

}
 
Repository Declaration:

public  interface IAuthenticationPolicyRepository : IRepository<AuthenticationPolicy, Guid>
{
    Task<List<AuthenticationPolicy>> GetListAsync(
        string filterText = null,
        string policyName=null,
        string sorting = null,
        int maxResultCount = int.MaxValue,
        int skipCount = 0,
        CancellationToken cancellationToken = default
    );
    Task<long> GetCountAsync(
        string filterText = null,
        string policyName=null,
        CancellationToken cancellationToken = default);
}
 
Repository Implimentation:

public  class EFCoreAuthenticationPolicyRepository : EfCoreRepository<IdentityProDbContext, AuthenticationPolicy, Guid>, IAuthenticationPolicyRepository
{
    public EFCoreAuthenticationPolicyRepository(IDbContextProvider<IdentityProDbContext> dbContextProvider)
        : base(dbContextProvider)
    {
    }
    public async Task<long> GetCountAsync(
        string filterText = null, 
        string policyName = null, 
        CancellationToken cancellationToken = default)
    {
        var query = ApplyFilter((await GetDbSetAsync()), filterText, policyName);
        return await query.LongCountAsync(GetCancellationToken(cancellationToken));
    }
    public async Task<List<AuthenticationPolicy>> GetListAsync(
        string filterText = null, 
        string policyName = null, 
        string sorting = null, 
        int maxResultCount = int.MaxValue,
        int skipCount = 0,
        CancellationToken cancellationToken = default)
    {
        var query = ApplyFilter((await GetQueryableAsync()), filterText, policyName);
        query = query.OrderBy(string.IsNullOrWhiteSpace(sorting) ? AuthenticationPolicyConsts.GetDefaultSorting(false) : sorting);
        return await query.PageBy(skipCount, maxResultCount).ToListAsync(cancellationToken);
    }
    protected virtual IQueryable<AuthenticationPolicy> ApplyFilter(
        IQueryable<AuthenticationPolicy> query,
        string filtertext,
        string policyName=null)
    {
        return query.WhereIf(!string.IsNullOrWhiteSpace(filtertext), e => e.Name.Contains(filtertext))
                    .WhereIf(!string.IsNullOrWhiteSpace(policyName), e => e.Name.Contains(policyName));
    }
}
 
Entity table: TenantAuthentications 
public class TenantAuthentications : FullAuditedEntity<Guid>,IMultiTenant
{
    public Guid? TenantId { get; set; }
    public bool MFA { get; set; }
    public AuthenticationOptions PrimaryAuthentication { get; set; }
    public AuthenticationOptions SecondaryAuthentication { get; set; }
    public string AlternateAuthentications { get; set; }
    public bool EnableAdaptiveAuthentication { get; set; }
}
 
Repository Declaration :
 
using Volo.Abp.Domain.Repositories;
namespace Volo.Abp.Identity.AuthPolicy
{
    public interface ITenantAuthenticationsRepository : IRepository<TenantAuthentications, Guid>
    {
    }
}
 
Repository Implimentation
public class EFCoreTenantAuthenticatiosRepository : EfCoreRepository<IdentityProDbContext, TenantAuthentications, Guid>, ITenantAuthenticationsRepository
{
    public EFCoreTenantAuthenticatiosRepository(IDbContextProvider<IdentityProDbContext> dbContextProvider)
        :base(dbContextProvider)
    {
    }
}
 
Efcore web module
 
typeof(AbpIdentityProDomainModule),
    typeof(AbpIdentityEntityFrameworkCoreModule))]
public class AbpIdentityProEntityFrameworkCoreModule : AbpModule
{
    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        context.Services.AddAbpDbContext<IdentityProDbContext>(options =>
        {
            options.ReplaceDbContext<IIdentityDbContext, IIdentityProDbContext>();
        });
    }
    public override void OnApplicationInitialization(ApplicationInitializationContext context)
    {
    }
}

Hi,

Here i am providing the code and error log

Code: IAuthenticationPolicyAppService interface :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;

namespace Volo.Abp.Identity.AuthPolicy
{
    public interface IAuthenticationPolicyAppService : IApplicationService
    {
        Task<PagedResultDto<AuthPolicyResponseDto>> GetAllAuthenticationPoliciesListAsync(GetAllRequestDto input);
    }
}

AuthenticationPolicyAppService class :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
using System.Linq.Dynamic.Core;


namespace Volo.Abp.Identity.AuthPolicy
{
    //[Authorize(IdentityPermissions.AuthenticationPolicy.Default)]
    public class AuthenticationPolicyAppService : ApplicationService, IAuthenticationPolicyAppService
    {
        private readonly IAuthenticationPolicyRepository _authenticationPolicyRepository;
        private readonly ITenantAuthenticationsRepository _tenantAuthenticationsRepository;
        private readonly IIdentityUserRepository _identityUserRepository;
        private readonly IOrganizationUnitRepository _organizationUnitRepository;
        private readonly IRepository<IdentityUserOrganizationUnit> _IdentityUserOrganizationUnitRepository;

        public AuthenticationPolicyAppService(IAuthenticationPolicyRepository authenticationPolicyRepository, ITenantAuthenticationsRepository tenantAuthenticationsRepository,
            IIdentityUserRepository identityUserRepository, IOrganizationUnitRepository organizationUnitRepository,
            IRepository<IdentityUserOrganizationUnit> IdentityUserOrganizationUnitRepository)
        {
            _authenticationPolicyRepository = authenticationPolicyRepository;
            _identityUserRepository = identityUserRepository;
            _organizationUnitRepository = organizationUnitRepository;
            _IdentityUserOrganizationUnitRepository = IdentityUserOrganizationUnitRepository;
            _tenantAuthenticationsRepository = tenantAuthenticationsRepository;
        }


        //For Authentication policies...
        public async Task<PagedResultDto<AuthPolicyResponseDto>> GetAllAuthenticationPoliciesListAsync(GetAllRequestDto input)
        {
            var totalCount = await _authenticationPolicyRepository.GetCountAsync(input.Filter, input.PolicyName);
            var items = await _authenticationPolicyRepository.GetListAsync(input.Filter, input.PolicyName, input.Sorting, input.MaxResultCount, input.SkipCount);

            var policiesList = items.Select(x => new AuthPolicyResponseDto
            {
                Name = x.Name,
                IdentityType = x.IdentityType.ToString(),
                Identity = GetUserOrGroupName(x.IdentityType, x.Identity).ToString(),
                MFALevels = x.MFALevels,
                Authentications = x.Authentications,
                AlternateAuthentications = x.AlternateAuthentications

            }).ToList();
            return new PagedResultDto<AuthPolicyResponseDto>
            {
                TotalCount = totalCount,
                Items = policiesList
            };
        }
    }
}

//ITenantPolicyAppservice interface...

using System.Threading.Tasks;
using Volo.Abp.Application.Services;

namespace Volo.Abp.Identity.AuthPolicy
{
    public  interface ITenantPolicyAppService : IApplicationService
    {
        Task<TenantPolicyDto> GetTenantAuthenticationPolicyAsync();

        Task<BaseResponseDto> UpdateTenantAuthenticationPolicy(TenantPolicyDto input);

    }
}

Implimentation...

using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;

namespace Volo.Abp.Identity.AuthPolicy
{
    public class TenantPolicyAppService : ApplicationService, ITenantPolicyAppService
    {
        public readonly ITenantAuthenticationsRepository _tenantAuthenticationsRepository;

        public TenantPolicyAppService (ITenantAuthenticationsRepository tenantAuthenticationsRepository)
        {
            _tenantAuthenticationsRepository = tenantAuthenticationsRepository;
        }
        
        public async Task<TenantPolicyDto> GetTenantAuthenticationPolicyAsync()
        {
            using (CurrentTenant.Change(this.CurrentTenant?.Id))
            {
                var tenantauthpolicy =  _tenantAuthenticationsRepository.GetListAsync().Result.FirstOrDefault();
                return new TenantPolicyDto
                { 
                    MFA = tenantauthpolicy.MFA,
                    PrimaryAuthentication = tenantauthpolicy.PrimaryAuthentication,
                    SecondaryAuthentication =tenantauthpolicy.SecondaryAuthentication,
                    AlternateAuthentications =tenantauthpolicy.AlternateAuthentications,
                    EnableAdaptiveAuthentication =tenantauthpolicy.EnableAdaptiveAuthentication

                };
            }
           
           
        }

        public async Task<BaseResponseDto> UpdateTenantAuthenticationPolicy(TenantPolicyDto input)
        {
           
            using (CurrentTenant.Change(this.CurrentTenant?.Id))
            {
                var updatetenantauthpolicy = _tenantAuthenticationsRepository.GetListAsync().Result.FirstOrDefault();
                if (updatetenantauthpolicy != null)
                {
                    updatetenantauthpolicy.MFA = input.MFA;
                    updatetenantauthpolicy.PrimaryAuthentication = input.PrimaryAuthentication;
                    updatetenantauthpolicy.SecondaryAuthentication = input.SecondaryAuthentication;
                    updatetenantauthpolicy.AlternateAuthentications = input.AlternateAuthentications;
                    updatetenantauthpolicy.EnableAdaptiveAuthentication = input.EnableAdaptiveAuthentication;
                     await _tenantAuthenticationsRepository.UpdateAsync(updatetenantauthpolicy,true);
                }
                else
                {
                    var createpolicy = new TenantAuthentications()
                    {
                        TenantId = this.CurrentTenant?.Id,
                        MFA = input.MFA,
                        PrimaryAuthentication = input.PrimaryAuthentication,
                        SecondaryAuthentication = input.SecondaryAuthentication,
                        AlternateAuthentications = input.AlternateAuthentications,
                        EnableAdaptiveAuthentication = input.EnableAdaptiveAuthentication
                    };
                    await _tenantAuthenticationsRepository.InsertAsync(createpolicy,true);
                }

                return new BaseResponseDto
                {
                    Message = "Success",
                    status = true
                };
            }
        }
    }
} 

This is my code

ErrorLog:

2024-07-19 11:04:17.508 +05:30 [INF] Executing endpoint 'Volo.Abp.Identity.IdentityAuthenticationPoliciesController.GetAllAuthenticationPoliciesListAsync (Volo.Abp.Identity.Pro.HttpApi)'
2024-07-19 11:04:17.512 +05:30 [INF] Route matched with {area = "identity", controller = "AuthenticationPolicies", action = "GetAllAuthenticationPoliciesList", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Volo.Abp.Application.Dtos.PagedResultDto`1[Volo.Abp.Identity.AuthPolicy.AuthPolicyResponseDto]] GetAllAuthenticationPoliciesListAsync(Volo.Abp.Identity.AuthPolicy.GetAllRequestDto) on controller Volo.Abp.Identity.IdentityAuthenticationPoliciesController (Volo.Abp.Identity.Pro.HttpApi).
2024-07-19 11:04:17.533 +05:30 [ERR] ---------- RemoteServiceErrorInfo ----------
{
  "code": null,
  "message": "An internal error occurred during your request!",
  "details": null,
  "data": {
    "ActivatorChain": "Volo.Abp.Identity.IdentityAuthenticationPoliciesController -> Volo.Abp.Identity.AuthPolicy.AuthenticationPolicyAppService"
  },
  "validationErrors": null
}

2024-07-19 11:04:17.534 +05:30 [ERR] An exception was thrown while activating Volo.Abp.Identity.IdentityAuthenticationPoliciesController -> Volo.Abp.Identity.AuthPolicy.AuthenticationPolicyAppService.
Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.Identity.IdentityAuthenticationPoliciesController -> Volo.Abp.Identity.AuthPolicy.AuthenticationPolicyAppService.
 ---> Autofac.Core.DependencyResolutionException: None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'Volo.Abp.Identity.AuthPolicy.AuthenticationPolicyAppService' can be invoked with the available services and parameters:
Cannot resolve parameter 'Volo.Abp.Identity.AuthPolicy.ITenantAuthenticationsRepository tenantAuthenticationsRepository' of constructor 'Void .ctor(Volo.Abp.Identity.AuthPolicy.IAuthenticationPolicyRepository, Volo.Abp.Identity.AuthPolicy.ITenantAuthenticationsRepository, Volo.Abp.Identity.IIdentityUserRepository, Volo.Abp.Identity.IOrganizationUnitRepository, Volo.Abp.Domain.Repositories.IRepository`1[Volo.Abp.Identity.IdentityUserOrganizationUnit])'.
   at Autofac.Core.Activators.Reflection.ReflectionActivator.&lt;&gt;c__DisplayClass12_0.&lt;UseSingleConstructorActivation&gt;b__0(ResolveRequestContext ctxt, Action`1 next)
   at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
   at Autofac.Builder.RegistrationBuilder`3.<>c__DisplayClass41_0.<PropertiesAutowired>b__0(ResolveRequestContext ctxt, Action`1 next)
   at Autofac.Extras.DynamicProxy.RegistrationExtensions.&lt;&gt;c__DisplayClass8_0`3.<EnableInterfaceInterceptors>b__1(ResolveRequestContext ctxt, Action`1 next)
   at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
   --- End of inner exception stack trace ---
   at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
   at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
   at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next)
   at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request)
   at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request)
   at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance)
   at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters)
   at Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider.&lt;&gt;c__DisplayClass6_0.&lt;CreateControllerFactory&gt;g__CreateController|0(ControllerContext controllerContext)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.&lt;InvokeNextExceptionFilterAsync&gt;g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
2024-07-19 11:04:17.536 +05:30 [ERR] ---------- Exception Data ----------
ActivatorChain = Volo.Abp.Identity.IdentityAuthenticationPoliciesController -> Volo.Abp.Identity.AuthPolicy.AuthenticationPolicyAppService

2024-07-19 11:04:17.552 +05:30 [INF] Executing ObjectResult, writing value of type 'Volo.Abp.Http.RemoteServiceErrorResponse'.
2024-07-19 11:04:17.557 +05:30 [INF] Executed action Volo.Abp.Identity.IdentityAuthenticationPoliciesController.GetAllAuthenticationPoliciesListAsync (Volo.Abp.Identity.Pro.HttpApi) in 44.0186ms
2024-07-19 11:04:17.557 +05:30 [INF] Executed endpoint 'Volo.Abp.Identity.IdentityAuthenticationPoliciesController.GetAllAuthenticationPoliciesListAsync (Volo.Abp.Identity.Pro.HttpApi)'
2024-07-19 11:04:17.557 +05:30 [INF] Request finished HTTP/2 GET https://localhost:44347/api/identity/authentication-policies/authentication-policies-list - - - 500 - application/json;+charset=utf-8 74.7870ms
2024-07-19 11:04:17.602 +05:30 [INF] Background job started
2024-07-19 11:04:17.605 +05:30 [INF] Background job complted!! it will run agian
2024-07-19 11:04:20.621 +05:30 [INF] Background job started
2024-07-19 11:04:20.630 +05:30 [INF] Background job complted!! it will run agian
2024-07-19 11:04:23.642 +05:30 [INF] Background job started
  • ABP Framework version: 7.0
  • UI Type: MVC Razor pages
  • Database System: EF Core (SQL Server)
  • Tiered (for MVC) or Auth Server Separated (for Angular): no
  • Exception message and full stack trace:
  • { "error": { "code": null, "message": "An internal error occurred during your request!", "details": null, "data": { "ActivatorChain": "Volo.Abp.Identity.IdentityAuthenticationPoliciesController -> Volo.Abp.Identity.AuthPolicy.TenantPolicyAppService" }, "validationErrors": null } }
  • Steps to reproduce the issue:
  • added a new controller in Identity module when i'm trying to test getting this issue help me out
  • PFB controller created
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Identity.AuthPolicy;

namespace Volo.Abp.Identity
{
    [RemoteService(Name = IdentityProRemoteServiceConsts.RemoteServiceName)]
    [Area(IdentityProRemoteServiceConsts.ModuleName)]
    [ControllerName("AuthenticationPolicies")]
    [Route("api/identity/authentication-policies")]
    public class IdentityAuthenticationPoliciesController: AbpControllerBase
    {
        private readonly ITenantPolicyAppService _tenantPolicyAppService;
        private readonly IAuthenticationPolicyAppService _authenticationPolicyAppService;
        public IdentityAuthenticationPoliciesController(ITenantPolicyAppService tenantPolicyAppService, 
            IAuthenticationPolicyAppService authenticationPolicyAppService)
        {
            _tenantPolicyAppService = tenantPolicyAppService;
            _authenticationPolicyAppService = authenticationPolicyAppService;
        }

        [HttpGet]
        [Route("authentication-policies-list")]
        public virtual Task<PagedResultDto<AuthPolicyResponseDto>> GetAllAuthenticationPoliciesListAsync(GetAllRequestDto input)
        {
            return _authenticationPolicyAppService.GetAllAuthenticationPoliciesListAsync(input);
        }
    }
}
Showing 1 to 7 of 7 entries
Made with ❤️ on ABP v9.1.0-preview. Updated on November 11, 2024, 11:11