From 2c60f1055f19601e6205fbabd0ce10e3bc587360 Mon Sep 17 00:00:00 2001 From: Frank Sauerburger <frank@sauerburger.com> Date: Tue, 2 Mar 2021 22:58:26 +0100 Subject: [PATCH] Add any-group --- app/keys_home/migrations/0001_initial.py | 40 ++++++++++++++++++++++++ app/pgp/admin.py | 7 +++-- app/ssh/admin.py | 6 +++- 3 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 app/keys_home/migrations/0001_initial.py diff --git a/app/keys_home/migrations/0001_initial.py b/app/keys_home/migrations/0001_initial.py new file mode 100644 index 0000000..6536948 --- /dev/null +++ b/app/keys_home/migrations/0001_initial.py @@ -0,0 +1,40 @@ +# Generated by Django 3.1.3 on 2021-03-02 20:28 + +import logging +from django.db import migrations +from django.contrib.auth.models import Group, User +from guardian.utils import get_anonymous_user +from guardian.shortcuts import get_objects_for_user, assign_perm +from pgp import models as pgp +from ssh import models as ssh +from owlca import models as owlca + +def add_any_group(*args): + group, created = Group.objects.get_or_create(name='any-user') + if created: + logging.info('any-user Group created') + + for user in User.objects.all(): + logging.info(f"Adding {user} to any-user Group") + group.user_set.add(user) + + propagate_klasses = { + "view_publickey": pgp.PublicKey, + "view_sshpublickey": ssh.SSHPublicKey, + "view_certificationauthority": owlca.CertificationAuthority, + } + group.save() + + anon = get_anonymous_user() + for perm, klass in propagate_klasses.items(): + objs = get_objects_for_user(anon, perm, klass) + assign_perm(perm, group, objs) + + +class Migration(migrations.Migration): + dependencies = [ + ] + + operations = [ + migrations.RunPython(add_any_group), + ] diff --git a/app/pgp/admin.py b/app/pgp/admin.py index aaf003b..cb0529a 100644 --- a/app/pgp/admin.py +++ b/app/pgp/admin.py @@ -1,5 +1,8 @@ from django.contrib import admin - +from guardian.admin import GuardedModelAdmin from . import models -admin.site.register(models.PublicKey) +class PublicKeyAdmin(GuardedModelAdmin): + pass + +admin.site.register(models.PublicKey, PublicKeyAdmin) diff --git a/app/ssh/admin.py b/app/ssh/admin.py index 0bb99ca..3897bf0 100644 --- a/app/ssh/admin.py +++ b/app/ssh/admin.py @@ -1,4 +1,8 @@ from django.contrib import admin +from guardian.admin import GuardedModelAdmin from . import models -admin.site.register(models.SSHPublicKey) +class SSHPublicKeyAdmin(GuardedModelAdmin): + pass + +admin.site.register(models.SSHPublicKey, SSHPublicKeyAdmin) -- GitLab