<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>app/controllers/user_sessions_controller.rb</filename>
    </added>
    <added>
      <filename>app/controllers/users_controller.rb</filename>
    </added>
    <added>
      <filename>app/helpers/user_sessions_helper.rb</filename>
    </added>
    <added>
      <filename>app/helpers/users_helper.rb</filename>
    </added>
    <added>
      <filename>app/models/user.rb</filename>
    </added>
    <added>
      <filename>app/models/user_session.rb</filename>
    </added>
    <added>
      <filename>app/views/user_sessions/new.html.haml</filename>
    </added>
    <added>
      <filename>app/views/users/_form.html.haml</filename>
    </added>
    <added>
      <filename>app/views/users/edit.html.haml</filename>
    </added>
    <added>
      <filename>app/views/users/new.html.haml</filename>
    </added>
    <added>
      <filename>app/views/users/show.html.haml</filename>
    </added>
    <added>
      <filename>db/migrate/20090625145600_create_users.rb</filename>
    </added>
    <added>
      <filename>spec/controllers/user_sessions_controller_spec.rb</filename>
    </added>
    <added>
      <filename>spec/controllers/users_controller_spec.rb</filename>
    </added>
    <added>
      <filename>spec/factories/users.rb</filename>
    </added>
    <added>
      <filename>spec/models/user_spec.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,5 +1,6 @@
 class Admin::CommentsController &lt; ApplicationController
   layout &quot;admin/admin&quot;
+  before_filter :require_user
 
   def index
     @comments = Comment.paginate :page =&gt; params[:page], :order =&gt; &quot;created_at DESC&quot;</diff>
      <filename>app/controllers/admin/comments_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,6 @@
 class Admin::PostsController &lt; ApplicationController
   layout &quot;admin/admin&quot;
+  before_filter :require_user
   
   def index
     @posts = Post.paginate :page =&gt; params[:page], :order =&gt; &quot;created_at DESC&quot;</diff>
      <filename>app/controllers/admin/posts_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,6 @@
 class Admin::UploadsController &lt; ApplicationController
+  before_filter :require_user
+  
   def create
     @upload = Upload.new(params[:upload])
     flash[:notice] = &quot;Upload com sucesso.&quot; if @upload.save</diff>
      <filename>app/controllers/admin/uploads_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,8 +3,47 @@
 
 class ApplicationController &lt; ActionController::Base
   helper :all # include all helpers, all the time
+  helper_method :current_user_session, :current_user
   protect_from_forgery # See ActionController::RequestForgeryProtection for details
 
   # Scrub sensitive parameters from your log
-  # filter_parameter_logging :password
+  filter_parameter_logging :password
+  
+  private
+    def current_user_session
+      return @current_user_session if defined?(@current_user_session)
+      @current_user_session = UserSession.find
+    end
+
+    def current_user
+      return @current_user if defined?(@current_user)
+      @current_user = current_user_session &amp;&amp; current_user_session.record
+    end
+
+    def require_user
+      unless current_user
+        store_location
+        flash[:notice] = &quot;You must be logged in to access this page&quot;
+        redirect_to new_user_session_url
+        return false
+      end
+    end
+
+    def require_no_user
+      if current_user
+        store_location
+        flash[:notice] = &quot;You must be logged out to access this page&quot;
+        redirect_to account_url
+        return false
+      end
+    end
+
+    def store_location
+      session[:return_to] = request.request_uri
+    end
+
+    def redirect_back_or_default(default)
+      redirect_to(session[:return_to] || default)
+      session[:return_to] = nil
+    end
 end</diff>
      <filename>app/controllers/application_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,7 @@
 
   - form_for :upload, Upload.new, :url =&gt; admin_uploads_path, :html =&gt; { :multipart =&gt; true } do |form|
     = form.file_field :imagem
-    = form.submit &quot;Enviar&quot;
+    = form.submit &quot;Upload&quot;
 
 - form_for [:admin, @post] do |f|
   = f.error_messages</diff>
      <filename>app/views/admin/posts/_form.html.haml</filename>
    </modified>
    <modified>
      <diff>@@ -10,6 +10,15 @@
   
   %body
     #container
