|
|
|
@@ -4,7 +4,9 @@ module ProjectOperable |
|
|
|
included do |
|
|
|
has_many :members, dependent: :destroy |
|
|
|
has_many :except_owner_members, -> { joins(:roles).where.not(roles: { name: 'Manager' }) }, class_name: 'Member' |
|
|
|
has_many :manager_members, -> { joins(:roles).where(roles: { name: 'Manager' }) }, class_name: 'Member' |
|
|
|
has_many :managers, -> { joins(:roles).where(roles: { name: 'Manager' }) }, class_name: 'Member' |
|
|
|
has_many :developers, -> { joins(:roles).where(roles: { name: 'Developer' }) }, class_name: 'Member' |
|
|
|
has_many :reporters, -> { joins(:roles).where(roles: { name: 'Reporter' }) }, class_name: 'Member' |
|
|
|
end |
|
|
|
|
|
|
|
def add_member!(user_id, role_name='Developer') |
|
|
|
@@ -35,6 +37,20 @@ module ProjectOperable |
|
|
|
self.owner == user |
|
|
|
end |
|
|
|
|
|
|
|
# 项目管理员(包含项目拥有者),权限:仓库设置、仓库可读可写 |
|
|
|
def manager?(user) |
|
|
|
managers.exists? user |
|
|
|
end |
|
|
|
|
|
|
|
# 项目开发者,可读可写权限 |
|
|
|
def develper?(user) |
|
|
|
developers.exists? user |
|
|
|
end |
|
|
|
# 报告者,只有可读权限 |
|
|
|
def reporter?(user) |
|
|
|
reporters.exists? user |
|
|
|
end |
|
|
|
|
|
|
|
def set_developer_role(member) |
|
|
|
role = Role.find_by_name 'Developer' |
|
|
|
member.member_roles.create!(role: role) |
|
|
|
|