class Olelo::User
Attributes
email[RW]
groups[R]
name[R]
Public Class Methods
anonymous(request)
click to toggle source
# File lib/olelo/user.rb, line 86 def anonymous(request) ip = request.ip || 'unknown-ip' host = request.ip && Socket.gethostbyaddr(request.ip.split('.').map(&:to_i).pack('C*')).first rescue nil new(host ? "#{host} (#{ip})" : ip, "anonymous@#{ip}") end
authenticate(name, password)
click to toggle source
# File lib/olelo/user.rb, line 100 def authenticate(name, password) service.authenticate(name, password).tap {|user| user.groups << 'user' } end
current()
click to toggle source
# File lib/olelo/user.rb, line 63 def current Thread.current[:olelo_user] end
current=(user)
click to toggle source
# File lib/olelo/user.rb, line 67 def current=(user) Thread.current[:olelo_user] = user end
find(name)
click to toggle source
# File lib/olelo/user.rb, line 96 def find(name) find!(name) rescue nil end
find!(name)
click to toggle source
# File lib/olelo/user.rb, line 92 def find!(name) service.find(name) end
logged_in?()
click to toggle source
# File lib/olelo/user.rb, line 71 def logged_in? current && current.groups.include?('user') end
new(name, email, groups = nil)
click to toggle source
# File lib/olelo/user.rb, line 23 def initialize(name, email, groups = nil) @name, @email, @groups = name, email, Set.new(groups.to_a) end
service()
click to toggle source
# File lib/olelo/user.rb, line 75 def service @service ||= Service[Config['authentication.service']].new(Config['authentication'][Config['authentication.service']]) end
signup(name, password, confirm, email)
click to toggle source
# File lib/olelo/user.rb, line 108 def signup(name, password, confirm, email) validate_password(password, confirm) user = new(name, email, %w(user)) user.validate service.signup(user, password) user end
supports?(method)
click to toggle source
# File lib/olelo/user.rb, line 104 def supports?(method) service.respond_to?(method) end
validate_password(password, confirm)
click to toggle source
# File lib/olelo/user.rb, line 79 def validate_password(password, confirm) check do |errors| errors << :passwords_do_not_match.t if password != confirm errors << :empty_password.t if password.blank? end end
Public Instance Methods
change_password(oldpassword, password, confirm)
click to toggle source
# File lib/olelo/user.rb, line 27 def change_password(oldpassword, password, confirm) User.validate_password(password, confirm) User.service.change_password(self, oldpassword, password) end
update(&block)
click to toggle source
# File lib/olelo/user.rb, line 32 def update(&block) copy = dup block.call(copy) validate User.service.update(copy) instance_variables.each do |name| instance_variable_set(name, copy.instance_variable_get(name)) end end
validate()
click to toggle source
# File lib/olelo/user.rb, line 42 def validate check do |errors| errors << :invalid_email.t if email !~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i errors << :invalid_name.t if name !~ /[\w\.\-\+]+/ end end