Activities of "EngincanV"

Hi @viswajwalith, there is a community article about passwordless authentication, you can read from here. Can you check it and ensure there are not any steps that you missed?

Hi @david.hurtado, please wrap your create and update methods with try-catch blocks and handle exception by yourself (by using HandleErrorAsync method). => https://support.abp.io/QA/Questions/1523/Blazor-Server-ABP-Exception-Dialog-not-shown#answer-7939465b-3349-3100-2cc1-39fd4fd8c78a

And also, you can check the validations (are granted or not) inside of your create and update methods.

private Validations NewSalesmanValidations { get; set; } //validation that used in your create modal

//...

private async Task CreateNewSalesmanAsync()
{
   try
   {
      //if all validation rules are not validated, simply don't do anything  
      if (NewSalesmanValidations?.ValidateAll() == false) 
      {
         return;
      }
   
      await SalesmanAppService.CreateAsync(NewSalesman);
      await GetSalesmanAsync();
      CreateSalesmanModal.Hide();
   }
   catch (Exception ex)
   {
      await HandleErrorAsync(ex); //handles the exception and prevent app crash
   }
}

Hi @rafal.woznicki, there is no planned relase date for v4.4.3 for now. I will inform you when it's released.

using Microsoft.AspNetCore.Hosting; 
using Microsoft.Data.Sqlite; 
using Microsoft.EntityFrameworkCore; 
using Microsoft.EntityFrameworkCore.Infrastructure; 
using Microsoft.EntityFrameworkCore.Storage; 
using Microsoft.Extensions.DependencyInjection; 
using Volo.Abp; 
using Volo.Abp.EntityFrameworkCore; 
using Volo.Abp.EntityFrameworkCore.Sqlite; 
using Volo.Abp.Identity.EntityFrameworkCore; 
using Volo.Abp.LanguageManagement.EntityFrameworkCore; 
using Volo.Abp.Modularity; 
using Volo.Abp.PermissionManagement.EntityFrameworkCore; 
using Volo.Abp.SettingManagement.EntityFrameworkCore; 
using Volo.Abp.Uow; 
using Volo.Saas.EntityFrameworkCore; 
 
namespace *************.EntityFrameworkCore 
{ 
    [DependsOn( 
        typeof(*************TestBaseModule), 
        typeof(*************EntityFrameworkCoreModule), 
        typeof(AbpEntityFrameworkCoreSqliteModule) 
        )] 
    public class *************EntityFrameworkCoreTestModule : AbpModule 
    { 
        private SqliteConnection _sqliteConnection; 
        public override void ConfigureServices(ServiceConfigurationContext context) 
        { 
 
            ConfigureInMemorySqlite(context.Services); 
            context.Services.AddSingleton<IWebHostEnvironment>(new WebHostEnvironmentMockEntity()); 
        } 
 
        private void ConfigureInMemorySqlite(IServiceCollection services) 
        { 
            _sqliteConnection = CreateDatabaseAndGetConnection(); 
 
            Configure<AbpUnitOfWorkDefaultOptions>(options => 
            { 
                options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; 
            }); 
 
            services.Configure<AbpDbContextOptions>(options => 
            { 
                options.Configure(context => 
                { 
                    context.DbContextOptions.UseSqlite(_sqliteConnection); 
 
                }); 
            }); 
        } 
 
        public override void OnApplicationShutdown(ApplicationShutdownContext context) 
        { 
            _sqliteConnection.Dispose(); 
        } 
 
        private static SqliteConnection CreateDatabaseAndGetConnection() 
        { 
            var connection = new SqliteConnection("Data Source=:memory:"); 
            connection.Open(); 
 
            new *************DbContext( 
                new DbContextOptionsBuilder<*************DbContext>().UseSqlite(connection).Options 
                ).GetService<IRelationalDatabaseCreator>().CreateTables(); 
 
            new IdentityDbContext( 
                new DbContextOptionsBuilder<IdentityDbContext>().UseSqlite(connection).Options 
                ).GetService<IRelationalDatabaseCreator>().CreateTables(); 
 
            new PermissionManagementDbContext( 
               new DbContextOptionsBuilder<PermissionManagementDbContext>().UseSqlite(connection).Options 
               ).GetService<IRelationalDatabaseCreator>().CreateTables(); 
 
            new SettingManagementDbContext( 
                new DbContextOptionsBuilder<SettingManagementDbContext>().UseSqlite(connection).Options 
                ).GetService<IRelationalDatabaseCreator>().CreateTables(); 
 
            new LanguageManagementDbContext( 
               new DbContextOptionsBuilder<LanguageManagementDbContext>().UseSqlite(connection).Options 
               ).GetService<IRelationalDatabaseCreator>().CreateTables(); 
 
            new SaasDbContext( 
               new DbContextOptionsBuilder<SaasDbContext>().UseSqlite(connection).Options 
               ).GetService<IRelationalDatabaseCreator>().CreateTables(); 
 
            return connection; 
        } 
    } 
} 
 

