class Yus::AutoSession

Public Class Methods

new(needle, domain) click to toggle source
Calls superclass method Yus::Session::new
# File lib/yus/session.rb, line 197
def initialize(needle, domain)
  @domain = domain
  super(needle)
end

Public Instance Methods

allowed?(*args) click to toggle source
# File lib/yus/session.rb, line 201
def allowed?(*args) # AutoSession
  false
end
create_entity(name, pass=nil, valid_until=nil, valid_from=Time.now) click to toggle source
# File lib/yus/session.rb, line 204
def create_entity(name, pass=nil, valid_until=nil, valid_from=Time.now)
  info("create_entity(name=#{name}, valid_until=#{valid_until}, valid_from=#{valid_from})")
  entity = nil
  @mutex.synchronize {
    if(@needle.persistence.find_entity(name))
      debug("create_entity: Duplicate Name: '#{name}'")
      raise DuplicateNameError, "Duplicate name: #{name}"
    end
    entity = Entity.new(name, valid_until, valid_from)
    entity.grant('set_password', name)
    if(pass)
      entity.passhash = @needle.config.digest.hexdigest(pass)
    end
    @needle.persistence.add_entity(entity)
  }
  touch!
end
entity_allowed?(name, *args) click to toggle source
# File lib/yus/session.rb, line 221
def entity_allowed?(name, *args)
  find_or_fail(name).allowed?(*args)
end
get_entity_preference(name, key, domain=@domain) click to toggle source
# File lib/yus/session.rb, line 224
def get_entity_preference(name, key, domain=@domain)
  debug("get_entity_preference(name=#{name}, key=#{key}, domain=#{domain})")
  @mutex.synchronize {
    user = find_or_fail(name)
    user.get_preference(key, domain)
  }
end
get_entity_preferences(name, keys, domain=@domain) click to toggle source
# File lib/yus/session.rb, line 231
def get_entity_preferences(name, keys, domain=@domain)
  debug("get_entity_preferences(name=#{name}, keys=#{keys}, domain=#{domain})")
  @mutex.synchronize {
    user = find_or_fail(name)
    keys.inject({}) { |memo, key|
      memo.store(key, user.get_preference(key, domain))
      memo
    }
  }
end
grant(name, action, item=nil, expires=nil) click to toggle source
# File lib/yus/session.rb, line 278
def grant(name, action, item=nil, expires=nil)
  info("grant(name=#{name}, action=#{action}, item=#{item}, expires=#{expires})")
  @mutex.synchronize {
    user = find_or_fail(name)
    user.grant(action, item || :everything, expires || :never)
    save(user)
  }
  touch!
end
rename(oldname, newname) click to toggle source
# File lib/yus/session.rb, line 241
def rename(oldname, newname)
  info("rename(#{oldname}, #{newname})")
  @mutex.synchronize {
    user = find_or_fail(oldname)
    if((other = @needle.persistence.find_entity(newname)) && other != user)
      raise DuplicateNameError, "Duplicate name: #{newname}"
    end
    user.revoke('set_password', oldname)
    user.rename(newname)
    user.grant('set_password', newname)
    save(user)
  }
end
reset_entity_password(name, token, password) click to toggle source
# File lib/yus/session.rb, line 254
def reset_entity_password(name, token, password)
  info("reset_entity_password(name=#{name}, token=#{token})")
  @mutex.synchronize {
    user = find_or_fail(name)
    unless(user.allowed?('reset_password', token))
      raise NotPrivilegedError, "You are not privileged to reset #{name}'s password"
    end
    user.passhash = @needle.config.digest.hexdigest(password)
    user.revoke('reset_password', token)
    save(user)
  }
  touch!
end
set_entity_preference(name, key, value, domain=@domain) click to toggle source
# File lib/yus/session.rb, line 267
def set_entity_preference(name, key, value, domain=@domain)
  debug("set_entity_preference(name=#{name}, key=#{key}, value=#{value}, domain=#{domain})")
  @mutex.synchronize {
    user = find_or_fail(name)
    unless(user.get_preference(key, domain))
      user.set_preference(key, value, domain)
      save(user)
    end
  }
  touch!
end