diff --git a/app/keys_home/migrations/0001_initial.py b/app/keys_home/migrations/0001_initial.py new file mode 100644 index 0000000000000000000000000000000000000000..653694849b71d68e4257070ebb7715311bcc9dd4 --- /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 aaf003be3e323dfcc1a840f0be562cbc634915cf..cb0529af5a2f681bae4e62dae5a0a8bc2d393fca 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 0bb99ca96aa10a204231ab4b71b86f468b0d81b3..3897bf09717f6615a9dbab515082ec8ff3c9fce1 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)