Coverage for modules\authentication\migrations\0003_passwordresettoken_and_audit.py: 100%
7 statements
« prev ^ index » next coverage.py v7.16.0, created at 2026-10-17 16:50 +0800
« prev ^ index » next coverage.py v7.16.0, created at 2026-10-17 16:50 +0800
1# Generated manually for password-reset and authentication-audit support.
3import django.db.models.deletion
4import uuid
5from django.conf import settings
6from django.db import migrations, models
9class Migration(migrations.Migration):
10 dependencies = [
11 ('authentication', '0002_alter_membership_role'),
12 ]
14 operations = [
15 migrations.CreateModel(
16 name='AuthAuditEvent',
17 fields=[
18 ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
19 ('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
20 ('updated_at', models.DateTimeField(auto_now=True)),
21 ('event_type', models.CharField(choices=[('LOGIN_SUCCEEDED', 'Login succeeded'), ('LOGIN_FAILED', 'Login failed'), ('PASSWORD_RESET_REQUESTED', 'Password reset requested'), ('PASSWORD_RESET_COMPLETED', 'Password reset completed'), ('REFRESH_TOKEN_REUSED', 'Refresh token reused')], max_length=32)),
22 ('email', models.EmailField(blank=True, max_length=255)),
23 ('ip_address', models.GenericIPAddressField(blank=True, null=True)),
24 ('metadata', models.JSONField(blank=True, default=dict)),
25 ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='auth_audit_events', to=settings.AUTH_USER_MODEL)),
26 ],
27 ),
28 migrations.CreateModel(
29 name='PasswordResetToken',
30 fields=[
31 ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
32 ('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
33 ('updated_at', models.DateTimeField(auto_now=True)),
34 ('token_hash', models.CharField(max_length=64, unique=True)),
35 ('expires_at', models.DateTimeField(db_index=True)),
36 ('used_at', models.DateTimeField(blank=True, null=True)),
37 ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='password_reset_tokens', to=settings.AUTH_USER_MODEL)),
38 ],
39 ),
40 ]