Sha256: 5fcd48f42e3f29adb21ca72741b54c2a8971412e8e14af767c953bc510628e7f

Contents?: true

Size: 1.54 KB

Versions: 7

Compression:

Stored size: 1.54 KB

Contents

module Aptible
  module Auth
    class Role < Resource
      belongs_to :organization
      has_many :memberships
      has_many :invitations

      field :id
      field :name
      field :privileged, type: Aptible::Resource::Boolean
      field :created_at, type: Time
      field :updated_at, type: Time

      def users
        @users ||= memberships.map(&:user).uniq
      end

      def set_account_permissions(account, scopes)
        account_permissions = account_permissions(account)
        existing_permissions = account_permissions.select do |permission|
          permission.destroy unless scopes.include? permission.scope
          return scopes.include? permission.scope
        end

        new_scopes = scopes - existing_permissions.map(&:scope)
        add_account_scopes(account, new_scopes)
      end

      def account_permissions(account)
        account.permissions.select do |permission|
          (link = permission.links[:role]) && link.href == href
        end
      end

      def add_account_scopes(account, scopes)
        scopes.each { |scope| add_account_scope(account, scope) }
      end

      def add_account_scope(account, scope)
        account.create_permission!(scope: scope, role: href)
      end

      def permissions
        require 'aptible/api'

        permissions = Aptible::Api::Permission.all(token: token,
                                                   headers: headers)
        permissions.select do |permission|
          (link = permission.links[:role]) && link.href == href
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
aptible-auth-0.8.5 lib/aptible/auth/role.rb
aptible-auth-0.8.4 lib/aptible/auth/role.rb
aptible-auth-0.8.3 lib/aptible/auth/role.rb
aptible-auth-0.8.2 lib/aptible/auth/role.rb
aptible-auth-0.8.1 lib/aptible/auth/role.rb
aptible-auth-0.7.1 lib/aptible/auth/role.rb
aptible-auth-0.7.0 lib/aptible/auth/role.rb