resu 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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