Hide navigation elements in the UI based on policies
This commit is contained in:
@ -4,6 +4,14 @@ module CodeOcean
|
||||
@user == @record.context.author
|
||||
end
|
||||
|
||||
def show?
|
||||
if @record.context.is_a?(Exercise)
|
||||
admin? || author? || !@record.hidden
|
||||
else
|
||||
admin? || author?
|
||||
end
|
||||
end
|
||||
|
||||
def create?
|
||||
if @record.context.is_a?(Exercise)
|
||||
admin? || author?
|
||||
|
@ -1,6 +1,7 @@
|
||||
li.dropdown-submenu
|
||||
- link = link.nil? ? "#" : link
|
||||
a.dropdown-item.dropdown-toggle href=link data-toggle="dropdown" = title
|
||||
ul.dropdown-menu.p-0
|
||||
- models.each do |model|
|
||||
= render('navigation_collection_link', model: model, cached: true)
|
||||
- if models.any? { |model| policy(model).index? }
|
||||
li.dropdown-submenu
|
||||
- link = link.nil? ? "#" : link
|
||||
a.dropdown-item.dropdown-toggle href=link data-toggle="dropdown" = title
|
||||
ul.dropdown-menu.p-0
|
||||
- models.each do |model|
|
||||
= render('navigation_collection_link', model: model, cached: true)
|
||||
|
@ -14,17 +14,17 @@ h1 = ExecutionEnvironment.model_name.human(count: 2)
|
||||
tbody
|
||||
- @execution_environments.each do |execution_environment|
|
||||
tr
|
||||
td = link_to(execution_environment.name, execution_environment)
|
||||
td = link_to(execution_environment.author, execution_environment.author)
|
||||
td = link_to_if(policy(execution_environment).show?, execution_environment.name, execution_environment)
|
||||
td = link_to_if(policy(execution_environment.author).show?, execution_environment.author, execution_environment.author)
|
||||
td = execution_environment.pool_size
|
||||
td = execution_environment.memory_limit
|
||||
td = symbol_for(execution_environment.network_enabled)
|
||||
td = execution_environment.permitted_execution_time
|
||||
td = link_to(t('shared.show'), execution_environment)
|
||||
td = link_to(t('shared.edit'), edit_execution_environment_path(execution_environment))
|
||||
td = link_to(t('shared.destroy'), execution_environment, data: {confirm: t('shared.confirm_destroy')}, method: :delete)
|
||||
td = link_to(t('.shell'), shell_execution_environment_path(execution_environment))
|
||||
td = link_to(t('shared.statistics'), statistics_execution_environment_path(execution_environment))
|
||||
td = link_to(t('shared.show'), execution_environment) if policy(execution_environment).show?
|
||||
td = link_to(t('shared.edit'), edit_execution_environment_path(execution_environment)) if policy(execution_environment).edit?
|
||||
td = link_to(t('shared.destroy'), execution_environment, data: {confirm: t('shared.confirm_destroy')}, method: :delete) if policy(execution_environment).destroy?
|
||||
td = link_to(t('.shell'), shell_execution_environment_path(execution_environment)) if policy(execution_environment).shell?
|
||||
td = link_to(t('shared.statistics'), statistics_execution_environment_path(execution_environment)) if policy(execution_environment).statistics?
|
||||
|
||||
= render('shared/pagination', collection: @execution_environments)
|
||||
p = render('shared/new_button', model: ExecutionEnvironment)
|
||||
|
Reference in New Issue
Block a user