Skip to content

Commit

Permalink
feat(permissions) declare available permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
Pierre-Narcisi committed Jun 13, 2023
1 parent 0e26c27 commit 834f43a
Showing 1 changed file with 96 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
"""declare available permissions
Revision ID: fc90d31c677f
Revises: e78003460441
Create Date: 2023-06-09 10:32:21.008918
"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = "fc90d31c677f"
down_revision = "e78003460441"
branch_labels = None
depends_on = ("f051b88a57fd",)


def upgrade():
op.execute(
"""
INSERT INTO
gn_permissions.t_permissions_available (
id_module,
id_object,
id_action,
label,
scope_filter
)
SELECT
m.id_module,
o.id_object,
a.id_action,
v.label,
v.scope_filter
FROM
(
VALUES
('MONITORINGS', 'ALL', 'C', False, 'Monitoring')
,('MONITORINGS', 'ALL', 'R', False, 'Monitoring')
,('MONITORINGS', 'ALL', 'U', False, 'Monitoring')
,('MONITORINGS', 'ALL', 'E', False, 'Monitoring')
,('MONITORINGS', 'ALL', 'D', False, 'Monitoring')
) AS v (module_code, object_code, action_code, scope_filter, label)
JOIN
gn_commons.t_modules m ON m.module_code = v.module_code
JOIN
gn_permissions.t_objects o ON o.code_object = v.object_code
JOIN
gn_permissions.bib_actions a ON a.code_action = v.action_code
"""
)
op.execute(
"""
WITH bad_permissions AS (
SELECT
p.id_permission
FROM
gn_permissions.t_permissions p
JOIN gn_commons.t_modules m
USING (id_module)
WHERE
m.module_code = 'MONITORINGS'
EXCEPT
SELECT
p.id_permission
FROM
gn_permissions.t_permissions p
JOIN gn_permissions.t_permissions_available pa ON
(p.id_module = pa.id_module
AND p.id_object = pa.id_object
AND p.id_action = pa.id_action)
)
DELETE
FROM
gn_permissions.t_permissions p
USING bad_permissions bp
WHERE
bp.id_permission = p.id_permission;
"""
)


def downgrade():
op.execute(
"""
DELETE FROM
gn_permissions.t_permissions_available pa
USING
gn_commons.t_modules m
WHERE
pa.id_module = m.id_module
AND
module_code = 'MONITORINGS'
"""
)

0 comments on commit 834f43a

Please sign in to comment.