You don't need to specify dependent module contexts in here. You only need to define your own db context (*************DbContext) here. So please update your CreateDatabaseAndGetConnection method as below.

private static SqliteConnection CreateDatabaseAndGetConnection() 
{ 
    var connection = new SqliteConnection("Data Source=:memory:");
   connection.Open();

   var options = new DbContextOptionsBuilder<*************DbContext>()
    .UseSqlite(connection)
    .Options;

    using (var context = new *************DbContext(options))
    {
        context.GetService<IRelationalDatabaseCreator>().CreateTables();
    }

    return connection;
}

Can you add the DomainTenantResolveContributor to TenantResolvers and try again?

DomainTenantResolveContributor: Tries to resolve tenancy name from an url, generally from a domain or subdomain.

Configure<AbpTenantResolveOptions>(options =>
{
    options.AddDomainTenantResolver("{0}.somedomain.com");
                
    options.TenantResolvers.Add(new DomainTenantResolveContributor()); //add DomainTenantResolveContributor
    //...
});

Hi Bernardo, can you remove the $ sign and try again? Because when you define it with $ sign it converts string (because of string interpolation) as "0.somedomain.com" instead of "{0}.somedomain.com".

{0} is the placeholder to determine current tenant's unique name. => https://docs.abp.io/en/abp/4.4/Multi-Tenancy#domain-subdomain-tenant-resolver

Hi @ChetanKumbhar, can you share your ProfileManagementEntityFrameworkCoreTestModule class?

Hi @mrall, probably you are using IHtmlLocalizer<MyResource> please change it to IStringLocalizer<MyResource>. After that change, your localization value won't be html-encoded, it will be view as raw text.

@inject IStringLocalizer<MyResource>

Answer

Can I have an update on the progress for this issue.
My client is waiting for this issue to be resovled.

This issue is closed: https://github.com/abpframework/abp/issues/9589

I don't have acces to view this: https://github.com/volosoft/volo/issues/7206

Thank you

Hi @cellero, the issue will be resolved in v5.0. (Planned release date for v5.0 is November 18)

[Dependency(ReplaceServices = true)] 
[ExposeServices(typeof(AbpSignInManager), typeof(SignInManager<IdentityUser>))] 
public class LitmusSiginManager : AbpSignInManager 
{ 
    private readonly IRepository<AppUser, Guid> _appUserRepository; 
 
    public LitmusSiginManager(IdentityUserManager userManager, 
        IHttpContextAccessor contextAccessor, 
        IUserClaimsPrincipalFactory<Volo.Abp.Identity.IdentityUser> claimsFactory, 
        IOptions<IdentityOptions> optionsAccessor, 
        ILogger<SignInManager<Volo.Abp.Identity.IdentityUser>> logger, 
        IAuthenticationSchemeProvider schemes, 
        IUserConfirmation<Volo.Abp.Identity.IdentityUser> confirmation, 
        IOptions<AbpIdentityOptions> options, 
        IRepository<AppUser, Guid> appUserRepository 
        ) : base(userManager, 
            contextAccessor, 
            claimsFactory, 
            optionsAccessor, 
            logger, 
            schemes, 
            confirmation, 
            options) 
    { 
        _appUserRepository = appUserRepository; 
    } 
 
    public override async Task<SignInResult> PasswordSignInAsync(Volo.Abp.Identity.IdentityUser user, string password, bool isPersistent, bool lockoutOnFailure) 
    { 
        var appUser = await _appUserRepository.FirstOrDefaultAsync(x => x.Id == user.Id); 
 
        if (appUser != null) 
        { 
            if (appUser.Status == AbpUserStatusEnum.InActive) 
                throw new AbpAuthorizationException("User is in InActive state."); 
        } 
 
        return base.PasswordSignInAsync(user, password, isPersistent, lockoutOnFailure).Result; 
    } 
} 

IdentityServerModule :

public class LitmusIdentityServerModule : AbpModule 
{ 
    public override void PreConfigureServices(ServiceConfigurationContext context) 
    { 
        PreConfigure<IdentityBuilder>(identityBuilder => 
        { 
            identityBuilder.AddSignInManager<LitmusSiginManager>(); 
        }); 
    } 
} 

Can you move the related changes to your separated identity module? And also can you check the IdentityUser's namespace? It is important to use Volo.Abp.Identity.IdentityUser type for SignInManager.

Showing 1281 to 1290 of 1343 entries
Learn More, Pay Less
33% OFF
All Trainings!
Get Your Deal
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.0.0-preview. Updated on September 10, 2025, 06:30