Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def User.authenticate *args
- options = args.options
- login = options.getopt([:login, :username, :email], args.shift).to_s.strip
- password = options.getopt(:password, args.shift).to_s.strip
- local = options.getopt(:local, ActionController.current.send('local_request?')) rescue false
- user = nil
- unless options.getopt(:caps) == false
- re = %r/[a-z]/
- caps = [login, password].all?{|arg| arg !~ re}
- else
- caps = false
- end
- [login, login.downcase].each do |login|
- next if login.blank?
- user =
- case login
- when %r/@/
- User.find_by_email(login) ||
- User.find_by_username(login)
- else
- User.find_by_username(login)
- end
- break unless caps
- break if user
- end
- return nil unless user
- if(user.password == password or (caps and (user.password == password.downcase)) or local)
- user
- else
- false
- end
- end
Add Comment
Please, Sign In to add comment