feat: implement password setup link for tenant registration
When admin approves tenant registration: - Owner account created in tenant schema (in addition to admin@localhost) - Owner assigned 'owner' role with full permissions - Password setup email sent with secure 7-day token link - Owner sets password via link and auto-logs into their shop Key changes: - Added password_setup_token fields to TenantRegistration model - Created tenants/services.py with formatted email service - Modified _approve_registration to create owner account - Added password_setup_confirm view with token validation - Created password setup template and URL route - Added admin action to resend password setup emails Security: - Token expires after 7 days - Password not transmitted in email (secure setup link) - Owner account inactive until password set - Admin@localhost preserved for system administrator access 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -182,6 +182,29 @@ class TenantRegistration(models.Model):
|
||||
verbose_name="Созданный тенант"
|
||||
)
|
||||
|
||||
# Поля для установки пароля владельцем
|
||||
password_setup_token = models.UUIDField(
|
||||
null=True,
|
||||
blank=True,
|
||||
unique=True,
|
||||
verbose_name="Токен установки пароля",
|
||||
help_text="UUID токен для ссылки установки пароля владельцем"
|
||||
)
|
||||
|
||||
password_setup_token_created_at = models.DateTimeField(
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Дата создания токена",
|
||||
help_text="Когда был создан токен установки пароля (действителен 7 дней)"
|
||||
)
|
||||
|
||||
owner_notified_at = models.DateTimeField(
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Дата уведомления владельца",
|
||||
help_text="Когда было отправлено письмо владельцу с ссылкой установки пароля"
|
||||
)
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Заявка на регистрацию"
|
||||
verbose_name_plural = "Заявки на регистрацию"
|
||||
|
||||
Reference in New Issue
Block a user