Commit d02c3b4f authored by Mickaël Desfrênes's avatar Mickaël Desfrênes
Browse files

acl second pass

parent 135f5369
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -15,7 +15,6 @@ from resources.models import (
    Project,
    APIKey,
    ProjectAccess,
    Permission,
    ObjectPermission,
    File,
    ProjectProperty,
@@ -30,6 +29,7 @@ from resources.models import (
    CollectionMembership,
    Role,
)
from resources import acl


def _console_table(title: str, headers: List["str"]) -> Table:
@@ -231,11 +231,8 @@ def get_or_create_project(project_label: str) -> Project:
        project_admin_username = slugify(f"admin_{project_label.replace(' ', '_')}")
        project = Project.objects.create(label=project_label)
        admin_user, _ = User.objects.get_or_create(username=project_admin_username)
        admin_role, _ = Role.objects.get_or_create(label="admin", project=project)
        for permission in Permission.objects.all():
            admin_role.permissions.add(permission)
        ProjectAccess.objects.get_or_create(
            project=project, role=admin_role, user=admin_user
        acl.UserAccess(admin_user, project).add_role_to_user(
            acl.make_or_create_global_readwrite_role_for_project(project)
        )
        key, _ = APIKey.objects.get_or_create(
            user=admin_user,
@@ -264,7 +261,6 @@ def bpython(self, options):
            "APIKey": APIKey,
            "Collection": Collection,
            "File": File,
            "Permission": Permission,
            "ObjectPermission": ObjectPermission,
            "Project": Project,
            "ProjectAccess": ProjectAccess,
+15 −2
Original line number Diff line number Diff line
<main>
    <h2>Ajouter un utilisateur</h2>
    <table class="table table-sm">
    <tbody>
        {% for user in users %}
@@ -16,15 +17,27 @@
                    </span>
                </td>
                <td class="text-end">
                    <form method="post"
                    <form style="display: inline;" method="post"
                          action="{% url "nui:add_user_to_project" project.pk %}"
                          up-submit>
                        {% csrf_token %}
                        <input type="hidden" name="user" value="{{ user.pk }}">
                        <input type="hidden" name="access" value="ro">
                        <input type="hidden" name="project" value="{{ project.pk }}">
                        <button type="submit" class="btn btn-outline-secondary btn-sm">
                            <i class="bi bi-person-add"></i>
                            ajout</button>
                            lecture seule</button>
                    </form>
                    <form style="display: inline;" method="post"
                          action="{% url "nui:add_user_to_project" project.pk %}"
                          up-submit>
                        {% csrf_token %}
                        <input type="hidden" name="user" value="{{ user.pk }}">
                        <input type="hidden" name="access" value="rw">
                        <input type="hidden" name="project" value="{{ project.pk }}">
                        <button type="submit" class="btn btn-outline-secondary btn-sm">
                            <i class="bi bi-person-add"></i>
                            lecture / écriture</button>
                    </form>
                </td>
            </tr>
+4 −2
Original line number Diff line number Diff line
@@ -17,24 +17,26 @@
        <thead>
        <tr>
            <th><i class="bi bi-person"></i> utilisateur</th>
            <th>rôle</th>
            <th class="text-end"><i class="bi bi-trash"></i> suppression</th>
        </tr>
        </thead>
        {% for project_access in project.accesses %}
            <tr>
                <td>{{ project_access.user.username }}</td>
                <td><a up-layer="new" up-history="false" href="{% url "nui:user_details" project_access.user.pk %}">{{ project_access.user.username }}</a></td>
                <td>{{ project_access.role.label }}</td>
                <td class="text-end">
                    <form method="post" action="{% url "nui:project_manage" project.pk %}" up-submit
                          up-target="#usersTable">
                        {% csrf_token %}
                        <input type="hidden" name="action" value="remove_access">
                        <input type="hidden" name="user_id" value="{{ project_access.user.pk }}">
                        <input type="hidden" name="access_id" value="{{ project_access.pk }}">
                        <button type="submit"
                                onclick="return confirm('suppression de l\'accès ?');"
                                class="btn btn-outline-secondary btn-sm"><i class="bi bi-person-dash"></i> suppr
                        </button>
                    </form>

                </td>
            </tr>
        {% endfor %}
+35 −0
Original line number Diff line number Diff line
<main>
  <h1>{{ user.username }}</h1>
  <table class="table">
    <tbody>
      <tr>
        <th>nom du compte</th>
        <td>{{ user.username }}</td>
      </tr>
      <tr>
        <th>prénom</th>
        <td>{{ user.first_name }}</td>
      </tr>
      <tr>
        <th>nom de famille</th>
        <td>{{ user.last_name }}</td>
      </tr>
      <tr>
        <th>email</th>
        <td>{{ user.email }}</td>
      </tr>
      <tr>
        <th>est super-utilisateur</th>
        <td>{% if user.is_superuser %}Oui{% else %}Non{% endif %}</td>
      </tr>
      <tr>
        <th>date de création</th>
        <td>{{ user.date_joined }}</td>
      </tr>
      <tr>
        <th>dernière connexion</th>
        <td>{{ user.last_login }}</td>
      </tr>
    </tbody>
  </table>
</main>
+10 −1
Original line number Diff line number Diff line
@@ -17,10 +17,19 @@ urlpatterns = [
        views.project_manage,
        name="project_manage",
    ),
    path(
        "role/<int:role_id>/",
        views.role_manage,
        name="role_manage",
    ),
    path(
        "user/<int:user_id>/",
        views.user_details,
        name="user_details",
    ),
    path(
        "project/<int:project_id>/add_user_to_project/",
        views.add_user_to_project,
        name="add_user_to_project",
    ),
    # path("test", views.test),
]
Loading