resu 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README ADDED
@@ -0,0 +1,13 @@
1
+ Resu
2
+ ====
3
+
4
+ Introduction goes here.
5
+
6
+
7
+ Example
8
+ =======
9
+
10
+ Example goes here.
11
+
12
+
13
+ Copyright (c) 2010 [name of plugin creator], released under the MIT license
@@ -0,0 +1,26 @@
1
+ module Resu
2
+ class UserSessionsController < ApplicationController
3
+ before_filter :require_no_user, :only => [:new, :create]
4
+ before_filter :require_user, :only => :destroy
5
+ unloadable
6
+ def new
7
+ @user_session = UserSession.new
8
+ end
9
+
10
+ def create
11
+ @user_session = UserSession.new(params[:user_session])
12
+ if @user_session.save
13
+ flash[:notice] = "Login successful!"
14
+ redirect_back_or_default root_url
15
+ else
16
+ render :action => :new
17
+ end
18
+ end
19
+
20
+ def destroy
21
+ current_user_session.destroy
22
+ flash[:notice] = "Logout successful!"
23
+ redirect_back_or_default new_user_session_url
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,3 @@
1
+ class User < ActiveRecord::Base
2
+ acts_as_authentic
3
+ end
@@ -0,0 +1,3 @@
1
+ class UserSession < Authlogic::Session::Base
2
+ find_by_login_method :find_by_email
3
+ end
@@ -0,0 +1,11 @@
1
+ <h1>Login</h1>
2
+
3
+ <%= form_for @user_session, :url => user_session_path do |f| %>
4
+ <%= f.label :login %><br />
5
+ <%= f.text_field :login %><br />
6
+ <br />
7
+ <%= f.label :password %><br />
8
+ <%= f.password_field :password %><br />
9
+ <br />
10
+ <%= f.submit "Login" %>
11
+ <% end %>
data/config/routes.rb ADDED
@@ -0,0 +1,5 @@
1
+ Rails.application.routes.draw do |map|
2
+ resource :user_session, :controller => 'resu/user_sessions', :only => [:new, :create, :destroy]
3
+ match "login" => "resu/user_sessions#new", :as => :login
4
+ match "logout" => "resu/user_sessions#destroy", :as => :logout
5
+ end
@@ -0,0 +1,24 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/migration'
3
+
4
+ class ResuGenerator < Rails::Generators::Base
5
+ include Rails::Generators::Migration
6
+
7
+ # Implement the required interface for Rails::Generators::Migration.
8
+ # taken from http://github.com/rails/rails/blob/master/activerecord/lib/generators/active_record.rb
9
+ def self.next_migration_number(dirname)
10
+ if ActiveRecord::Base.timestamped_migrations
11
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
12
+ else
13
+ "%.3d" % (current_migration_number(dirname) + 1)
14
+ end
15
+ end
16
+
17
+ def create_migration_file
18
+ migration_template 'migration.rb', 'db/migrate/create_users_table.rb'
19
+ end
20
+
21
+ def self.source_root
22
+ @source_root ||= File.join(File.dirname(__FILE__), 'templates')
23
+ end
24
+ end
@@ -0,0 +1,22 @@
1
+ class CreateUsersTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :users, :force => true do |t|
4
+ t.timestamps
5
+ t.string :login, :null => false
6
+ t.string :email, :null => false
7
+ t.string :crypted_password, :null => false
8
+ t.string :password_salt, :null => false
9
+ t.string :persistence_token, :null => false
10
+ t.integer :login_count, :default => 0, :null => false
11
+ t.datetime :last_request_at
12
+ t.datetime :last_login_at
13
+ t.datetime :current_login_at
14
+ t.string :last_login_ip
15
+ t.string :current_login_ip
16
+ end
17
+ end
18
+
19
+ def self.down
20
+ drop_table :users
21
+ end
22
+ end
@@ -0,0 +1,52 @@
1
+ module Resu
2
+ def self.included(base)
3
+ base.send :include, InstanceMethods
4
+ base.send :helper_method, :current_user_session, :current_user
5
+ end
6
+
7
+ module ClassMethods
8
+ def acts_as_yaffle(options = {})
9
+ send :include, InstanceMethods
10
+ end
11
+ end
12
+
13
+ module InstanceMethods
14
+ def current_user_session
15
+ return @current_user_session if defined?(@current_user_session)
16
+ @current_user_session = UserSession.find
17
+ end
18
+
19
+ def current_user
20
+ return @current_user if defined?(@current_user)
21
+ @current_user = current_user_session && current_user_session.user
22
+ end
23
+ def require_user
24
+ unless current_user
25
+ store_location
26
+ flash[:notice] = "You must be logged in to access this page"
27
+ redirect_to new_user_session_url
28
+ return false
29
+ end
30
+ end
31
+
32
+ def require_no_user
33
+ if current_user
34
+ store_location
35
+ flash[:notice] = "You must be logged out to access this page"
36
+ redirect_to root_url
37
+ return false
38
+ end
39
+ end
40
+
41
+ def store_location
42
+ session[:return_to] = request.fullpath
43
+ end
44
+
45
+ def redirect_back_or_default(default)
46
+ redirect_to(session[:return_to] || default)
47
+ session[:return_to] = nil
48
+ end
49
+ end
50
+ end
51
+
52
+ ActionController::Base.send :include, Resu
@@ -0,0 +1,7 @@
1
+ require "rails"
2
+ require "resu"
3
+ require "resu/application_controller"
4
+ module Resu
5
+ class Engine < Rails::Engine
6
+ end
7
+ end
data/lib/resu.rb ADDED
@@ -0,0 +1 @@
1
+ require 'resu/engine' if defined?(Rails) && Rails::VERSION::MAJOR == 3
data/test/resu_test.rb ADDED
@@ -0,0 +1,12 @@
1
+ require 'test_helper'
2
+
3
+ class ResuTest < ActiveSupport::TestCase
4
+ load_schema
5
+
6
+ class User < ActiveRecord::Base
7
+ end
8
+
9
+ def test_schema_has_loaded_correctly
10
+ assert_equal [], User.all
11
+ end
12
+ end
data/test/schema.rb ADDED
@@ -0,0 +1,15 @@
1
+ ActiveRecord::Schema.define(:version => 0) do
2
+ create_table :users, :force => true do |t|
3
+ t.timestamps
4
+ t.string :login, :null => false
5
+ t.string :crypted_password, :null => false
6
+ t.string :password_salt, :null => false
7
+ t.string :persistence_token, :null => false
8
+ t.integer :login_count, :default => 0, :null => false
9
+ t.datetime :last_request_at
10
+ t.datetime :last_login_at
11
+ t.datetime :current_login_at
12
+ t.string :last_login_ip
13
+ t.string :current_login_ip
14
+ end
15
+ end
@@ -0,0 +1,36 @@
1
+ ENV['RAILS_ENV'] = 'test'
2
+ ENV['RAILS_ROOT'] ||= File.dirname(__FILE__) + '/../../../..'
3
+
4
+ require 'rubygems'
5
+ require 'test/unit'
6
+ require 'active_support'
7
+ require File.expand_path(File.join(ENV['RAILS_ROOT'], 'config/environment.rb'))
8
+
9
+ def load_schema
10
+ config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
11
+ ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
12
+
13
+ db_adapter = ENV['DB']
14
+
15
+ # no db passed, try one of these fine config-free DBs before bombing.
16
+ db_adapter ||=
17
+ begin
18
+ require 'rubygems'
19
+ require 'sqlite3'
20
+ 'sqlite3'
21
+ rescue MissingSourceFile
22
+ begin
23
+ require 'sqlite'
24
+ 'sqlite'
25
+ rescue MissingSourceFile
26
+ end
27
+ end
28
+
29
+ if db_adapter.nil?
30
+ raise "No DB Adapter selected. Pass the DB= option to pick one, or install Sqlite or Sqlite3."
31
+ end
32
+
33
+ ActiveRecord::Base.establish_connection(config[db_adapter])
34
+ load(File.dirname(__FILE__) + "/schema.rb")
35
+ require File.dirname(__FILE__) + '/../init'
36
+ end
data/test/user_test.rb ADDED
@@ -0,0 +1,9 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class UserTest < Test::Unit::TestCase
4
+ load_schema
5
+
6
+ def test_user
7
+ assert_kind_of User, User.new
8
+ end
9
+ end
metadata ADDED
@@ -0,0 +1,99 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: resu
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Port80Labs
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-10-19 00:00:00 -04:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: authlogic
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 13
30
+ segments:
31
+ - 2
32
+ - 1
33
+ - 3
34
+ version: 2.1.3
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ description:
38
+ email: info@port80labs.com
39
+ executables: []
40
+
41
+ extensions: []
42
+
43
+ extra_rdoc_files:
44
+ - README
45
+ files:
46
+ - app/controllers/resu/user_sessions_controller.rb
47
+ - app/models/user.rb
48
+ - app/models/user_session.rb
49
+ - app/views/resu/user_sessions/new.html.erb
50
+ - config/routes.rb
51
+ - lib/generators/resu/resu_generator.rb
52
+ - lib/generators/resu/templates/migration.rb
53
+ - lib/resu.rb
54
+ - lib/resu/application_controller.rb
55
+ - lib/resu/engine.rb
56
+ - README
57
+ - test/resu_test.rb
58
+ - test/schema.rb
59
+ - test/test_helper.rb
60
+ - test/user_test.rb
61
+ has_rdoc: true
62
+ homepage: http://port80labs.com/
63
+ licenses: []
64
+
65
+ post_install_message:
66
+ rdoc_options:
67
+ - --charset=UTF-8
68
+ require_paths:
69
+ - lib
70
+ required_ruby_version: !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ hash: 3
76
+ segments:
77
+ - 0
78
+ version: "0"
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ hash: 3
85
+ segments:
86
+ - 0
87
+ version: "0"
88
+ requirements: []
89
+
90
+ rubyforge_project:
91
+ rubygems_version: 1.3.7
92
+ signing_key:
93
+ specification_version: 3
94
+ summary: User engine based on authlogic
95
+ test_files:
96
+ - test/resu_test.rb
97
+ - test/schema.rb
98
+ - test/test_helper.rb
99
+ - test/user_test.rb