diff --git a/applications/models.py b/applications/models.py index 33fc2eca58c5c78c0dce1483ae5f9d81a5526f34..fa32ec28188fb954d46b70325d62bfbb3d8c6d37 100644 --- a/applications/models.py +++ b/applications/models.py @@ -1,3 +1,5 @@ +from uuid import uuid4 + from django.contrib.auth import get_user_model from django.contrib.auth.models import Group from django.conf import settings @@ -127,7 +129,8 @@ class Application(ProvAbleModel, ProvApplicationModel, BaseAppDataModel): if self.proxy_user: return self.proxy_user - proxy_username = 'application-proxy-' + slugify(self.name) + # Add random UUID to username to allow multiple applications with the same name + proxy_username = 'application-proxy-' + slugify(self.name) + str(uuid4()) proxy_user = get_user_model().objects.create_user(proxy_username) # Create an API access token for the proxy user diff --git a/datasources/templates/datasources/datasource/manage_access.html b/datasources/templates/datasources/datasource/manage_access.html index 11ce9bdce97f4cf53ac318d7aa07e6c5467234ee..014e49572c01d74888b46ab1054a46c84e5ae9cf 100644 --- a/datasources/templates/datasources/datasource/manage_access.html +++ b/datasources/templates/datasources/datasource/manage_access.html @@ -47,7 +47,13 @@ <tr id="requested-user-{{ permission.user.pk }}"> <td> <p> - {{ permission.user.username }} + {% if permission.user.application_proxy %} + {{ permission.user.application_proxy.name }} + <a href="{% url 'applications:application.detail' pk=permission.user.application_proxy.pk %}" + role="button" class="badge badge-info">App</a> + {% else %} + {{ permission.user.username }} + {% endif %} </p> {% if permission.reason %} <div class="alert alert-secondary" role="note"> @@ -105,7 +111,15 @@ <tbody> {% for permission in permissions_granted %} <tr id="approved-user-{{ permission.user.pk }}"> - <td>{{ permission.user.username }}</td> + <td> + {% if permission.user.application_proxy %} + {{ permission.user.application_proxy.name }} + <a href="{% url 'applications:application.detail' pk=permission.user.application_proxy.pk %}" + role="button" class="badge badge-info">App</a> + {% else %} + {{ permission.user.username }} + {% endif %} + </td> <td>{{ permission.get_requested_display }}</td> <td>{{ permission.get_granted_display }}</td> <td>