Sha256: a2119bfe29c0f72409f72ecea0d10a28c7be59d0b0be40dc60852d2119a8d246

Contents?: true

Size: 1.01 KB

Versions: 6

Compression:

Stored size: 1.01 KB

Contents

module Gritano
  module Core
    class Permission < ActiveRecord::Base
      belongs_to :user
      belongs_to :repository

      validates :user_id, presence: true
      validates :repository_id, presence: true
      validates :access, presence: true

      def add_access(type)
        if type == :read
          self.access = READ | (self.access || 0)
        elsif type == :write
          self.access = WRITE | (self.access || 0)
        else
          return false
        end
        return true
      end

      def remove_access(access)
        if access == :read
          self.access = (self.access || 0) & (~ READ)
        elsif access == :write
          self.access = (self.access || 0) & (~ WRITE)
        else
          return false
        end
        return true
      end

      def is(type)
        if type == :read
          return (self.access & READ) == READ
        elsif type == :write
          return (self.access & WRITE) == WRITE
        end
      end

      READ = 1
      WRITE = 2
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
gritano-core-2.0.2 lib/gritano-core/permission.rb
gritano-core-2.0.1 lib/gritano-core/permission.rb
gritano-core-2.0.0 lib/gritano-core/permission.rb
gritano-core-1.1.2 lib/gritano-core/permission.rb
gritano-core-1.1.1 lib/gritano-core/permission.rb
gritano-core-1.1.0 lib/gritano-core/permission.rb