Add API key management functionality with views, forms, and templates

This commit is contained in:
Eduardo Silva
2026-02-09 21:59:16 -03:00
parent 533fed2bec
commit a7985ba065
8 changed files with 383 additions and 8 deletions

View File

@@ -1,21 +1,23 @@
import uuid
from django.db import models
from django.utils.translation import gettext_lazy as _
from wireguard.models import WireGuardInstance
class ApiKey(models.Model):
name = models.CharField(max_length=64, unique=True)
token = models.UUIDField(default=uuid.uuid4, unique=True)
allowed_instances = models.ManyToManyField(WireGuardInstance, blank=True, related_name='api_keys')
allow_restart = models.BooleanField(default=True)
allow_reload = models.BooleanField(default=True)
allow_export = models.BooleanField(default=True)
enabled = models.BooleanField(default=True)
name = models.CharField(max_length=64, unique=True, verbose_name=_("Name"))
token = models.UUIDField(default=uuid.uuid4, unique=True, verbose_name=_("Token"))
allowed_instances = models.ManyToManyField(WireGuardInstance, blank=True, related_name='api_keys', verbose_name=_("Allowed Instances"))
allow_restart = models.BooleanField(default=True, verbose_name=_("Allow Restart"))
allow_reload = models.BooleanField(default=True, verbose_name=_("Allow Reload"))
allow_export = models.BooleanField(default=True, verbose_name=_("Allow Export"))
enabled = models.BooleanField(default=True, verbose_name=_("Enabled"))
uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name