+      #user_nav
+        = link_to &quot;Posts&quot;, admin_posts_path
+        |
+        = link_to &quot;Coment&#225;rios&quot;, admin_comments_path
+        |
+        = link_to &quot;Perfil&quot;, edit_user_path(:current)
+        |
+        = link_to &quot;Logout&quot;, logout_path
+
       - flash.each do |name, msg|
         = content_tag :div, msg, :id =&gt; &quot;flash_#{name}&quot;
       </diff>
      <filename>app/views/layouts/admin/admin.html.haml</filename>
    </modified>
    <modified>
      <diff>@@ -23,6 +23,7 @@ Rails::Initializer.run do |config|
   config.gem &quot;RedCloth&quot;, :lib =&gt; &quot;redcloth&quot;
   config.gem &quot;mislav-will_paginate&quot;, :lib =&gt; &quot;will_paginate&quot;
   config.gem &quot;thoughtbot-paperclip&quot;, :lib =&gt; &quot;paperclip&quot;
+  config.gem &quot;authlogic&quot;
 
   # Only load the plugins named here, in the order given (default is alphabetical).
   # :all can be used as a placeholder for all plugins not explicitly named</diff>
      <filename>config/environment.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,10 @@
 ActionController::Routing::Routes.draw do |map|
+  map.login &quot;login&quot;, :controller =&gt; &quot;user_sessions&quot;, :action =&gt; &quot;new&quot;
+  map.logout &quot;logout&quot;, :controller =&gt; &quot;user_sessions&quot;, :action =&gt; &quot;destroy&quot;
+  map.resource :account, :controller =&gt; &quot;users&quot;, :action =&gt; &quot;edit&quot;
+  map.resources :user_sessions
+  map.resources :users
+
   map.namespace :admin do |admin|
     admin.resources :posts
     admin.resources :comments</diff>
      <filename>config/routes.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@
 #
 # It's strongly recommended to check this file into your version control system.
 
-ActiveRecord::Schema.define(:version =&gt; 20090625144110) do
+ActiveRecord::Schema.define(:version =&gt; 20090625145600) do
 
   create_table &quot;comments&quot;, :force =&gt; true do |t|
     t.integer  &quot;post_id&quot;
@@ -39,4 +39,23 @@ ActiveRecord::Schema.define(:version =&gt; 20090625144110) do
     t.datetime &quot;updated_at&quot;
   end
 
+  create_table &quot;users&quot;, :force =&gt; true do |t|
+    t.datetime &quot;created_at&quot;
+    t.datetime &quot;updated_at&quot;
+    t.string   &quot;email&quot;,                            :null =&gt; false
+    t.string   &quot;crypted_password&quot;,                 :null =&gt; false
+    t.string   &quot;password_salt&quot;,                    :null =&gt; false
+    t.string   &quot;persistence_token&quot;,                :null =&gt; false
+    t.integer  &quot;login_count&quot;,       :default =&gt; 0, :null =&gt; false
+    t.datetime &quot;last_request_at&quot;
+    t.datetime &quot;last_login_at&quot;
+    t.datetime &quot;current_login_at&quot;
+    t.string   &quot;last_login_ip&quot;
+    t.string   &quot;current_login_ip&quot;
+  end
+
+  add_index &quot;users&quot;, [&quot;email&quot;], :name =&gt; &quot;index_users_on_email&quot;
+  add_index &quot;users&quot;, [&quot;last_request_at&quot;], :name =&gt; &quot;index_users_on_last_request_at&quot;
+  add_index &quot;users&quot;, [&quot;persistence_token&quot;], :name =&gt; &quot;index_users_on_persistence_token&quot;
+
 end</diff>
      <filename>db/schema.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,7 +5,8 @@ Como um evangelizador
 Quero poder mostrar um blog em funcionamento
 
 Cen&#225;rio: Criar Posts
-  Dado que estou na homepage
+  Dado que estou logado
+  E que estou na homepage
   E clico em &quot;Novo Post&quot;
   Quando for redirecionado para a p&#225;gina de Criar Post
   E preencher o &quot;titulo&quot; com &quot;Meu primeiro post&quot;
@@ -20,6 +21,7 @@ Cen&#225;rio: Criar Coment&#225;rio
   Ent&#227;o quero ver o coment&#225;rio listado &quot;meu coment&#225;rio&quot;
 
 Cen&#225;rio: Apagar Coment&#225;rio
