Skip to content

Commit

Permalink
feat(permissions): route to list available perms
Browse files Browse the repository at this point in the history
  • Loading branch information
bouttier committed Nov 20, 2024
1 parent 8cef2f7 commit d240f33
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 6 deletions.
20 changes: 14 additions & 6 deletions backend/geonature/core/gn_permissions/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@
Routes of the gn_permissions blueprint
"""

import json
from copy import copy

from flask import Blueprint, request, Response, render_template, session
from flask import Blueprint, Response, session
import sqlalchemy as sa

from geonature.utils.env import DB
from geonature.utils.env import db
from sqlalchemy.orm import joinedload
from utils_flask_sqla.response import json_resp
from geonature.core.gn_commons.models import TModules
from geonature.core.gn_permissions import decorators as permissions
from geonature.core.gn_permissions.models import PermissionAvailable
from geonature.core.gn_permissions.schemas import PermissionAvailableSchema
from geonature.core.gn_permissions.decorators import login_required
from geonature.core.gn_permissions.commands import supergrant


Expand All @@ -37,3 +37,11 @@ def logout():
for key in copy_session_key:
session.pop(key)
return Response("Logout", 200)


@routes.route("/availables", methods=["GET"])
@login_required
def list_permissions_availables():
pa = db.session.execute(sa.select(PermissionAvailable)).scalars()
schema = PermissionAvailableSchema(only=["action", "module", "object"])
return schema.dump(pa, many=True)
8 changes: 8 additions & 0 deletions backend/geonature/tests/test_gn_permission.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import pytest
from flask import url_for

from pypnusershub.tests.utils import set_logged_user


@pytest.mark.usefixtures("client_class")
class TestGnPermissionsRoutes:
Expand All @@ -9,3 +11,9 @@ def test_logout(self):

assert response.status_code == 200
assert response.data == b"Logout"

def test_list_permissions_availables(self, users):
set_logged_user(self.client, users["user"])
response = self.client.get(url_for("gn_permissions.list_permissions_availables"))

assert response.status_code == 200

0 comments on commit d240f33

Please sign in to comment.