Machine users

This commit is contained in:
Tim Lorsbach
2026-10-07 14:59:57 +02:00
parent 8dc0e5e7a3
commit d63c40e041
6 changed files with 153 additions and 10 deletions
+30
View File
@@ -84,6 +84,17 @@ class User(AbstractUser):
USERNAME_FIELD = "email"
REQUIRED_FIELDS = ["username"]
class PrincipalType(models.IntegerChoices):
USER = 0, "User"
APP = 10 , "App"
principal_type = models.IntegerField(
choices=PrincipalType,
default=PrincipalType.USER,
)
app_details = models.OneToOneField("epdb.AppDetails", on_delete=models.CASCADE, null=True, blank=True)
def get_name(self):
return self.username
@@ -103,6 +114,25 @@ class User(AbstractUser):
return self.default_setting
class AppDetails(models.Model):
owner = models.ForeignKey(User, on_delete=models.CASCADE)
client_id = models.TextField(blank=False, null=False, verbose_name="Client ID")
display_name = models.TextField(blank=False, null=False, verbose_name="Display Name")
secret_allowed = models.BooleanField(default=False)
data_pool = models.ForeignKey("epdb.Group", null=True, blank=True, on_delete=models.SET_NULL)
class PESAllowance(models.IntegerChoices):
NONE = 0, "None"
NON_SECRET = 10 , "Non Secret"
SECRET = 20, "Secret"
pes_allowance = models.IntegerField(
choices=PESAllowance,
default=PESAllowance.NONE,
)
class APIToken(TimeStampedModel):
"""
API authentication token for users.