diff --git a/README.md b/README.md index 9e798c730..03d9866f5 100644 --- a/README.md +++ b/README.md @@ -9,29 +9,75 @@ of SAC CAS. ``` * Schweizer Alpen-Club SAC * Geschäftsstelle - * Mitarbeiter*in (schreibend): 2FA [:layer_and_below_full, :read_all_people] - * Mitarbeiter*in (lesend): 2FA [:layer_and_below_read, :read_all_people] - * Admin: 2FA [:layer_and_below_full, :admin, :impersonation, :read_all_people] - * Ehrenmitglieder - * Ehrenmitglied: [] + * Mitarbeiter*in (schreibend): [:layer_and_below_full, :read_all_people] + * Mitarbeiter*in (lesend): [:layer_and_below_read, :read_all_people] + * Administration: [:layer_and_below_full, :admin, :impersonation, :read_all_people] + * Andere: 2FA [:layer_and_below_read, :read_all_people] + * Geschäftsleitung + * Geschäftsführung: 2FA [:layer_and_below_read, :read_all_people] + * Ressortleitung: 2FA [:layer_and_below_read, :read_all_people] + * Andere: 2FA [:layer_and_below_read, :read_all_people] + * Zentralvorstand + * Präsidium: [] + * Mitglied: [] + * Andere: [] + * Kommission + * Präsidium: [] + * Mitglied: [] + * Andere: [] * Externe Kontakte * Kontakt: [] * Touren-Portal * Abonnent: [] * Neuanmeldung: [] + * Administration: [] + * Autor*in: [] + * Community: [] + * Andere: [] * AboMagazin * Abonnent: [] * Neuanmeldung: [] + * Autor*in: [] + * Andere: [] * SAC/CAS Login * Basis Konto: [] - * Sektion, Ortsgruppe - * Funktionäre - * Präsidium: [] + * Ehrenmitglieder + * Ehrenmitglied: [] + * Sektion + * Ortsgruppe + * Global + * Sektionsfunktionäre + * Präsidium: [:layer_and_below_read] * Mitgliederverwaltung: 2FA [:layer_and_below_full] * Administration: 2FA [:layer_and_below_full] * Administration (nur lesend): 2FA [:layer_and_below_read] - * Umweltbeauftragte*r: [] - * Kulturbeauftragte*r: [] + * Finanzen: [] + * Redaktion: [] + * Andere: [] + * Hütten + * Hüttenobmann*frau: 2FA [:group_and_below_read] + * Andere: [:group_read] + * Hütte + * Hüttenwart*in: [:group_read] + * Hüttenchef*in: [:group_read] + * Andere: [:group_read] + * Touren und Kurse + * Tourenchef*in Sommer: 2FA [:layer_and_below_full] + * Tourenchef*in Winter: 2FA [:layer_and_below_full] + * Tourenchef*in Klettern: 2FA [:layer_and_below_full] + * Tourenchef*in Senioren: 2FA [:layer_and_below_full] + * Tourenleiter*in (mit Qualifikation): [] + * Tourenleiter*in (ohne Qualifikation): [] + * JO-Chef*in: [] + * J+S Coach: [] + * Andere: [] + * Kommission + * Präsidium: [] + * Mitglied: [] + * Andere: [] + * Vorstand + * Präsidium: [] + * Mitglied: [] * Andere: [] * Mitglieder * Mitglied (Stammsektion): [] @@ -44,15 +90,6 @@ of SAC CAS. * Neuanmeldungen * Neuanmeldung (Stammsektion): [] * Neuanmeldung (Zusatzsektion): [] - * Tourenkommission - * Tourenchef*in Sommer: 2FA [:group_full] - * Tourenchef*in Winter: 2FA [:group_full] - * Tourenchef*in Klettern: 2FA [:group_full] - * Tourenchef*in Senioren: 2FA [:group_full] - * Tourenleiter*in: [] - * Hüttenkommission - * Hüttenobmann*frau: 2FA [:group_and_below_read] - * Andere: [:group_read] * Externe Kontakte * Kontakt: [] ``` diff --git a/app/models/group/abo_magazin.rb b/app/models/group/abo_magazin.rb index 9dab96f0f..98d4bd444 100644 --- a/app/models/group/abo_magazin.rb +++ b/app/models/group/abo_magazin.rb @@ -19,6 +19,16 @@ class Neuanmeldung < ::Role self.basic_permissions_only = true end - roles Abonnent, Neuanmeldung + class Autor < ::Role + self.permissions = [] + self.basic_permissions_only = true + end + + class Andere < ::Role + self.permissions = [] + self.basic_permissions_only = true + end + + roles Abonnent, Neuanmeldung, Autor, Andere end diff --git a/app/models/group/abo_touren_portal.rb b/app/models/group/abo_touren_portal.rb index e3779cfc9..72a135b27 100644 --- a/app/models/group/abo_touren_portal.rb +++ b/app/models/group/abo_touren_portal.rb @@ -21,6 +21,26 @@ class Neuanmeldung < ::Role self.basic_permissions_only = true end - roles Abonnent, Neuanmeldung + class Autor < ::Role + self.permissions = [] + self.basic_permissions_only = true + end + + class Community < ::Role + self.permissions = [] + self.basic_permissions_only = true + end + + class Admin < ::Role + self.permissions = [] + self.basic_permissions_only = true + end + + class Andere < ::Role + self.permissions = [] + self.basic_permissions_only = true + end + + roles Abonnent, Neuanmeldung, Admin, Autor, Community, Andere end diff --git a/app/models/group/geschaeftsleitung.rb b/app/models/group/geschaeftsleitung.rb new file mode 100644 index 000000000..94cb54c9c --- /dev/null +++ b/app/models/group/geschaeftsleitung.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +# Copyright (c) 2012-2024, Schweizer Alpen-Club. This file is part of +# hitobito_sac_cas and licensed under the Affero General Public License version 3 +# or later. See the COPYING file at the top-level directory or at +# https://github.com/hitobito/hitobito_sac_cas. + +class Group::Geschaeftsleitung < ::Group + + self.static_name = true + + ### ROLES + class Geschaeftsfuehrung < ::Role + self.permissions = [:layer_and_below_read, :read_all_people] + self.two_factor_authentication_enforced = true + end + + class Ressortleitung < ::Role + self.permissions = [:layer_and_below_read, :read_all_people] + self.two_factor_authentication_enforced = true + end + + class Andere < ::Role + self.permissions = [:layer_and_below_read, :read_all_people] + self.two_factor_authentication_enforced = true + end + + roles Geschaeftsfuehrung, Ressortleitung, Andere + +end diff --git a/app/models/group/geschaeftsstelle.rb b/app/models/group/geschaeftsstelle.rb index 0749d3f35..d4292e869 100644 --- a/app/models/group/geschaeftsstelle.rb +++ b/app/models/group/geschaeftsstelle.rb @@ -23,6 +23,11 @@ class Admin < ::Role self.two_factor_authentication_enforced = true end - roles Mitarbeiter, MitarbeiterLesend, Admin + class Andere < ::Role + self.permissions = [:layer_and_below_read, :read_all_people] + self.two_factor_authentication_enforced = true + end + + roles Mitarbeiter, MitarbeiterLesend, Admin, Andere end diff --git a/app/models/group/kommission.rb b/app/models/group/kommission.rb new file mode 100644 index 000000000..81f178a11 --- /dev/null +++ b/app/models/group/kommission.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +# Copyright (c) 2012-2024, Schweizer Alpen-Club. This file is part of +# hitobito_sac_cas and licensed under the Affero General Public License version 3 +# or later. See the COPYING file at the top-level directory or at +# https://github.com/hitobito/hitobito_sac_cas. + +class Group::Kommission < ::Group + + ### ROLES + class Praesidium < ::Role + self.permissions = [] + end + + class Mitglied < ::Role + self.permissions = [] + end + + class Andere < ::Role + self.permissions = [] + end + + children Group::Kommission + + roles Praesidium, Mitglied, Andere + +end diff --git a/app/models/group/ortsgruppe.rb b/app/models/group/ortsgruppe.rb index 6c6551a76..e72592240 100644 --- a/app/models/group/ortsgruppe.rb +++ b/app/models/group/ortsgruppe.rb @@ -11,12 +11,16 @@ class Group::Ortsgruppe < ::Group self.event_types = [Event, Event::Course] children Group::SektionsFunktionaere, + Group::SektionsHuettenkommission, + Group::SektionsTourenkommission, + Group::SektionsKommission, + Group::SektionsVorstand, Group::SektionsMitglieder, Group::SektionsNeuanmeldungenSektion, Group::SektionsNeuanmeldungenNv, - Group::SektionsTourenkommission, - Group::SektionsExterneKontakte, - Group::SektionsHuettenkommission + Group::SektionsKommission, + Group::SektionsVorstand, + Group::SektionsExterneKontakte self.default_children = [ Group::SektionsFunktionaere, diff --git a/app/models/group/sac_cas.rb b/app/models/group/sac_cas.rb index 105aae4cb..bc9c3eb17 100644 --- a/app/models/group/sac_cas.rb +++ b/app/models/group/sac_cas.rb @@ -11,6 +11,9 @@ class Group::SacCas < ::Group self.event_types = [Event::Course] children Group::Geschaeftsstelle, + Group::Geschaeftsleitung, + Group::Zentralvorstand, + Group::Kommission, Group::Sektion, Group::ExterneKontakte, Group::Abonnenten, diff --git a/app/models/group/sektion.rb b/app/models/group/sektion.rb index ad346219e..3c7437318 100644 --- a/app/models/group/sektion.rb +++ b/app/models/group/sektion.rb @@ -11,11 +11,13 @@ class Group::Sektion < ::Group self.event_types = [Event, Event::Course] children Group::SektionsFunktionaere, + Group::SektionsHuettenkommission, + Group::SektionsTourenkommission, + Group::SektionsKommission, + Group::SektionsVorstand, Group::SektionsMitglieder, Group::SektionsNeuanmeldungenSektion, Group::SektionsNeuanmeldungenNv, - Group::SektionsTourenkommission, - Group::SektionsHuettenkommission, Group::SektionsExterneKontakte, Group::Ortsgruppe @@ -24,7 +26,7 @@ class Group::Sektion < ::Group Group::SektionsMitglieder, Group::SektionsNeuanmeldungenNv, Group::SektionsExterneKontakte, - Group::SektionsTourenkommission ] + Group::SektionsTourenkommission] mounted_attr :foundation_year, :integer validates :foundation_year, diff --git a/app/models/group/sektions_funktionaere.rb b/app/models/group/sektions_funktionaere.rb index 14c1a7629..6991399ee 100644 --- a/app/models/group/sektions_funktionaere.rb +++ b/app/models/group/sektions_funktionaere.rb @@ -11,7 +11,7 @@ class Group::SektionsFunktionaere < ::Group ### ROLES class Praesidium < ::Role - self.permissions = [] + self.permissions = [:layer_and_below_read] end class Mitgliederverwaltung < ::Role @@ -29,12 +29,12 @@ class AdministrationReadOnly < ::Role self.two_factor_authentication_enforced = true end - class Umweltbeauftragte < ::Role + class Finanzen < ::Role self.permissions = [] self.basic_permissions_only = true end - class Kulturbeauftragte < ::Role + class Redaktion < ::Role self.permissions = [] self.basic_permissions_only = true end @@ -45,7 +45,6 @@ class Andere < ::Role end roles Praesidium, Mitgliederverwaltung, Administration, - AdministrationReadOnly, Umweltbeauftragte, Kulturbeauftragte, - Andere + AdministrationReadOnly, Finanzen, Redaktion, Andere end diff --git a/app/models/group/sektions_kommission.rb b/app/models/group/sektions_kommission.rb new file mode 100644 index 000000000..70a84d776 --- /dev/null +++ b/app/models/group/sektions_kommission.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +# Copyright (c) 2012-2024, Schweizer Alpen-Club. This file is part of +# hitobito_sac_cas and licensed under the Affero General Public License version 3 +# or later. See the COPYING file at the top-level directory or at +# https://github.com/hitobito/hitobito_sac_cas. + +class Group::SektionsKommission < ::Group + + ### ROLES + class Praesidium < ::Role + self.permissions = [] + end + + class Mitglied < ::Role + self.permissions = [] + end + + class Andere < ::Role + self.permissions = [] + end + + children Group::SektionsKommission + + roles Praesidium, Mitglied, Andere +end diff --git a/app/models/group/sektions_tourenkommission.rb b/app/models/group/sektions_tourenkommission.rb index ad3243600..fd9dbebd6 100644 --- a/app/models/group/sektions_tourenkommission.rb +++ b/app/models/group/sektions_tourenkommission.rb @@ -11,7 +11,7 @@ class Group::SektionsTourenkommission < Group ### ROLES class Tourenchef < ::Role - self.permissions = [:group_full] + self.permissions = [:layer_and_below_full] self.two_factor_authentication_enforced = true end @@ -20,10 +20,12 @@ class TourenchefWinter < Tourenchef; end class TourenchefKlettern < Tourenchef; end class TourenchefSenioren < Tourenchef; end - class Tourenleiter < ::Role + class TourenleiterOhneQualifikation < ::Role self.permissions = [] self.basic_permissions_only = true + end + class Tourenleiter < TourenleiterOhneQualifikation before_validation :assert_active_qualification private @@ -35,10 +37,27 @@ def assert_active_qualification end end + class JoChef < ::Role + self.permissions = [] + end + + class JsCoach < ::Role + self.permissions = [] + end + + class Andere < ::Role + self.permissions = [] + end + + roles TourenchefSommer, TourenchefWinter, TourenchefKlettern, TourenchefSenioren, - Tourenleiter + Tourenleiter, + TourenleiterOhneQualifikation, + JoChef, + JsCoach, + Andere end diff --git a/app/models/group/sektions_vorstand.rb b/app/models/group/sektions_vorstand.rb new file mode 100644 index 000000000..4ee40694b --- /dev/null +++ b/app/models/group/sektions_vorstand.rb @@ -0,0 +1,25 @@ + +# frozen_string_literal: true + +# Copyright (c) 2012-2024, Schweizer Alpen-Club. This file is part of +# hitobito_sac_cas and licensed under the Affero General Public License version 3 +# or later. See the COPYING file at the top-level directory or at +# https://github.com/hitobito/hitobito_sac_cas. + +class Group::SektionsVorstand < ::Group + + ### ROLES + class Praesidium < ::Role + self.permissions = [] + end + + class Mitglied < ::Role + self.permissions = [] + end + + class Andere < ::Role + self.permissions = [] + end + + roles Praesidium, Mitglied, Andere +end diff --git a/app/models/group/zentralvorstand.rb b/app/models/group/zentralvorstand.rb new file mode 100644 index 000000000..5a6a0c5aa --- /dev/null +++ b/app/models/group/zentralvorstand.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +# Copyright (c) 2012-2024, Schweizer Alpen-Club. This file is part of +# hitobito_sac_cas and licensed under the Affero General Public License version 3 +# or later. See the COPYING file at the top-level directory or at +# https://github.com/hitobito/hitobito_sac_cas. + +class Group::Zentralvorstand < ::Group + + self.static_name = true + + ### ROLES + class Praesidium < ::Role + self.permissions = [] + end + + class Mitglied < ::Role + self.permissions = [] + end + + class Andere < ::Role + self.permissions = [] + end + + roles Praesidium, Mitglied, Andere +end diff --git a/config/locales/wagon.de.yml b/config/locales/wagon.de.yml index 377b91703..2b0afd1f4 100644 --- a/config/locales/wagon.de.yml +++ b/config/locales/wagon.de.yml @@ -321,10 +321,22 @@ de: one: Externe Kontakte other: Externe Kontakte + group/geschaeftsleitung: + one: Geschäftsleitung + other: Geschäftsleitung + group/geschaeftsstelle: one: Geschäftsstelle other: Geschäftsstelle + group/kommission: + one: Kommission + other: Kommission + + group/zentralvorstand: + one: Zentralvorstand + other: Zentralvorstand + group/abonnenten: one: Abonnenten other: Abonnenten @@ -362,21 +374,29 @@ de: other: Neuanmeldungen (zur Freigabe) group/sektions_funktionaere: - one: Funktionäre - other: Funktionäre + one: Sektionsfunktionäre + other: Sektionsfunktionäre group/sektions_tourenkommission: - one: Tourenkommission - other: Tourenkommissionen - - group/sektions_huettenkommission: - one: Hüttenkommission - other: Hüttennkommission + one: Touren und Kurse + other: Touren und Kurse group/sektions_externe_kontakte: one: Externe Kontakte other: Externe Kontakte + group/sektions_kommission: + one: Kommission + other: Kommission + + group/sektions_vorstand: + one: Vorstand + other: Vorstand + + group/sektions_huettenkommission: + one: Hütten + other: Hütten + group/sektions_huette: one: Hütte other: Hütte @@ -392,8 +412,38 @@ de: one: Mitarbeiter*in (lesend) description: Mitarbeiter*in (lesend) group/geschaeftsstelle/admin: - one: Admin - description: Admin + one: Administration + description: Administration + group/geschaeftsstelle/andere: + one: Andere + description: Andere + group/geschaeftsleitung/geschaeftsfuehrung: + one: Geschäftsführung + description: Geschäftsführung + group/geschaeftsleitung/ressortleitung: + one: Ressortleitung + description: Ressortleitung + group/geschaeftsleitung/andere: + one: Andere + description: Andere + group/kommission/praesidium: + one: Präsidium + description: Präsidium + group/kommission/mitglied: + one: Mitglied + description: Mitglied + group/kommission/andere: + one: Andere + description: Andere + group/zentralvorstand/praesidium: + one: Präsidium + description: Präsidium + group/zentralvorstand/mitglied: + one: Mitglied + description: Mitglied + group/zentralvorstand/andere: + one: Andere + description: Andere group/externe_kontakte/kontakt: one: Kontakt description: Kontakt @@ -403,12 +453,30 @@ de: group/abo_magazin/neuanmeldung: one: Neuanmeldung description: Neuanmeldung + group/abo_magazin/autor: + one: Autor*in + description: Autor*in + group/abo_magazin/andere: + one: Andere + description: Andere group/abo_touren_portal/abonnent: one: Abonnent description: Abonnent + group/abo_touren_portal/admin: + one: Administration + description: Administration group/abo_touren_portal/neuanmeldung: one: Neuanmeldung description: Neuanmeldung + group/abo_touren_portal/autor: + one: Autor*in + description: Autor*in + group/abo_touren_portal/community: + one: Community + description: Community + group/abo_touren_portal/andere: + one: Andere + description: Andere group/abo_basic_login/basic_login: one: Basis Konto description: Basis Konto @@ -424,12 +492,12 @@ de: group/sektions_funktionaere/mitgliederverwaltung: one: Mitgliederverwaltung description: Mitgliederverwaltung Sektion - group/sektions_funktionaere/umweltbeauftragte: - one: Umweltbeauftragte*r - description: Umweltbeauftragte*r Sektion - group/sektions_funktionaere/kulturbeauftragte: - one: Kulturbeauftragte*r - description: Kulturbeauftragte*r Sektion + group/sektions_funktionaere/finanzen: + one: Finanzen + description: Finanzen + group/sektions_funktionaere/redaktion: + one: Redaktion + description: Redaktion group/sektions_funktionaere/andere: one: Andere description: Andere @@ -457,6 +525,24 @@ de: group/sektions_neuanmeldungen_nv/neuanmeldung_zusatzsektion: one: Neuanmeldung (Zusatzsektion) description: Neuanmeldung Mitgliedschaft (Zusatzsektion) + group/sektions_kommission/praesidium: + one: Präsidium + description: Präsidium + group/sektions_kommission/mitglied: + one: Mitglied + description: Mitglied + group/sektions_kommission/andere: + one: Andere + description: Andere + group/sektions_vorstand/praesidium: + one: Präsidium + description: Präsidium + group/sektions_vorstand/mitglied: + one: Mitglied + description: Mitglied + group/sektions_vorstand/andere: + one: Andere + description: Andere group/sektions_tourenkommission/tourenchef_sommer: one: Tourenchef*in Sommer description: Tourenchef*in Sommer @@ -470,8 +556,20 @@ de: one: Tourenchef*in Senioren description: Tourenchef*in Senioren group/sektions_tourenkommission/tourenleiter: - one: Tourenleiter*in - description: Tourenleiter*in + one: Tourenleiter*in (mit Qualifikation) + description: Tourenleiter*in (mit Qualifikation) + group/sektions_tourenkommission/tourenleiter_ohne_qualifikation: + one: Tourenleiter*in (ohne Qualifikation) + description: Tourenleiter*in (ohne Qualifikation) + group/sektions_tourenkommission/jo_chef: + one: JO-Chef*in + description: JO-Chef*in + group/sektions_tourenkommission/js_coach: + one: J+S Coach + description: J+S Coach + group/sektions_tourenkommission/andere: + one: Andere + description: Andere group/sektions_huettenkommission/huettenobmann: one: Hüttenobmann*frau description: Hüttenobmann*frau @@ -484,9 +582,6 @@ de: group/sektions_huette/huettenchef: one: Hüttenchef*in description: Hüttenchef*in - group/sektions_huette/andere: - one: Andere - description: Andere group/sektions_externe_kontakte/kontakt: one: Kontakt description: Kontakt @@ -494,6 +589,9 @@ de: one: Hüttenwartspartner*in group/sektions_huette/schluesseldepot: one: Schlüsseldepot + group/sektions_huette/andere: + one: Andere + description: Andere devise: sessions: diff --git a/config/locales/wagon.fr.yml b/config/locales/wagon.fr.yml index faabe60c1..34df55f6d 100644 --- a/config/locales/wagon.fr.yml +++ b/config/locales/wagon.fr.yml @@ -41,10 +41,6 @@ fr: one: Fonctionnaires other: Fonctionnaires - group/sektions_tourenkommission: - one: Commission des tournées - other: Commission des tournées - group/huette: one: Cabane other: Cabanes diff --git a/db/migrate/20240522065606_delete_obsolete_roles_and_groups.rb b/db/migrate/20240522065606_delete_obsolete_roles_and_groups.rb new file mode 100644 index 000000000..a090d2203 --- /dev/null +++ b/db/migrate/20240522065606_delete_obsolete_roles_and_groups.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +# Copyright (c) 2012-2024, Schweizer Alpen-Club. This file is part of +# hitobito_sac_cas and licensed under the Affero General Public License version 3 +# or later. See the COPYING file at the top-level directory or at +# https://github.com/hitobito/hitobito_sac_cas. + +class DeleteObsoleteRolesAndGroups < ActiveRecord::Migration[6.1] + def up + return unless connection.adapter_name =~ /mysql/i + + execute "DELETE FROM roles WHERE type='Group::SektionsFuntionaere::Umweltbeauftragte'" + execute "DELETE FROM roles WHERE type='Group::SektionsFuntionaere::Kulturbeauftragte'" + + execute <<~SQL + DELETE groups FROM groups + INNER JOIN groups g1 ON groups.layer_group_id = g1.id AND g1.type = 'Group::SacCas' + AND groups.type = 'Group::ExterneKontakte' + SQL + + execute <<~SQL + DELETE roles FROM roles + LEFT JOIN groups ON roles.group_id = groups.id + WHERE groups.id IS NULL + SQL + end +end diff --git a/db/seeds/development/0_groups.rb b/db/seeds/development/0_groups.rb index 4f376904d..d179cd418 100644 --- a/db/seeds/development/0_groups.rb +++ b/db/seeds/development/0_groups.rb @@ -71,7 +71,7 @@ def seed_hut(sektion, name, navision_id) matterhorn_neuanmeldungen = Group::SektionsNeuanmeldungenNv.find_by(parent_id: matterhorn.id) matterhorn_neuanmeldungen.update!( custom_self_registration_title: 'Registrierung zu SAC Matterhorn', - self_registration_role_type: Group::SektionsNeuanmeldungenNv::Neuanmeldung + self_registration_role_type: Group::SektionsNeuanmeldungenNv::Neuanmeldung ) Group::SektionsNeuanmeldungenSektion.seed_once( diff --git a/spec/abilities/sac_cas/event/participation_ability_spec.rb b/spec/abilities/sac_cas/event/participation_ability_spec.rb index 55fcb08a8..65b36a400 100644 --- a/spec/abilities/sac_cas/event/participation_ability_spec.rb +++ b/spec/abilities/sac_cas/event/participation_ability_spec.rb @@ -93,18 +93,4 @@ def build_role(key, role) end end end - - context 'group_full' do - let(:role) { build_role(:matterhorn_tourenkommission, 'TourenchefWinter') } - - [:summon, :cancel].each do |action| - it "may not #{action} on group above" do - expect(subject).not_to be_able_to(action, build(:matterhorn)) - end - - it "may #{action} on group" do - expect(subject).to be_able_to(action, build(:matterhorn_tourenkommission)) - end - end - end end diff --git a/spec/controllers/oauth/userinfo_controller_spec.rb b/spec/controllers/oauth/userinfo_controller_spec.rb index 6b306d844..f9acd5d7a 100644 --- a/spec/controllers/oauth/userinfo_controller_spec.rb +++ b/spec/controllers/oauth/userinfo_controller_spec.rb @@ -68,7 +68,7 @@ group_name: user.roles.first.group.name, role: 'Group::Geschaeftsstelle::Admin', role_class: 'Group::Geschaeftsstelle::Admin', - role_name: 'Admin', + role_name: 'Administration', permissions: ['layer_and_below_full', 'admin', 'impersonation', 'read_all_people'], layer_group_id: user.roles.first.group.layer_group_id } diff --git a/spec/models/group/sektions_tourenkommission_spec.rb b/spec/models/group/sektions_tourenkommission_spec.rb index 21f94be66..b10e3431f 100644 --- a/spec/models/group/sektions_tourenkommission_spec.rb +++ b/spec/models/group/sektions_tourenkommission_spec.rb @@ -13,7 +13,7 @@ describe Group::SektionsTourenkommission::Tourenleiter do let(:person) { people(:tourenchef) } let(:kind) { qualification_kinds(:snowboard_leader) } - subject(:role) { Fabricate.build(described_class.to_s, group: group, person: person) } + subject(:role) { Fabricate.build(described_class.sti_name, group: group, person: person) } it 'is invalid without qualifications' do expect(role).not_to be_valid