Activities of "ian@order2invoice.com"

Check the docs before asking a question: https://docs.abp.io/en/commercial/latest/ Check the samples, to see the basic tasks: https://docs.abp.io/en/commercial/latest/samples/index The exact solution to your question may have been answered before, please use the search on the homepage.

  • ABP Framework version: v2.9.0X
  • UI type: Angular
  • Tiered (MVC) or Identity Server Seperated (Angular): no
  • Exception message and stack trace:

[14:38:36 INF] Migrating schema for TestTenant tenant database... [14:38:37 ERR] Instance failure. System.InvalidOperationException: Instance failure. at Microsoft.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover, SqlAuthenticationMethod authType, SqlAuthenticationProviderManager sqlAuthProviderManager) at Microsoft.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) at Microsoft.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) at Microsoft.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) at Microsoft.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling, String accessToken, DbConnectionPool pool, SqlAuthenticationProviderManager sqlAuthProviderManager) at Microsoft.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at Microsoft.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at Microsoft.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at Microsoft.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at Microsoft.Data.ProviderBase.DbConnectionPool.WaitForPendingOpen() --- End of stack trace from previous location where exception was thrown --- at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnectionAsync(Boolean errorsExpected, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnectionAsync(Boolean errorsExpected, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenAsync(CancellationToken cancellationToken, Boolean errorsExpected) at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.<>c__DisplayClass20_0.<b__0>d.MoveNext()

--- End of stack trace from previous location where exception was thrown --- at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.<>c__DisplayClass20_0.<b__0>d.MoveNext()

--- End of stack trace from previous location where exception was thrown --- at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func4 operation, Func4 verifySucceeded, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.ExistsAsync(CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.MigrateAsync(String targetMigration, CancellationToken cancellationToken) at Orion.EntityFrameworkCore.EntityFrameworkCoreOrionDbSchemaMigrator.MigrateAsync() in C:\Code\Orion\aspnet-core\src\Orion.EntityFrameworkCore.DbMigrations\EntityFrameworkCore\EntityFrameworkCoreOrionDbSchemaMigrator.cs:line 28 at Orion.Data.OrionDbMigrationService.MigrateDatabaseSchemaAsync(Tenant tenant) in C:\Code\Orion\aspnet-core\src\Orion.Domain\Data\OrionDbMigrationService.cs:line 84 at Orion.Data.OrionDbMigrationService.MigrateAsync() in C:\Code\Orion\aspnet-core\src\Orion.Domain\Data\OrionDbMigrationService.cs:line 63 at Nito.AsyncEx.Synchronous.TaskExtensions.WaitAndUnwrapException(Task task) at Nito.AsyncEx.AsyncContext.<>c__DisplayClass15_0.b__0(Task t)

at System.Threading.Tasks.ContinuationTaskFromTask.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__274_0(Object obj) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location where exception was thrown --- at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) --- End of stack trace from previous location where exception was thrown --- at Nito.AsyncEx.Synchronous.TaskExtensions.WaitAndUnwrapException(Task task) at Nito.AsyncEx.AsyncContext.Run(Func1 action) at Volo.Abp.Threading.AsyncHelper.RunSync(Func1 action) ** at Orion.DbMigrator.Program.Main(String[] args) in C:\Code\Orion\aspnet-core\src\Orion.DbMigrator\Program.cs:line 28**

  • Steps to reproduce the issue: I have tried multiple connection strings including the one used for initial migration and keep getting this error?

Host string used for Intial migrations: "Server=DESKTOP-L1E8946\SQLEXPRESS; Trusted_Connection=True; Database=ORION"

Tring used when getting the error above: "Server=DESKTOP-L1E8946\SQLEXPRESS; Trusted_Connection=True; Database=TestTenant"

Thanks Apler,

I have looked at the permissions system and the multi-tenant modules are I have the following issues. These are things we use to manage tenants in our current system that we need to explore in abp.io before full implementation. Which of there can we acheive these?

  1. Can we log in as a "host" user to a tenant. If we do this by creating a new user called, say, HostAdmin can that be hidden from the tenant in the user list. We need this so we can log into a tenant and check their data live or do admin tasks for them.
  2. There are permissions that we want the HostAdmin to set for tenants without letting them see or know about them. Also we don't want to show permissions if they don't have access to the feature.
  3. We only want to show localisation and settings associated with allowed permissions and features.
  4. A way to "loop" through all tenants and update permissions, localosations or settings globally access all tenants..

For 1, 2 and 3 I think I would need override services to introduce a filter to the result, But I am having trouble getting this to work. Perhaps you can provide an example.

Finally we wnt to persist permissions in a database. The doumentation ways to look at permission management module documentation, but it is TBD. when will this be available.

Thanks. So I am still having following issues to get setting working. Can you help.

  1. Can I call the setting page for a User as well as a tenant
  2. how can I specify a setting as admin only
  3. how do I add a select in the interface.

Thanks.

I can see the settings page in as admin. But I can't find where to make tenant settings available for the tenant.

Also how does a tenant see only their users and change settings for those user?

And how can users change setting their are allowed to change.

Or do need to write all that.

  • ABP Framework version: v2.9
  • UI type: Angular
  • Tiered (MVC) or Identity Server Seperated (Angular): no

Relating to Settings and Features.

  1. One of our most used API calls needs to receive up to 30 settings to create data for a View Model. We are concerned about the time this will take on each call. Is the settings System suitable for this style of usage? Will it be efficient?
  2. Thoughout our app we need to check both if a Feature is enabled and a Setting indicating is a particular user can use that feature (e.g. Invoice Feature is enabled for a tenant, but only some users have access). What would be the most efficient way to implement this?
  • ABP Framework version: v2.9
  • UI type: Angular
  • Tiered (MVC) or Identity Server Seperated (Angular): no

Relating to Settings and Features.

  1. One of our most used API calls needs to receive up to 30 settings to create data for a View Model. We are concerned about the time this will take on each call. Is the settings System suitable for this style of usage? Will it be efficient?
  2. Thoughout our app we need to check both if a Feature is enabled and a Setting indicating is a particular user can use that feature (e.g. Invoice Feature is enabled for a tenant, but only some users have access). What would be the most efficient way to implement this?

ut where is the register function?

Thanks Mehmet,

Almost there.

  1. Registration: If I want to process further information, like tenant name to create a new tenant for the user do I need to do another call to the server in the finalise clause? Or should I create a new endpoint to emulate the register call. If the latter, What is happening in this call. Is it simply creating a user, or is there more I need to do, or can to create an account service like in the easyCrm example and call registration that way.
 this.accountService.register(newUser)
  1. Forgotten User: The logic and emails for Forgotten User is together in this.accountService.sendPasswordResetCode. If I am using my own emailer I need to replace this with my own endpoint. What do I need to send. In .Net Core Identity I would do something like this but I don't know what to do is this case because I can't see the code.
         ...
         var user = await _userManager.FindByEmailAsync(Input.Email);
         var code = await _userManager.GeneratePasswordResetTokenAsync(user);
         var callbackUrl = Url.ResetPasswordCallbackLink(user.Id, code, Request.Scheme);
         ...

Hi Mehmet,

The above works thanks. Thanks.

However we need to provide our own Forget Password Page (we need to user Mailgun for emails which we can't find a way of doing within the existing framework), and Registration Page (we register a company, not a user). The links to both of these are hidden in the card-body as follows

<div class="card-body"> <router-outlet></router-outlet> </div>

Is there a way of modifying these to links to take user to our own pages?

Almost there. So finally how do I make the starter templete open up directly with the login screen rather that the public page with a login button? I can find the path in app-routing.module.ts?

Showing 11 to 20 of 34 entries
Made with ❤️ on ABP v8.2.0-preview Updated on March 25, 2024, 15:11