From a97eefed044a0558a901a705f188de37aee00b85 Mon Sep 17 00:00:00 2001 From: James Graham <J.Graham@software.ac.uk> Date: Thu, 28 Feb 2019 12:12:16 +0000 Subject: [PATCH] Add UUID to application proxy usernames - fixes #67 --- applications/models.py | 5 ++++- .../datasources/datasource/manage_access.html | 18 ++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/applications/models.py b/applications/models.py index 33fc2ec..fa32ec2 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 11ce9bd..014e495 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> -- GitLab