Class: Yus::AutoSession
Instance Method Summary
collapse
-
#allowed?(*args) ⇒ Boolean
-
#create_entity(name, pass = nil, valid_until = nil, valid_from = Time.now) ⇒ Object
-
#entity_allowed?(name, *args) ⇒ Boolean
-
#get_entity_preference(name, key, domain = @domain) ⇒ Object
-
#get_entity_preferences(name, keys, domain = @domain) ⇒ Object
-
#grant(name, action, item = nil, expires = nil) ⇒ Object
-
#initialize(needle, domain) ⇒ AutoSession
constructor
A new instance of AutoSession.
-
#rename(oldname, newname) ⇒ Object
-
#reset_entity_password(name, token, password) ⇒ Object
-
#set_entity_preference(name, key, value, domain = @domain) ⇒ Object
Methods inherited from Session
#affiliate, #delete_entity, #destroy!, #disaffiliate, #dump_to_yaml, #entities, #expired?, #find_entity, #last_login, #remove_token, #revoke, #set_password
Constructor Details
#initialize(needle, domain) ⇒ AutoSession
Returns a new instance of AutoSession.
197
198
199
200
|
# File 'lib/yus/session.rb', line 197
def initialize(needle, domain)
@domain = domain
super(needle)
end
|
Instance Method Details
#allowed?(*args) ⇒ Boolean
201
202
203
|
# File 'lib/yus/session.rb', line 201
def allowed?(*args) false
end
|
#create_entity(name, pass = nil, valid_until = nil, valid_from = Time.now) ⇒ Object
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
|
# 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) ⇒ Boolean
221
222
223
|
# 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) ⇒ Object
224
225
226
227
228
229
230
|
# 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) ⇒ Object
231
232
233
234
235
236
237
238
239
240
|
# 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) ⇒ Object
278
279
280
281
282
283
284
285
286
|
# 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) ⇒ Object
241
242
243
244
245
246
247
248
249
250
251
252
253
|
# 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) ⇒ Object
254
255
256
257
258
259
260
261
262
263
264
265
266
|
# 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) ⇒ Object
267
268
269
270
271
272
273
274
275
276
277
|
# 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
|