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