Ends in:
7 DAYS
21 HRS
5 MIN
36 SEC
Ends in:
7 D
21 H
5 M
36 S

Activities of "berkansasmaz"

Hi,

The point we are trying to test here should not be Quartz. Currently your tests depend on Quartz, ie the behavior of a library, but this is not a good method.

In my view changing your Execute method as follows provides a more testable environment:

        public override async Task Execute(IJobExecutionContext context)
        {
            Logger.LogInformation("Starting:  EventReminderWorker...");

            
            // It might be better to write tests for this service
            await ServiceProvider
                .GetRequiredService<YourOperationService>() 
                .EventReminder();
            
            
            Logger.LogInformation("Completed: EventReminderWorker...");
        }

Hi,

You can start by creating a class in the MyProjectName.Application project. Here is my file structure of the AppService I created:

Then you can customize it as follows 👇👇

    [Dependency(ReplaceServices = true)]
    [ExposeServices(typeof(IIdentityUserAppService), typeof(IdentityUserAppService), typeof(CustomIdentityUserAppService))]
    public class CustomIdentityUserAppService : IdentityUserAppService
    {
        public CustomIdentityUserAppService(IdentityUserManager userManager, IIdentityUserRepository userRepository, IIdentityRoleRepository roleRepository, IOrganizationUnitRepository organizationUnitRepository, IIdentityClaimTypeRepository identityClaimTypeRepository, IdentityProTwoFactorManager identityProTwoFactorManager, IOptions<IdentityOptions> identityOptions, IDistributedEventBus distributedEventBus) 
            : base(userManager, userRepository, roleRepository, organizationUnitRepository, identityClaimTypeRepository, identityProTwoFactorManager, identityOptions, distributedEventBus)
        {
        }

        public override async Task<IdentityUserDto> CreateAsync(IdentityUserCreateDto input)
        {
            var identityUserDto = await base.CreateAsync(input);

            // ...
            Console.WriteLine("Sending email...");
            
            return identityUserDto;
        }
    }

For more information you can check this document.

Related answer: https://support.abp.io/QA/Questions/1668/Overriding-UI-of-Login-Page---Identity-Server#answer-3bdcd901-078a-260e-5aae-39fe9a763488

Actually, I faced the same problem, and deleting the following two lines that I said in my previous answer solved my problem.

Then remove the following two lines from the ConfigureAuthentication method in MyProjectNamePublicWebModule.

    options.DefaultScheme = "Cookies";
    options.DefaultChallengeScheme = "oidc";

I think you can search other places where this is used and delete and test the ones you find one by one.

However, since this issue has been resolved, I'm closing this here.

I open an internal issue for the production service to use the standard ABP microservice service template.

Hi,

To do this, you need to override the OnPostAsync method;

        // For example
        public override async Task<IActionResult> OnPostAsync(string action)
        {
            Console.WriteLine("OnPost - Before");
            var result = await base.OnPostAsync(action);
            Console.WriteLine("OnPost - After");

            return result;
        }

Then remove the following two lines from the ConfigureAuthentication method in MyProjectNamePublicWebModule.

    options.DefaultScheme = "Cookies";
    options.DefaultChallengeScheme = "oidc";

The final state should be as in the picture;

Finally, add the following code to the appsettings.json file of the MyProjectName.Web.Public project:

  "ConnectionStrings": {
    "Default": "MY-CONNECTION-STRING"
  }

You can try to run the application and login to the public web side.

Note: If you encounter a problem like the picture below after logging in, remove the relevant places from MyProjectNamePublicMenuContributor.

As a result, you can now login via the Public web application and customize it as you wish.

Hi Albert :)

The password for Redis can be given via appsettings.json as in the picture below.

I haven't tried it as environment variables because if it reads from appsettings.json, we can be sure that it will read it as environment variables as well. For more information you can check here.

Hi,

In our previous conversations, you did not say that you want to do it on the public web side.

As a solution: Compare the MyProjectNameWebPublicModule in the MyProjectName.Web.Public project with the MyProjectNameIdentityServerModule in the MyProjectName.IdentityServer project and add the missing ones to the MyProjectNameWebPublicModule. As a result, you will reach the view in the image below.

Please let us know if it works after you try it.

Hi,

To do this, you create a common Web project (eg MyProjectName.Web.Common) and move all the information you will use in common, such as MyProjectNameMenuContributor, there. Both projects must have a reference here.

There are two difficulties here:

  1. For example, you must depend on GroupName for AuditLogs menu and some projects for required permissions, if any, so you can remove them from MyProjectName.Web to not reference them in two different places because those dependencies will already come with MyProjectName.Web.Common.

  2. You must get the full URL information for the menus, you can do this in 3 ways. a. Hard coded :( b. By creating a class that holds your URL information to the MyProjectName.Domain.Shared project.

    public static class MyProjectNameExternalUrls
    {
#if DEBUG
        public const string MyProjectNameAccount = "https://localhost:44333";
        public const string MyProjectNameWeb = "https://localhost:44325";
#else
        public const string MyProjectNameAccount = "https://account.mydomain.io";
        public const string MyProjectNameWeb = "https://mydomain.io";
#endif
    }

The advantage of this is that the menu urls change according to the environment, and the disadvantage is that it duplicates the URL information. Because this information is already available in appsettings.json.

c. You can create the structure that suits your needs by using the Options pattern.

In my opinion, the shortest and acceptable one is to create a class like MyProjectNameExternalUrls, but if you have the time, the best solution is to design the necessary structure using the options pattern.

I hope the information I have provided will be of use to you :)

Thank you for reporting the issue.

I tested this situation and faced a similar situation.

I'm opening an internal issue about this because the problem only exists in the Lepton theme. By the way, the ticket refunded.

Showing 321 to 330 of 354 entries
Made with ❤️ on ABP v9.1.0-preview. Updated on November 20, 2024, 13:06