Using Django builtin users for user management
This commit is contained in:
parent
5ec4eb7964
commit
042ec3760f
@ -106,6 +106,7 @@ AUTH_PASSWORD_VALIDATORS = [
|
||||
},
|
||||
]
|
||||
|
||||
AUTH_USER_MODEL = 'member.UserAccount'
|
||||
|
||||
# Internationalization
|
||||
# https://docs.djangoproject.com/en/5.2/topics/i18n/
|
||||
|
||||
@ -26,24 +26,24 @@ class Command(BaseCommand):
|
||||
self.stdout.write("🔐 Erstelle Benutzerkonten...")
|
||||
UserAccount.objects.create(
|
||||
person=p0,
|
||||
userName="admin",
|
||||
passwort_hash=make_password("adminpass1234"),
|
||||
username="admin",
|
||||
password=make_password("adminpass1234"),
|
||||
role="superadmin",
|
||||
isActive=True,
|
||||
is_active=True,
|
||||
)
|
||||
UserAccount.objects.create(
|
||||
person=p1,
|
||||
userName="maxadmin",
|
||||
passwort_hash=make_password("adminpass123"),
|
||||
username="maxadmin",
|
||||
password=make_password("adminpass123"),
|
||||
role="admin",
|
||||
isActive=True,
|
||||
is_active=True,
|
||||
)
|
||||
UserAccount.objects.create(
|
||||
person=p2,
|
||||
userName="erikam",
|
||||
passwort_hash=make_password("mitglied456"),
|
||||
username="erikam",
|
||||
password=make_password("mitglied456"),
|
||||
role="mitglied",
|
||||
isActive=True,
|
||||
is_active=True,
|
||||
)
|
||||
|
||||
self.stdout.write(self.style.SUCCESS("✅ Testdaten erfolgreich eingespielt."))
|
||||
|
||||
@ -0,0 +1,105 @@
|
||||
# Generated by Django 5.2.1 on 2025-06-15 15:41
|
||||
|
||||
import django.contrib.auth.models
|
||||
import django.contrib.auth.validators
|
||||
import django.utils.timezone
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('auth', '0012_alter_user_first_name_max_length'),
|
||||
('member', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='useraccount',
|
||||
options={'verbose_name': 'user', 'verbose_name_plural': 'users'},
|
||||
),
|
||||
migrations.AlterModelManagers(
|
||||
name='useraccount',
|
||||
managers=[
|
||||
('objects', django.contrib.auth.models.UserManager()),
|
||||
],
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='useraccount',
|
||||
name='isActive',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='useraccount',
|
||||
name='lastLogin',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='useraccount',
|
||||
name='passwort_hash',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='useraccount',
|
||||
name='userName',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='useraccount',
|
||||
name='date_joined',
|
||||
field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='useraccount',
|
||||
name='email',
|
||||
field=models.EmailField(blank=True, max_length=254, verbose_name='email address'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='useraccount',
|
||||
name='first_name',
|
||||
field=models.CharField(blank=True, max_length=150, verbose_name='first name'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='useraccount',
|
||||
name='groups',
|
||||
field=models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='useraccount',
|
||||
name='is_active',
|
||||
field=models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='useraccount',
|
||||
name='is_staff',
|
||||
field=models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='useraccount',
|
||||
name='is_superuser',
|
||||
field=models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='useraccount',
|
||||
name='last_login',
|
||||
field=models.DateTimeField(blank=True, null=True, verbose_name='last login'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='useraccount',
|
||||
name='last_name',
|
||||
field=models.CharField(blank=True, max_length=150, verbose_name='last name'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='useraccount',
|
||||
name='password',
|
||||
field=models.CharField(default='changeme123', max_length=128, verbose_name='password'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='useraccount',
|
||||
name='user_permissions',
|
||||
field=models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='useraccount',
|
||||
name='username',
|
||||
field=models.CharField(default='username', error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
@ -1,20 +1,17 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import AbstractUser
|
||||
from django.utils import timezone
|
||||
from .Person import Person
|
||||
|
||||
|
||||
class UserAccount(models.Model):
|
||||
class UserAccount(AbstractUser):
|
||||
person = models.ForeignKey(Person, on_delete=models.CASCADE, related_name='benutzerkonten')
|
||||
userName = models.CharField(max_length=150, unique=True)
|
||||
passwort_hash = models.CharField(max_length=128)
|
||||
role = models.CharField(max_length=50, choices=[
|
||||
('mitglied', 'Mitglied'),
|
||||
('geraetewart', 'Gerätewart'),
|
||||
('kommandant', 'Kommandant'),
|
||||
('admin', 'Administrator'),
|
||||
])
|
||||
isActive = models.BooleanField(default=True)
|
||||
lastLogin = models.DateTimeField(null=True, blank=True)
|
||||
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.benutzername} ({self.rolle})"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user