lib/olelo/user.rb in olelo-0.9.2 vs lib/olelo/user.rb in olelo-0.9.3

- old
+ new

@@ -27,11 +27,11 @@ def change_password(oldpassword, password, confirm) User.validate_password(password, confirm) User.service.change_password(self, oldpassword, password) end - def modify(&block) + def update(&block) copy = dup block.call(copy) validate User.service.update(copy) instance_variables.each do |name| @@ -40,43 +40,25 @@ end 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\.\-\+_]+/ + errors << :invalid_name.t if name !~ /[\w\.\-\+]+/ end end class Service include Util extend Factory - class NotSupportedError < AuthenticationError - def initialize(name) - super(:auth_unsupported.t(:name => name)) - end - end - def find(name) raise NotImplementedError end def authenticate(name, password) raise NotImplementedError end - - def create(user, password) - raise NotSupportedError('create') - end - - def update(user) - raise NotSupportedError('update') - end - - def change_password(user, oldpassword, password) - raise NotSupportedError('change_password') - end end class<< self def current Thread.current[:olelo_user] @@ -101,12 +83,12 @@ end end def anonymous(request) ip = request.ip || 'unknown-ip' - name = request.remote_host ? "#{request.remote_host} (#{ip})" : ip - new(name, "anonymous@#{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 def find!(name) service.find(name) end @@ -117,14 +99,18 @@ def authenticate(name, password) service.authenticate(name, password).tap {|user| user.groups << 'user' } end - def create(name, password, confirm, email) + def supports?(method) + service.respond_to?(method) + end + + def signup(name, password, confirm, email) validate_password(password, confirm) user = new(name, email, %w(user)) user.validate - service.create(user, password) + service.signup(user, password) user end end end