I got the idea from reading other posts in this forum that I can provide Identity & Authorization to ABP using my own interface implementations instead of using Zero. My User and Role stuff isn't quite like what Zero wants. I see that there are two articles in ABP's documentation that hint at what I need to do but I still don't know exactly what to do. I also have the idea that if I implement the interfaces correctly, I can use ABP's declarative permissions approach on the Application Services.
One of the core problems I have with the Zero table structure is that it assumes a User has a Role. In my company, a User may belong to more than one Organization and they may not have the same role in each Org. The Zero table structure and Permission methods don't take Organization into account.
For example, this method in AbpUserManager just needs User and Permission.
public virtual async Task<bool> IsGrantedAsync(long userId, string permissionName)
A method that I need would look like this
public virtual async Task<bool> IsGrantedAsync(long userId, int organizationId, string permissionName)
To completely replace AbpZero is too much work since it does a lot and is hard to follow. I hope that implementing _just_what ABP needs will be simpler. My table structures to support User-Organization-Role already exist.
While waiting for a response, I'll watch some Pluralsight courses on ASP.NET Identity & Authorization.
I ran the 'update-database [connect string]' command in Package Manager to create a whole new database so I could compare the columns to my production database. I found I needed to add AuthenticationSource:
ALTER TABLE dbo.AbpUsers ADD AuthenticationSource nvarchar(64) NULL
I upgraded to ABP 0.6.3.1 and Zero 0.6.3.4 and now I get an HTTP 500 at userManager.LoginAsync of AccountController.cs that carries this in the Response Body:
Exception Details: System.Data.SqlClient.SqlException: Invalid column name 'AuthenticationSource'.