Sha256: b86cc4f2f55372585b2a3236daa40db40b965247905cfaa213ecff2a4a674dc0

Contents?: true

Size: 960 Bytes

Versions: 13

Compression:

Stored size: 960 Bytes

Contents

module Gritano
  class User < ActiveRecord::Base
    validates :login, presence: true
    validates_uniqueness_of :login
    
    has_many :permissions
    has_many :repositories, through: :permissions
    has_many :keys
    
    def add_access(repo, access)
      change_access(repo, "add", access)
    end
    
    def remove_access(repo, access)
      change_access(repo, "remove", access)
    end
    
    def change_access(repo, op, access)
      permission = Permission.find_by_user_id_and_repository_id(self.id, repo.id) || Permission.new
      permission.user_id = self.id
      permission.repository_id = repo.id
      if permission.send("#{op}_access", access)
        return permission.save
      else
        return false
      end
    end
    
    def check_access(repo, access)
      permission = Permission.find_by_user_id_and_repository_id(self.id, repo.id)
      return permission.is(access) if permission
      return false
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
gritano-0.9.4 lib/gritano/models/user.rb
gritano-0.9.3 lib/gritano/models/user.rb
gritano-0.9.2 lib/gritano/models/user.rb
gritano-0.9.1 lib/gritano/models/user.rb
gritano-0.9.0 lib/gritano/models/user.rb
gritano-0.8.1 lib/gritano/models/user.rb
gritano-0.8.0 lib/gritano/models/user.rb
gritano-0.7.2 lib/gritano/models/user.rb
gritano-0.7.1 lib/gritano/models/user.rb
gritano-0.7.0 lib/gritano/models/user.rb
gritano-0.6.0 lib/gritano/models/user.rb
gritano-0.5.4 lib/gritano/models/user.rb
gritano-0.5.3 lib/gritano/models/user.rb