diff --git a/CHANGELOG.rst b/CHANGELOG.rst index e61e7486d090d4eaa8c8f2eb6e67d8d2dc1240e9..8c6a5552220106c364330db2f1952b9d568ab6d4 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -27,6 +27,11 @@ Fixed * The menu item for entering an invitation code received offline was missing * CleaveJS was not loaded properly when using an external CDN +Changed +------- + +* Allow non-superusers with permission to invite persons + `2.6`_ - 2022-01-10 ------------------- diff --git a/aleksis/core/migrations/0034_invite_permission.py b/aleksis/core/migrations/0034_invite_permission.py new file mode 100644 index 0000000000000000000000000000000000000000..02a2d24d791a1bb69597c872aee5e3d5e1e52dea --- /dev/null +++ b/aleksis/core/migrations/0034_invite_permission.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.11 on 2022-01-22 20:18 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0033_update_photo_avatar'), + ] + + operations = [ + migrations.AlterModelOptions( + name='globalpermissions', + options={'default_permissions': (), 'managed': False, 'permissions': (('view_system_status', 'Can view system status'), ('manage_data', 'Can manage data'), ('impersonate', 'Can impersonate'), ('search', 'Can use search'), ('change_site_preferences', 'Can change site preferences'), ('change_person_preferences', 'Can change person preferences'), ('change_group_preferences', 'Can change group preferences'), ('test_pdf', 'Can test PDF generation'), ('invite', 'Can invite persons'))}, + ), + ] diff --git a/aleksis/core/models.py b/aleksis/core/models.py index 04632a5615cd701cbae9e9d7f3a89b92ff82c74e..f46a803b687cc9cde9a893c642586eac232fd84d 100644 --- a/aleksis/core/models.py +++ b/aleksis/core/models.py @@ -1060,6 +1060,7 @@ class GlobalPermissions(GlobalPermissionModel): ("change_person_preferences", _("Can change person preferences")), ("change_group_preferences", _("Can change group preferences")), ("test_pdf", _("Can test PDF generation")), + ("invite", _("Can invite persons")), ) diff --git a/aleksis/core/rules.py b/aleksis/core/rules.py index 76d442a9c33c5b054639df423570fb39909ffc33..ad1f55fcc44f470fac11c362c456451a56620785 100644 --- a/aleksis/core/rules.py +++ b/aleksis/core/rules.py @@ -329,6 +329,9 @@ rules.add_perm("core.can_change_password", can_change_password_predicate) invite_enabled_predicate = is_site_preference_set(section="auth", pref="invite_enabled") rules.add_perm("core.invite_enabled", invite_enabled_predicate) +can_invite_predicate = has_person & has_global_perm("core.invite") +rules.add_perm("core.can_invite", can_invite_predicate) + # OAuth2 permissions create_oauthapplication_predicate = has_person & has_global_perm("core.add_oauthapplication") rules.add_perm("core.create_oauthapplication_rule", create_oauthapplication_predicate)