A UK buyer can now create their own account at /portal/signup/. The screen creates a Keycloak user through a least-privilege service account (ixg-provisioning: manage-users, view-users) and the matching Django row as a buyer, then sends them through the normal sign-in flow to the portal. Staff status is derived from the role in the OIDC backend rather than asserted, so a self-registered buyer is not staff and does not become staff on a later sign-in. The platform root and the RBAC middleware now route each role to its own portal, which also fixes a redirect loop that the staff fix exposed for non-staff buyers.
20 lines
1.1 KiB
Python
20 lines
1.1 KiB
Python
from django.urls import path
|
|
from . import views
|
|
|
|
app_name = 'portal'
|
|
|
|
urlpatterns = [
|
|
path("signup/", views.SignupView.as_view(), name="signup"),
|
|
path("chat/", views.ChatView.as_view(), name="chat"),
|
|
path("chat/embed/", views.ChatEmbedView.as_view(), name="chat_embed"),
|
|
path('', views.DashboardView.as_view(), name='dashboard'),
|
|
path('batches/', views.BatchListView.as_view(), name='batch_list'),
|
|
path('batches/<uuid:pk>/', views.BatchDetailView.as_view(), name='batch_detail'),
|
|
path('documents/', views.DocumentListView.as_view(), name='document_list'),
|
|
path('documents/<uuid:pk>/download/', views.DocumentDownloadView.as_view(), name='document_download'),
|
|
path('certificates/<uuid:pk>/download/', views.CoADownloadView.as_view(), name='coa_download'),
|
|
path('subscription/', views.SubscriptionView.as_view(), name='subscription'),
|
|
path('compliance/', views.ComplianceView.as_view(), name='compliance'),
|
|
path('help/', views.GuideIndexView.as_view(), name='guide_index'),
|
|
path('help/<path:page_path>/', views.GuideDetailView.as_view(), name='guide_detail'),
|
|
]
|