-  Dado que estou visualizando a lista de coment&#225;rios
+  Dado que estou logado
+  E que estou visualizando a lista de coment&#225;rios
   Quando clicar em &quot;Apagar&quot;
   Ent&#227;o quero que o coment&#225;rio seja apagado
\ No newline at end of file</diff>
      <filename>features/blog_simples.feature</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,11 @@
+Dado /^que estou logado$/ do
+  Factory(:valid_user)
+  visit login_path
+  fill_in &quot;email&quot;, :with =&gt; &quot;john@doe.com&quot;
+  fill_in &quot;password&quot;, :with =&gt; &quot;john&quot;
+  click_button &quot;Submit&quot;
+end
+
 Dado /^que estou na homepage$/ do
   visit admin_posts_url
 end</diff>
      <filename>features/step_definitions/blog_simples_steps.rb</filename>
    </modified>
    <modified>
      <diff>@@ -22,4 +22,5 @@ Webrat.configure do |config|
 end
 
 require 'cucumber/rails/rspec'
-require 'webrat/core/matchers'
\ No newline at end of file
+require 'webrat/core/matchers'
+require &quot;authlogic/test_case&quot;
\ No newline at end of file</diff>
      <filename>features/support/env.rb</filename>
    </modified>
    <modified>
      <diff>@@ -13,4 +13,10 @@ Factory.define :valid_comment, :class =&gt; Comment do |p|
   p.autor &quot;Fabio&quot;
   p.url &quot;http://www.akitaonrails.com&quot;
   p.comentario &quot;meu comentario&quot;
-end
\ No newline at end of file
+end
+
+Factory.define :valid_user, :class =&gt; User do |u|
+  u.email 'john@doe.com'
+  u.password 'john'
+  u.password_confirmation 'john'
+end</diff>
      <filename>features/support/factories.rb</filename>
    </modified>
    <modified>
      <diff>@@ -65,4 +65,9 @@ a {
 #uploadBox {
   float: right;
   width: 300px;
+}
+
+#user_nav {
+  float: right;
+  font-size: 12px;
 }
\ No newline at end of file</diff>
      <filename>public/stylesheets/admin.css</filename>
    </modified>
    <modified>
      <diff>@@ -3,6 +3,11 @@ require File.dirname(__FILE__) + '/../../spec_helper'
 describe Admin::CommentsController do
   integrate_views
 
+  before(:each) do
+    activate_authlogic
+    UserSession.create(Factory(:valid_user))
+  end
+
   it &quot;index action should render index template&quot; do
     get :index
     response.should render_template(:index)</diff>
      <filename>spec/controllers/admin/comments_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,6 +2,11 @@ require File.dirname(__FILE__) + '/../../spec_helper'
  
 describe Admin::PostsController do
   integrate_views
+  
+  before(:each) do
+    activate_authlogic
+    UserSession.create(Factory(:valid_user))
+  end
 
   it &quot;index action should render index template&quot; do
     get :index</diff>
      <filename>spec/controllers/admin/posts_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -49,3 +49,5 @@ Spec::Runner.configure do |config|
   #
   # For more information take a look at Spec::Runner::Configuration and Spec::Runner
 end
+
+require &quot;authlogic/test_case&quot;
\ No newline at end of file</diff>
      <filename>spec/spec_helper.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>be209cb528e6e0a82d2dca6716f3da32195113c1</id>
    </parent>
  </parents>
  <author>
    <name>AkitaOnRails</name>
    <email>fabioakita@gmail.com</email>
  </author>
  <url>http://github.com/akitaonrails/fisl_10_demo/commit/d7730678e30a2d04b47f7f0d2fb466b671f51374</url>
  <id>d7730678e30a2d04b47f7f0d2fb466b671f51374</id>
  <committed-date>2009-06-25T08:31:54-07:00</committed-date>
  <authored-date>2009-06-25T08:31:54-07:00</authored-date>
  <message>adicionando suporte a login</message>
  <tree>6c467c377e90e773a89ff46975cbf6ce0e768e17</tree>
  <committer>
    <name>AkitaOnRails</name>
    <email>fabioakita@gmail.com</email>
  </committer>
</commit>
