diff --git a/webhook/migrations/0002_token_active_token_label.py b/webhook/migrations/0002_token_active_token_label.py
new file mode 100644
index 0000000..149ce7a
--- /dev/null
+++ b/webhook/migrations/0002_token_active_token_label.py
@@ -0,0 +1,22 @@
+# Generated by Django 4.2.5 on 2025-01-27 09:20
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+ dependencies = [
+ ('webhook', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='token',
+ name='active',
+ field=models.BooleanField(default=True, verbose_name='Active'),
+ ),
+ migrations.AddField(
+ model_name='token',
+ name='label',
+ field=models.CharField(default='', max_length=250, verbose_name='Label'),
+ ),
+ ]
diff --git a/webhook/models.py b/webhook/models.py
index 54218c2..04e6109 100644
--- a/webhook/models.py
+++ b/webhook/models.py
@@ -1,7 +1,10 @@
from django.db import models
+from django.utils.translation import gettext_lazy as _
# Create your models here.
class Token(models.Model):
token = models.UUIDField()
+ label = models.CharField(_("Label"), max_length=250, default="")
+ active = models.BooleanField(_("Active"), default=True)
diff --git a/webhook/tables.py b/webhook/tables.py
index 06809ea..981e1ce 100644
--- a/webhook/tables.py
+++ b/webhook/tables.py
@@ -43,6 +43,7 @@ class TokensTable(tables.Table):
)
token = tables.Column(verbose_name=_("Token"), empty_values=())
+ label = tables.Column(verbose_name=_("Label"), empty_values=())
# def render_view_user(self):
# return format_html('')
@@ -71,13 +72,12 @@ class TokensTable(tables.Table):
class Meta:
model = Token
template_name = "idhub/custom_table.html"
- fields = ("token", "lavel", "active")
+ fields = ("token", "label", "active")
def render_active(self, value):
"""
Render icons custom based on active value
"""
- # import pdb; pdb.set_trace()
if value: # if `active` is True
return format_html('')
else: # if `active` is False
diff --git a/webhook/templates/new_token.html b/webhook/templates/new_token.html
new file mode 100644
index 0000000..03355c1
--- /dev/null
+++ b/webhook/templates/new_token.html
@@ -0,0 +1,34 @@
+{% extends "idhub/base_admin.html" %}
+{% load i18n %}
+
+{% block content %}
+
+
+ {{ subtitle }}
+
+{% load django_bootstrap5 %}
+
+{% endblock %}
diff --git a/webhook/views.py b/webhook/views.py
index 50f0b72..e2b2649 100644
--- a/webhook/views.py
+++ b/webhook/views.py
@@ -3,12 +3,13 @@ import json
from django.shortcuts import get_object_or_404, redirect
from django.utils.translation import gettext_lazy as _
from django.views.decorators.csrf import csrf_exempt
-from django.views.generic.edit import DeleteView
+from django.views.generic.edit import DeleteView, CreateView
from django.views.generic.base import View
from django.http import JsonResponse
from django_tables2 import SingleTableView
from pyvckit.verify import verify_vp, verify_vc
from uuid import uuid4
+from django.urls import reverse_lazy
from idhub.mixins import AdminView
from idhub_auth.models import User
@@ -25,7 +26,7 @@ def webhook_verify(request):
return JsonResponse({'error': 'Invalid or missing token'}, status=401)
token = auth_header.split(' ')[1].strip("'").strip('"')
- tk = Token.objects.filter(token=token).first()
+ tk = Token.objects.filter(token=token, active=True).first()
if not tk:
return JsonResponse({'error': 'Invalid or missing token'}, status=401)
@@ -61,7 +62,7 @@ def webhook_issue(request):
return JsonResponse({'error': 'Invalid or missing token'}, status=401)
token = auth_header.split(' ')[1].strip("'").strip('"')
- tk = Token.objects.filter(token=token).first()
+ tk = Token.objects.filter(token=token, active=True).first()
if not tk:
return JsonResponse({'error': 'Invalid or missing token'}, status=401)
@@ -158,10 +159,23 @@ class TokenStatusView(AdminView, DeleteView):
return redirect('webhook:tokens')
-class TokenNewView(AdminView, View):
+class TokenNewView(AdminView, CreateView):
+ title = _("Token management")
+ section = "Credential"
+ subtitle = _('New Tokens')
+ icon = 'bi bi-key'
+ title = "Token"
+ template_name = "new_token.html"
+ model = Token
+ fields = ("label",)
+ success_url = reverse_lazy('webhook:tokens')
+ # def get(self, request, *args, **kwargs):
+ # self.check_valid_user()
+ # Token.objects.create(token=uuid4())
- def get(self, request, *args, **kwargs):
- self.check_valid_user()
- Token.objects.create(token=uuid4())
+ # return redirect('webhook:tokens')
- return redirect('webhook:tokens')
+ def form_valid(self, form):
+ form.instance.token = uuid4()
+ form.save()
+ return super().form_valid(form)