Per discussion with Tom in IRC.
end
def show_pane_list
- %w(Contents Sharing Advanced)
+ if @user_is_manager
+ %w(Contents Sharing Advanced)
+ else
+ %w(Contents Advanced)
+ end
end
def remove_item
@user_is_manager = true
rescue ArvadosApiClient::AccessForbiddenException,
ArvadosApiClient::NotFoundException
- @share_links = Link.filter([['head_uuid', '=', @object.uuid],
- ['link_class', '=', 'permission']])
+ @share_links = []
@user_is_manager = false
end
end
%>
-<% if @user_is_manager %>
<div class="pull-right">
<% ["users", "groups"].each do |share_class| %>
<% end %>
</div>
-<% end %>
<p>Permissions for this project are inherited from the <%= owner_type %>
<i class="fa fa-fw <%= owner_icon %>"></i>
<table id="project_sharing" class="topalign table" style="clear: both; margin-top: 1em;">
<tr>
<th>User/Group Name</th>
- <th<%= raw(' colspan="2"') if @user_is_manager %>>Project Access</th>
+ <th colspan="2">Project Access</th>
</tr>
<% @share_links.andand.each do |link|
<i class="fa fa-fw <%= fa_icon_class_for_uuid(link.tail_uuid) %>"></i>
<%= link_to_if_arvados_object(link.tail_uuid, link_text: link_name) %>
</td>
- <% if @user_is_manager %>
<td><%= link_to perm_name_desc_map[link.name], '#', {
"data-emptytext" => "Read",
"data-placement" => "bottom",
<i class="fa fa-fw fa-trash-o"></i>
<% end %>
</td>
- <% else %>
- <td>
- <%= perm_name_desc_map[link.name] %>
- </td>
- <% end %>
</tr>
<% end %>
</table>
def user_can_manage(user_sym, group_key)
get(:show, {id: api_fixture("groups")[group_key]["uuid"]},
session_for(user_sym))
- assigns(:user_is_manager)
+ is_manager = assigns(:user_is_manager)
+ assert_not_nil(is_manager, "user_is_manager flag not set")
+ if not is_manager
+ assert_empty(assigns(:share_links),
+ "non-manager has share links set")
+ end
+ is_manager
end
test "admin can_manage aproject" do
"revoking share did not remove row from sharing table")
end
- test "project viewer can see project sharing, but not change it" do
+ test "project viewer can't see project sharing tab" do
show_project_using("project_viewer")
- click_on "Sharing"
- assert(page.has_text?("Project Viewer"), "did not find self on sharing tab")
- assert(page.has_no_link?("Share with users"),
- "read-only project user given option to add permissions")
- assert_empty(all("#project_sharing a").
- reject { |a| a[:href] =~ %r{/(users|groups)/[-0-9a-z]+$} },
- "read-only project user given option to modify permissions")
+ assert(page.has_no_link?("Sharing"),
+ "read-only project user sees sharing tab")
end
test "project owner can manage sharing for another user" do