Skip to content
Snippets Groups Projects
Unverified Commit 42482bfa authored by Pierre-André Boissinot's avatar Pierre-André Boissinot Committed by GitHub
Browse files

add abilities (#2605)

parent 54379e65
No related branches found
No related tags found
No related merge requests found
......@@ -73,6 +73,7 @@ class Ability::Admin < Ability
can :manage, Communication::Website::Menu, university_id: @user.university_id
can :manage, Communication::Website::Menu::Item, university_id: @user.university_id
can :manage, Communication::Website::Page, university_id: @user.university_id
can :manage, Communication::Website::Page::Category, university_id: @user.university_id
can :manage, Communication::Website::Post, university_id: @user.university_id
end
......
......@@ -3,13 +3,18 @@ class Ability::ProgramManager < Ability
def initialize(user)
super
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'Communication::Website::Agenda::Event::Localization', about_id: managed_event_localization_ids
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'Communication::Website::Agenda::Category::Localization', about_id: managed_agenda_category_localization_ids
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'Communication::Website::Post::Localization', about_id: managed_post_localization_ids
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'Communication::Website::Post::Category::Localization', about_id: managed_post_category_localization_ids
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'Education::Program::Localization', about_id: managed_program_localization_ids
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'Education::Program::Category::Localization', about_id: managed_program_category_localization_ids
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'University::Person::Localization', about_id: managed_person_localization_ids
can :create, Communication::Block
can :read, Communication::Website, university_id: @user.university_id
can :manage, Communication::Website::Agenda::Event, university_id: @user.university_id
can :manage, Communication::Website::Agenda::Category, id: managed_agenda_category_ids
can :manage, Communication::Website::Post, university_id: @user.university_id
can :manage, Communication::Website::Post::Category, id: managed_post_category_ids
can :manage, Education::Program, id: managed_programs_ids
can [:read, :children], Education::Program, university_id: @user.university_id
cannot :create, Education::Program
......@@ -37,6 +42,22 @@ class Ability::ProgramManager < Ability
end
end
def managed_agenda_category_ids
@managed_agenda_category_ids ||= Communication::Website::Agenda::Category.where(university_id: @user.university_id, program_id: managed_programs_ids).pluck(:id)
end
def managed_agenda_category_localization_ids
@managed_agenda_category_localization_ids ||= Communication::Website::Agenda::Category::Localization.where(about_id: managed_agenda_category_ids).pluck(:id)
end
def managed_post_category_ids
@managed_post_category_ids ||= Communication::Website::Post::Category.where(university_id: @user.university_id, program_id: managed_programs_ids).pluck(:id)
end
def managed_post_category_localization_ids
@managed_post_category_localization_ids ||= Communication::Website::Post::Category::Localization.where(about_id: managed_post_category_ids).pluck(:id)
end
def managed_programs_ids
@managed_programs_ids ||= @user.programs_to_manage.pluck(:id)
end
......@@ -45,6 +66,16 @@ class Ability::ProgramManager < Ability
@managed_program_localization_ids ||= Education::Program::Localization.where(about_id: managed_program_ids).pluck(:id)
end
def managed_program_category_ids
@managed_program_category_ids ||= Education::Program::Category.where(university_id: @user.university_id).pluck(:id)
end
def managed_program_category_localization_ids
@managed_program_category_localization_ids ||= Education::Program::Category::Localization.where(about_id: managed_program_category_ids).pluck(:id)
end
def managed_person_localization_ids
@managed_person_localization_ids ||= begin
University::Person::Localization
......
......@@ -7,15 +7,17 @@ class Ability::WebsiteManager < Ability
can :manage, Communication::Website::Localization, university_id: @user.university_id, communication_website_id: managed_websites_ids
can :manage, Communication::Website::Agenda::Event, university_id: @user.university_id, communication_website_id: managed_websites_ids
can :manage, Communication::Website::Agenda::Category, university_id: @user.university_id, communication_website_id: managed_websites_ids
can :manage, Communication::Website::Post::Category, university_id: @user.university_id, communication_website_id: managed_websites_ids
can [:read, :update, :reorder], Communication::Website::Menu, university_id: @user.university_id, communication_website_id: managed_websites_ids
can :manage, Communication::Website::Menu::Item, university_id: @user.university_id, website_id: managed_websites_ids
can :create, Communication::Website::Menu::Item, university_id: @user.university_id
can :manage, Communication::Website::Page, university_id: @user.university_id, communication_website_id: managed_websites_ids
can :manage, Communication::Website::Portfolio::Category, university_id: @user.university_id, communication_website_id: managed_websites_ids
can :manage, Communication::Website::Page::Category, university_id: @user.university_id, communication_website_id: managed_websites_ids
can :manage, Communication::Website::Portfolio::Project, university_id: @user.university_id, communication_website_id: managed_websites_ids
can :manage, Communication::Website::Portfolio::Category, university_id: @user.university_id, communication_website_id: managed_websites_ids
can :manage, Communication::Website::Post, university_id: @user.university_id, communication_website_id: managed_websites_ids
can :manage, Communication::Website::Post::Category, university_id: @user.university_id, communication_website_id: managed_websites_ids
can :manage, University::Organization, university_id: @user.university_id
can :manage, University::Organization::Category, university_id: @user.university_id
can :manage, University::Person, university_id: @user.university_id
can :manage, University::Person::Category, university_id: @user.university_id
can :manage, University::Person::Experience, university_id: @user.university_id
......@@ -49,6 +51,14 @@ class Ability::WebsiteManager < Ability
end
end
def managed_page_category_localization_ids
@managed_page_category_localization_ids ||= begin
Communication::Website::Page::Category::Localization
.where(communication_website_id: managed_websites_ids)
.pluck(:id)
end
end
def managed_portfolio_category_localization_ids
@managed_portfolio_category_localization_ids ||= begin
Communication::Website::Portfolio::Category::Localization
......@@ -82,15 +92,18 @@ class Ability::WebsiteManager < Ability
end
def manage_blocks
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'Communication::Website::Agenda::Category::Localization', about_id: managed_agenda_category_localization_ids
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'Communication::Website::Agenda::Event::Localization', about_id: managed_agenda_event_localization_ids
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'Communication::Website::Agenda::Category::Localization', about_id: managed_agenda_category_localization_ids
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'Communication::Website::Page::Localization', about_id: managed_page_localization_ids
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'Communication::Website::Portfolio::Category::Localization', about_id: managed_portfolio_category_localization_ids
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'Communication::Website::Page::Category::Localization', about_id: managed_page_category_localization_ids
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'Communication::Website::Portfolio::Project::Localization', about_id: managed_portfolio_project_localizations_ids
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'Communication::Website::Post::Category::Localization', about_id: managed_post_category_localization_ids
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'Communication::Website::Portfolio::Category::Localization', about_id: managed_portfolio_category_localization_ids
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'Communication::Website::Post::Localization', about_id: managed_post_localization_ids
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'Communication::Website::Post::Category::Localization', about_id: managed_post_category_localization_ids
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'University::Organization::Localization', about_id: University::Organization::Localization.where(university_id: @user.university_id).pluck(:id)
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'University::Organization::Category::Localization', about_id: University::Organization::Category::Localization.where(university_id: @user.university_id).pluck(:id)
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'University::Person::Localization', about_id: University::Person::Localization.where(university_id: @user.university_id).pluck(:id)
can :manage, Communication::Block, university_id: @user.university_id, about_type: 'University::Person::Category::Localization', about_id: University::Person::Category::Localization.where(university_id: @user.university_id).pluck(:id)
can :create, Communication::Block
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment