From ca449ccc8a2a97737f516435ecce0051a2d55d93 Mon Sep 17 00:00:00 2001 From: xxq250 Date: Tue, 28 Mar 2023 14:38:44 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=9D=83=E9=99=90=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0bot=E7=94=A8=E6=88=B7=E6=9D=83=E9=99=90=EF=BC=8C?= =?UTF-8?q?=E5=B7=B2=E5=AE=89=E8=A3=85bot=EF=BC=8C=E5=BD=93=E5=89=8Dbot?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=8D=B3=E6=8B=A5=E6=9C=89=E6=9D=83=E9=99=90?= =?UTF-8?q?=EF=BC=8C=E6=9D=83=E9=99=90=E7=B2=92=E5=BA=A6=E5=BE=85=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/concerns/project_operable.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/models/concerns/project_operable.rb b/app/models/concerns/project_operable.rb index 0bac02ce6..d5d45a468 100644 --- a/app/models/concerns/project_operable.rb +++ b/app/models/concerns/project_operable.rb @@ -190,22 +190,24 @@ module ProjectOperable end # 项目管理员(包含项目拥有者),权限:仓库设置、仓库可读可写 + # 增加bot用户权限,已安装bot,当前bot用户即拥有权限,权限粒度待完善 def manager?(user) if owner.is_a?(User) - managers.exists?(user_id: user.id) + managers.exists?(user_id: user.id) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?) elsif owner.is_a?(Organization) - managers.exists?(user_id: user.id) || owner.is_owner?(user.id) || (owner.is_only_admin?(user.id) && (teams.pluck(:id) & user.teams.pluck(:id)).size > 0) + managers.exists?(user_id: user.id) || owner.is_owner?(user.id) || (owner.is_only_admin?(user.id) && (teams.pluck(:id) & user.teams.pluck(:id)).size > 0) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?) else false end end # 项目开发者,可读可写权限 + # 增加bot用户权限,已安装当前bot用户对应的bot即拥有权限,权限粒度待完善 def develper?(user) if owner.is_a?(User) - developers.exists?(user_id: user.id) + developers.exists?(user_id: user.id) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?) elsif owner.is_a?(Organization) - developers.exists?(user_id: user.id) || (owner.is_only_write?(user.id) && (teams.pluck(:id) & user.teams.pluck(:id)).size > 0) + developers.exists?(user_id: user.id) || (owner.is_only_write?(user.id) && (teams.pluck(:id) & user.teams.pluck(:id)).size > 0) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?) else false end