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