Sha256: b65f20700f82c2c2f835c5e646a5d57277353e90b55b6f0804004dddda7378a3

Contents?: true

Size: 650 Bytes

Versions: 6

Compression:

Stored size: 650 Bytes

Contents

module RocketJobMissionControl
  class Authorization
    ROLES = %i[admin editor operator manager dirmon user view]
    attr_accessor *ROLES
    attr_accessor :login

    def initialize(roles: [], login: nil)
      @login = login
      return if roles.blank?
      invalid_roles = roles - ROLES
      raise(ArgumentError, "Invalid Roles Supplied: #{invalid_roles.inspect}") unless invalid_roles.empty?

      roles.each { |r| inherit_less_privilege_roles(r) }
    end

    def inherit_less_privilege_roles(role)
      index = ROLES.index(role)
      roles = ROLES[index..-1]
      roles.each { |role| public_send("#{role}=", true) }
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rocketjob_mission_control-4.3.0 app/models/rocket_job_mission_control/authorization.rb
rocketjob_mission_control-4.2.1 app/models/rocket_job_mission_control/authorization.rb
rocketjob_mission_control-4.2.0 app/models/rocket_job_mission_control/authorization.rb
rocketjob_mission_control-4.1.0 app/models/rocket_job_mission_control/authorization.rb
rocketjob_mission_control-4.0.0 app/models/rocket_job_mission_control/authorization.rb
rocketjob_mission_control-3.2.0 app/models/rocket_job_mission_control/authorization.rb