, поэтому я пытаюсь создать SaaS-приложение с ASP.NET Boilerplate, и я сталкиваюсь с некоторой проблемой следующим образом:
Наблюдая за фреймворком, я заметил, что функция «RegisterAsync» в UserRegistrationManager создает пользователя на основе текущего активного арендатора. Это означает, что если я в данный момент авторизируюсь на арендаторе '1', то при регистрации нового пользователя новый пользователь будет иметь tenantId '1'. С другой стороны, когда я в настоящее время не вошел в систему, если я зарегистрирую нового пользователя, приложение покажет исключение «не может зарегистрировать пользователя хоста».
public async Task<User> RegisterAsync(string name, string surname, string emailAddress, string phoneNumber, string userName, string plainPassword, bool isEmailConfirmed)
{
CheckForTenant();
var tenant = await GetActiveTenantAsync();
var user = new User
{
TenantId = tenant.Id,
Name = name,
Surname = surname,
EmailAddress = emailAddress,
PhoneNumber = phoneNumber,
IsActive = true,
UserName = userName,
IsEmailConfirmed = isEmailConfirmed,
Roles = new List<UserRole>()
};
return user;
}
private void CheckForTenant()
{
if (!AbpSession.TenantId.HasValue)
{
throw new InvalidOperationException("Can not register host users!");
}
}
Приложение, которое я хочу создать, требует, чтобы новый пользователь имел возможность зарегистрироваться вместе с бесплатной пробной версией и затем платной подпиской. Поэтому я считаю, что новый пользователь должен иметь возможность самостоятельно создавать арендатора. Поэтому, если новый пользователь зарегистрируется, он будет вынужден создать нового арендатора, прежде чем он сможет делать какие-либо другие действия в приложении.
Проблема в том, что столбец tenantId в таблице User не может быть пустым, поэтому я могу зарегистрироваться без арендатора. Сначала я думаю назначить всех вновь созданных пользователей арендатором «По умолчанию», но думаю, что это не лучшие практики.
Есть ли способ преодолеть эту проблему или какие-либо упоминания об этом? Заранее спасибо!