From df48d8988116fdce3e15d1822a547c68165c8276 Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 18 May 2015 17:02:02 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=BA=93=E6=9D=83=E9=99=90?= =?UTF-8?q?=E5=B0=81=E8=A3=85=20=E6=B7=BB=E5=8A=A0admin=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E8=B5=84=E6=BA=90=E7=9A=84=E5=85=AC=E5=BC=80?= =?UTF-8?q?=E7=A7=81=E6=9C=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/application_helper.rb | 25 +++++++++++++++---- .../layouts/_base_development_group.html.erb | 19 ++++---------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 506adceec..0836bf307 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -593,22 +593,37 @@ module ApplicationHelper Project.project_tree(projects, &block) end + # 项目版本库可见权限判断 + # 条件:1、modules中设置不可见或项目没有版本库;2、如果项目是私有或者项目版本库隐藏则必须是项目成员才可见 + def visible_repository?(project) + @result = false + unless project.enabled_modules.where("name = 'repository'").empty? || project.repositories.count == 0 + if (project.hidden_repo || !project.is_public?) + if User.current.member_of?(project) + @result = true + end + else + @result = true + end + end + return @result + end + # 判断当前用户是否为项目管理员 def is_project_manager?(user_id, project_id) @result = false mem = Member.where("user_id = ? and project_id = ?",user_id, project_id) unless mem.blank? - mem.first.roles.to_s.include?("Manager") - @result = true + @result = mem.first.roles.to_s.include?("Manager") ? true : false end return @result end - # 私有项目资源不能引用,不能设置公开私有 - # 公开项目资源可以应用,管理员和资源上传者拥有设置公开私有权限 + # 公开项目资源可以引用,admin和管理员和资源上传者拥有设置公开私有权限 def authority_pubilic_for_files(project, file) @result = false - if (is_project_manager?(User.current.id, @project.id) || file.author_id == User.current.id) && project_contains_attachment?(project,file) && file.container_id == project.id && file.container_type == "Project" + if (is_project_manager?(User.current.id, @project.id) || file.author_id == User.current.id || User.current.admin) && + project_contains_attachment?(project,file) && file.container_id == project.id && file.container_type == "Project" @result = true end return @result diff --git a/app/views/layouts/_base_development_group.html.erb b/app/views/layouts/_base_development_group.html.erb index 4b0692f9e..218fc186d 100644 --- a/app/views/layouts/_base_development_group.html.erb +++ b/app/views/layouts/_base_development_group.html.erb @@ -39,20 +39,11 @@ <% end %> <%# --版本库被设置成私有、module中设置不显示、没有创建版本库 三种情况不显示-- %> - <% unless @project.enabled_modules.where("name = 'repository'").empty? || @project.repositories.count == 0 %> - <% if @project.hidden_repo || !@project.is_public? %> - <% if User.current.member_of?(@project) %> - - <% end %> - <% else %> - - <% end %> + <% if visible_repository?(@project) %> + <% end %>