Activities of "sumeyye.kurtulus"

I see that the seeder only uses a single RootUrl value, but you need different redirect URI formats for different platforms. In this case, The OpenIddict seeder needs to be modified to support multiple redirect URIs for the mobile client configuration. Here's what needs to change:

// src/YourApp.DbMigrator/appsettings.json
{
  //...
  "OpenIddict": {
    "Applications": {
      //..
      "YourApp_Mobile": {
        "ClientId": "YourApp_Mobile",
        "NativeRootUrl": "exp://localhost:19000",
        "WebRootUrl": "https://localhost",
        "ExpoDevWebRootUrl": "http://localhost:19000"
      },
     //..
    }
  }
}
// src/YourApp.Domain/OpenIddict/OpenIddictDataSeedContributor.cs
public class OpenIddictDataSeedContributor : OpenIddictDataSeedContributorBase, IDataSeedContributor, ITransientDependency
{
    private async Task CreateApplicationsAsync()
    {
        //Mobile Client (dual config: native scheme + web URLs)
        var mobileClientId = configurationSection["YourApp_Mobile:ClientId"];
        if (!mobileClientId.IsNullOrWhiteSpace())
        {
            var mobileNativeRootUrl = configurationSection["YourApp_Mobile:NativeRootUrl"]?.TrimEnd('/');
            var mobileWebRootUrl = configurationSection["YourApp_Mobile:WebRootUrl"]?.TrimEnd('/');
            var mobileExpoDevWebRootUrl = configurationSection["YourApp_Mobile:ExpoDevWebRootUrl"]?.TrimEnd('/');

            var mobileRedirectUris = new List<string>();
            var mobilePostLogoutRedirectUris = new List<string>();

            // Native scheme redirect (e.g. yourapp://)
            if (!mobileNativeRootUrl.IsNullOrWhiteSpace())
            {
                mobileRedirectUris.Add(mobileNativeRootUrl!);
                mobilePostLogoutRedirectUris.Add(mobileNativeRootUrl!);
            }

            // Web redirect via SSL proxy (e.g. https://localhost)
            if (!mobileWebRootUrl.IsNullOrWhiteSpace())
            {
                mobileRedirectUris.Add(mobileWebRootUrl!);
                mobilePostLogoutRedirectUris.Add(mobileWebRootUrl!);
            }

            // Expo Web dev redirect (e.g. http://localhost:19000)
            if (!mobileExpoDevWebRootUrl.IsNullOrWhiteSpace())
            {
                mobileRedirectUris.Add(mobileExpoDevWebRootUrl!);
                mobilePostLogoutRedirectUris.Add(mobileExpoDevWebRootUrl!);
            }

            await CreateOrUpdateApplicationAsync(
                applicationType: OpenIddictConstants.ApplicationTypes.Native,
                name: mobileClientId!,
                type: OpenIddictConstants.ClientTypes.Public,
                consentType: OpenIddictConstants.ConsentTypes.Implicit,
                displayName: "Mobile Application",
                secret: null,
                grantTypes: new List<string> {
                    OpenIddictConstants.GrantTypes.AuthorizationCode,
                    OpenIddictConstants.GrantTypes.Password,
                    OpenIddictConstants.GrantTypes.ClientCredentials,
                    OpenIddictConstants.GrantTypes.RefreshToken
                },
                scopes: commonScopes,
                redirectUris: mobileRedirectUris,
                postLogoutRedirectUris: mobilePostLogoutRedirectUris
            );
        }
    }
}

Hello,

This feature is currently available in the preview version. To use it, you need to switch your application to the latest preview release: 10.1.0-rc.3.

You can follow these documents for guidance:

  • Switching to the preview version:

    https://abp.io/docs/latest/cli#switch-to-preview

  • Solution Explorer documentation:

    https://abp.io/docs/latest/studio/solution-explorer#solution

After switching to the preview version, install the AI Management module as described here: https://abp.io/docs/latest/modules/ai-management

As a final step, update your Angular application configuration.

  • Add the dependency to your package.json file and run the installation:
"@volo/abp.ng.ai-management":"~10.1.0-rc.3"
  • Update your app.config.ts file:
import { provideAIManagementConfig }from'@volo/abp.ng.ai-management/config';
export const appConfig: ApplicationConfig = {
	providers: [
		provideAIManagementConfig(),
   ],
};
  • Add the routes to your application:
export const APP_ROUTES: Routes = [
  {
    path: 'ai-management',
    loadChildren: () => import('@volo/abp.ng.ai-management').then(c => c.createRoutes()),
  },
];

After completing these steps, the AI Management module should be available in your application.

Let me know if you need any further assistance.

Thank you for sharing the related details. However, I cannot produce the same problem on my end. Could you share a minimal reproducible example via e-mail? Here is my address: sumeyye.kurtulus@volosoft.com

Thank you for your cooperation.

Thank you again for your response. Could you please clarify the following points for this specific case?

  1. Please verify that all @abp/ng-* and Angular packages are on compatible versions. If possible, could you share your package.json file?

  2. Is there any custom APP_INITIALIZER or other startup logic that could be affecting this behavior?

  3. Are you able to reproduce the issue locally (without Docker)? If the same error occurs after login in a local environment, it would indicate that the problem is related to Angular/runtime rather than Docker or Nginx.

Hello,

I’ve tried to reproduce the issue on my end, but I wasn’t able to replicate it.

If you’re still seeing the default Nginx page, it’s likely that either a different Dockerfile or build context is being used, or the Angular build is failing. In that case, /app/dist/ventra-hub-structure/browser/index.html may not be getting generated, rather than the Dockerfile pointing to the wrong dist folder.

Could you please confirm whether the Angular build completes successfully within Docker?

Hello, We suggest you to modify the Suite templates like below instead. You can also follow the related documentation https://abp.io/docs/latest/suite/editing-templates

        <ngx-datatable-column name="CreationTime" prop="creationTime">
          <ng-template let-row="row" ngx-datatable-cell-template>
            {{ row.creationTime | date: 'dd/MM/yyyy HH:mm' }}
          </ng-template>
        </ngx-datatable-column>
        <ngx-datatable-column name="LastModificationTime" prop="lastModificationTime">
          <ng-template let-row="row" ngx-datatable-cell-template>
            {{ row.lastModificationTime | date: 'dd/MM/yyyy HH:mm' }}
          </ng-template>
        </ngx-datatable-column>

You can let us know if you need further assistance. Thank you for your cooperation.

Hello,

This issue is likely related to the path reference for the built dist folder. Could you please ensure that the final copy command matches the output generated after running yarn build:prod?

Yes, you’re right. You’ll need to adjust the application configuration based on your test environment. You can refer to this preview documentation for more details: https://abp.io/docs/10.1/framework/ui/react-native?Architecture=Monolith#web-view-recommended---quickest-method

Hello,

Thank you for explaining the problem with details. We have released a latest fix for this matter for the version 10.0.3 You can find the related thread here https://github.com/abpframework/abp/issues/24306.

Updating the ABP version may solve your problem. As a result, a sample generation should be like this

I am glad to hear that your problem has been solved. Thank you for reminding us upon this.

Showing 11 to 20 of 538 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.2.0-preview. Updated on February 17, 2026, 09:10
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.