ok let me try
My project is very large, and due to policy restrictions, it's not feasible to share the code. Can you suggest an alternative solution?
Hi,
you can try to create a new uow to create a user.
for example:
Guid userId; using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { var newUserName = await GetUniqueUserNameAsync(input.Name.Trim(), input.Surname.Trim()); var user = new IdentityUser(_guidGenerator.Create(), newUserName.Trim(), input.Email, tenantId); var creationResult = await _identityUserManager.CreateAsync(user, input.Password.Trim()); creationResult.CheckErrors(); await _identityUserManager.SetEmailAsync(user, input.Email.Trim()); await _identityUserManager.SetPhoneNumberAsync(user, input.PhoneNumber.Trim()); user.Name = input.Name.Trim(); user.Surname = input.Surname.Trim(); ...... userId = user.Id; await uow.CompleteAsync(); } var userDetails = await _identityUserManager.GetByIdAsync(userId);
I used above code, But still facing same issue. I've created a class file inside the shared folder and am calling this method from the app service. Since we have a requirement to make this method common, it should be accessible to everyone.
public async Task<bool> CreateAsync(IdentityUserCreateDto input, Guid tenantId)
{
try
{
var newUserName = await GetUniqueUserNameAsync(input.Name.Trim(), input.Surname.Trim());
var user = new IdentityUser(\_guidGenerator.Create(), newUserName.Trim(), input.Email, tenantId);
var creationResult = await \_identityUserManager.CreateAsync(user, input.Password.Trim());
creationResult.CheckErrors();
await \_identityUserManager.SetEmailAsync(user, input.Email.Trim());
await \_identityUserManager.SetPhoneNumberAsync(user, input.PhoneNumber.Trim());
user.Name = input.Name.Trim();
user.Surname = input.Surname.Trim();
var claimsToAdd = new List\<Claim>
{
new Claim(ClaimTypes.Email, input.Email.Trim()),
};
await \_identityUserManager.AddClaimsAsync(user, claimsToAdd);
await \_unitOfWorkManager.Current.SaveChangesAsync();
await assignRoles(input, user);
var userDetails = await \_identityUserManager.GetByIdAsync(user.Id);
if (userDetails != null)
{
userDetails.SetProperty("Status", 1);
userDetails.SetProperty("Language", "en");
}
await \_unitOfWorkManager.Current.SaveChangesAsync();
}
catch (Exception ex)
{
}
}
<br>
After successfully adding the user to the database, I encountered an error when executing the line var userDetails = await _identityUserManager.GetByIdAsync(user.Id);
.
I have verified that the user was added to the database and that the user ID is present and correct.
hi
lowercase.
public class OidcAppService : ApplicationService, IOidcAppService
lowercase issue let me change and try
I need your assistance.
First move
OIDCController
fromHttpApi.Host
toAuthserver
then remove
CallbackPath
fromappsettings
and theAddOpenIdConnect
method.remove
Authorize
fromOIDCController
Use
api/oidc/login
method instead ofauthorize
.Update your logo href link to
<AuthServerURL>api/oidc/login
sure can you pls share working project as well this email id nilesh.nyahal@tasconnect.com
Thanks great, did you make any changes angular or api side ? please let me know i will follow the same steps.