Add AccessFailureLogclass to models to keep trace of all failed logins

This commit is contained in:
Gregory DAVID 2022-03-15 09:40:02 +00:00 committed by Aleksi Häkli
parent 110fe905eb
commit da7a9b25ed
2 changed files with 42 additions and 0 deletions

View file

@ -0,0 +1,30 @@
# Generated by Django 3.2.12 on 2022-03-15 03:00
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('axes', '0007_alter_accessattempt_unique_together'),
]
operations = [
migrations.CreateModel(
name='AccessFailureLog',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('user_agent', models.CharField(db_index=True, max_length=255, verbose_name='User Agent')),
('ip_address', models.GenericIPAddressField(db_index=True, null=True, verbose_name='IP Address')),
('username', models.CharField(db_index=True, max_length=255, null=True, verbose_name='Username')),
('http_accept', models.CharField(max_length=1025, verbose_name='HTTP Accept')),
('path_info', models.CharField(max_length=255, verbose_name='Path')),
('attempt_time', models.DateTimeField(auto_now_add=True, verbose_name='Attempt Time')),
('locked_out', models.BooleanField(blank=True, default=False, verbose_name='Access lock out')),
],
options={
'verbose_name': 'access failure',
'verbose_name_plural': 'access failures',
},
),
]

View file

@ -21,6 +21,18 @@ class AccessBase(models.Model):
ordering = ["-attempt_time"]
class AccessFailureLog(AccessBase):
locked_out = models.BooleanField(_("Access lock out"), null=False, blank=True, default=False)
def __str__(self):
locked_out_str = ' locked out' if self.locked_out else ''
return f"Failed access: user {self.username}{locked_out_str} on {self.attempt_time} from {self.ip_address}"
class Meta:
verbose_name = _("access failure")
verbose_name_plural = _("access failures")
class AccessAttempt(AccessBase):
get_data = models.TextField(_("GET Data"))