<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>app/controllers/oauth_controller.rb</filename>
    </added>
    <added>
      <filename>app/models/oauth_request.rb</filename>
    </added>
    <added>
      <filename>app/views/oauth/request_token.html.erb</filename>
    </added>
    <added>
      <filename>db/migrate/20090513063838_create_oauth_requests.rb</filename>
    </added>
    <added>
      <filename>demo/twitter.pem</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,5 +1,5 @@
 class AccountController &lt; ApplicationController
-  before_filter :authenticate, :except=&gt;[:front, :login, :end_session]
+  before_filter :authenticateUser, :except=&gt;[:front, :login, :end_session]
 
   def index
     @tweets = @user.public_tweets.find(:all, :include =&gt; :user, :limit =&gt; 20  )</diff>
      <filename>app/controllers/account_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -21,7 +21,8 @@ class ApplicationController &lt; ActionController::Base
     return true
   end
 
-  def authenticate
+  def authenticateUser
+    login_via_oauth()
     x = login_required
     @user = current_user
     x
@@ -29,6 +30,20 @@ class ApplicationController &lt; ActionController::Base
 
   private
 
+  def login_via_oauth
+    auth = request.headers['Authorization']
+    if (auth)
+      if (auth=~/^OAuth.*oauth_token=&quot;(\d+)-(.*?)&quot;/)
+        user_id = $1;
+        crypted_password = $2;
+        user = User.find_by_id(user_id)
+        if (user &amp;&amp; user.crypted_password == crypted_password)
+          @current_user = user
+        end  
+      end
+    end
+  end
+
   def render_tweets(root=&quot;statuses&quot;)
     respond_to do |format|
       format.html { }</diff>
      <filename>app/controllers/application.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 class DirectMessagesController &lt; ApplicationController
-  before_filter :authenticate
+  before_filter :authenticateUser
 
   def index
     @tweets = @user.direct_messages_received.find(:all, :include =&gt; :user,:limit =&gt; 25)</diff>
      <filename>app/controllers/direct_messages_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 class FavoritesController &lt; ApplicationController
-  before_filter :authenticate
+  before_filter :authenticateUser
 
   def index
     @tweets = @user.favorite_tweets</diff>
      <filename>app/controllers/favorites_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 class FriendshipsController &lt; ApplicationController
-  before_filter :authenticate
+  before_filter :authenticateUser
 
   def exists
     respond_to do |format|</diff>
      <filename>app/controllers/friendships_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 class HelpController &lt; ApplicationController
-  before_filter :authenticate
+  before_filter :authenticateUser
 
   def test
     respond_to do |format|</diff>
      <filename>app/controllers/help_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 class StatusesController &lt; ApplicationController
-  before_filter :authenticate, :except =&gt; [:show]
+  before_filter :authenticateUser, :except =&gt; [:show]
 
   def replies
     @tweets = @user.replies.find(:all, :include =&gt; :user,:limit =&gt; 25)</diff>
      <filename>app/controllers/statuses_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 class UserController &lt; ApplicationController
-  before_filter :authenticate, :lookup_duser
+  before_filter :authenticateUser, :lookup_duser
   
   def index
     @tweets = @duser.public_tweets.find(:all,:include =&gt; :user,:limit =&gt; 20  )</diff>
      <filename>app/controllers/user_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -37,11 +37,11 @@ class User &lt; ActiveRecord::Base
   # This will also let us return a human error message.
   #
   def self.authenticate(login, password)
+    puts &quot;authenticate(#{login},#{password})&quot;
      u = fetch(login)
      if (!u.crypted_password)
          u.password = password
-         u.save!
-         return u
+         return u.save ? u : nil
      end
      u.authenticated?(password) ? u : nil
   end</diff>
      <filename>app/models/user.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,13 +9,20 @@
 #
 # It's strongly recommended to check this file into your version control system.
 
-ActiveRecord::Schema.define(:version =&gt; 20090226213219) do
+ActiveRecord::Schema.define(:version =&gt; 20090513063838) do
 
   create_table &quot;favorites&quot;, :id =&gt; false, :force =&gt; true do |t|
     t.integer &quot;user_id&quot;,  :null =&gt; false
     t.integer &quot;tweet_id&quot;, :null =&gt; false
   end
 
+  create_table &quot;oauth_requests&quot;, :force =&gt; true do |t|
+    t.integer  &quot;user_id&quot;
+    t.string   &quot;request_token&quot;
+    t.datetime &quot;created_at&quot;
+    t.datetime &quot;updated_at&quot;
+  end
+
   create_table &quot;tweets&quot;, :force =&gt; true do |t|
     t.string   &quot;tweet&quot;
     t.string   &quot;source&quot;</diff>
      <filename>db/schema.rb</filename>
    </modified>
    <modified>
      <diff>@@ -40,7 +40,7 @@ server.pid-file             = &quot;/var/run/lighttpd.pid&quot;
 
 $SERVER[&quot;socket&quot;] == &quot;:443&quot; {
   ssl.engine  = &quot;enable&quot;
-  ssl.pemfile = &quot;demo/localhost.pem&quot; # replace with your actual filename
+  ssl.pemfile = &quot;demo/twitter.pem&quot; # replace with your actual filename
   # ssl.ca-file = &quot;/etc/lighttpd/sf_intermediate_bundle.crt&quot; # some cert providers require you add an intermediate cert.
 }
 </diff>
      <filename>demo/lighttpd.conf</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>590a3a297e1d79c195f6803f647fa791e6188f4b</id>
    </parent>
  </parents>
  <author>
    <name>Rob Nielsen</name>
    <email>rob@refactor.com.au</email>
  </author>
  <url>http://github.com/rnielsen/twetter/commit/cb62f8b23bc977d0e732d95a2656fefa32a06cf7</url>
  <id>cb62f8b23bc977d0e732d95a2656fefa32a06cf7</id>
  <committed-date>2009-05-13T14:54:04-07:00</committed-date>
  <authored-date>2009-05-13T14:54:04-07:00</authored-date>
  <message>added basic oauth support</message>
  <tree>0704476780ee3e863ed41284a9ae8f770ac38683</tree>
  <committer>
    <name>Rob Nielsen</name>
    <email>rob@refactor.com.au</email>
  </committer>
</commit>
