module Authority

Public Instance Methods

add_access(user, *access) click to toggle source

Compatible with all access rights Should be rewrited for new access rights

# File app/roles/authority.rb, line 4
def add_access(user, *access)
  access = if access.include?(:admin)
             { project_access: UsersProject::MASTER }
           elsif access.include?(:write)
             { project_access: UsersProject::DEVELOPER }
           else
             { project_access: UsersProject::REPORTER }
           end
  opts = { user: user }
  opts.merge!(access)
  users_projects.create(opts)
end
allow_read_for?(user) click to toggle source
# File app/roles/authority.rb, line 39
def allow_read_for?(user)
  !users_projects.where(user_id: user.id).empty?
end
dev_access_for?(user) click to toggle source
# File app/roles/authority.rb, line 51
def dev_access_for?(user)
  !users_projects.where(user_id: user.id, project_access: [UsersProject::DEVELOPER, UsersProject::MASTER]).empty?
end
guest_access_for?(user) click to toggle source
# File app/roles/authority.rb, line 43
def guest_access_for?(user)
  !users_projects.where(user_id: user.id).empty?
end
master_access_for?(user) click to toggle source
# File app/roles/authority.rb, line 55
def master_access_for?(user)
  !users_projects.where(user_id: user.id, project_access: [UsersProject::MASTER]).empty?
end
report_access_for?(user) click to toggle source
# File app/roles/authority.rb, line 47
def report_access_for?(user)
  !users_projects.where(user_id: user.id, project_access: [UsersProject::REPORTER, UsersProject::DEVELOPER, UsersProject::MASTER]).empty?
end
repository_masters() click to toggle source
# File app/roles/authority.rb, line 33
def repository_masters
  keys = Key.joins({user: :users_projects}).
    where("users_projects.project_id = ? AND users_projects.project_access = ?", id, UsersProject::MASTER)
  keys.map(&:identifier)
end
repository_readers() click to toggle source
# File app/roles/authority.rb, line 21
def repository_readers
  keys = Key.joins({user: :users_projects}).
    where("users_projects.project_id = ? AND users_projects.project_access = ?", id, UsersProject::REPORTER)
  keys.map(&:identifier) + deploy_keys.map(&:identifier)
end
repository_writers() click to toggle source
# File app/roles/authority.rb, line 27
def repository_writers
  keys = Key.joins({user: :users_projects}).
    where("users_projects.project_id = ? AND users_projects.project_access = ?", id, UsersProject::DEVELOPER)
  keys.map(&:identifier)
end
reset_access(user) click to toggle source
# File app/roles/authority.rb, line 17
def reset_access(user)
  users_projects.where(project_id: self.id, user_id: user.id).destroy if self.id
end