wristband 0.0.0
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/.DS_Store +0 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +88 -0
- data/README.md +113 -0
- data/Rakefile +21 -0
- data/VERSION +1 -0
- data/app/controllers/application_controller.rb +10 -0
- data/app/controllers/sessions_controller.rb +34 -0
- data/app/controllers/users_controller.rb +34 -0
- data/app/mailers/user_mailer.rb +33 -0
- data/app/models/session_user.rb +59 -0
- data/app/models/user.rb +52 -0
- data/app/views/layouts/application.html.erb +14 -0
- data/app/views/sessions/new.html.haml +15 -0
- data/app/views/user_mailer/email_verification.text.html.rhtml +7 -0
- data/app/views/user_mailer/email_verification.text.plain.rhtml +9 -0
- data/app/views/user_mailer/forgot_password.text.html.rhtml +10 -0
- data/app/views/user_mailer/forgot_password.text.plain.rhtml +10 -0
- data/app/views/users/show.html.haml +6 -0
- data/config/application.rb +15 -0
- data/config/boot.rb +13 -0
- data/config/database.yml +16 -0
- data/config/environment.rb +5 -0
- data/config/environments/development.rb +26 -0
- data/config/environments/production.rb +49 -0
- data/config/environments/test.rb +35 -0
- data/config/initializers/wristband.rb +1 -0
- data/config/locales/en.yml +5 -0
- data/config/routes.rb +11 -0
- data/config.ru +4 -0
- data/db/migrate/01_create_users_table.rb +26 -0
- data/db/schema.rb +27 -0
- data/lib/generators/wristband/.DS_Store +0 -0
- data/lib/generators/wristband/wristband_generator.rb +56 -0
- data/lib/wristband/application_extensions.rb +67 -0
- data/lib/wristband/authority_check.rb +160 -0
- data/lib/wristband/support.rb +28 -0
- data/lib/wristband/user_extensions.rb +89 -0
- data/lib/wristband.rb +86 -0
- data/public/robots.txt +5 -0
- data/script/rails +6 -0
- data/test/dummy/user.rb +13 -0
- data/test/test_helper.rb +78 -0
- data/test/unit/has_authorities_test.rb +86 -0
- data/test/unit/session_user_test.rb +8 -0
- data/test/unit/user_test.rb +105 -0
- data/wristband.gemspec +107 -0
- metadata +209 -0
data/test/test_helper.rb
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
ENV["RAILS_ENV"] = "test"
|
2
|
+
require File.expand_path('../../config/environment', __FILE__)
|
3
|
+
require 'rails/test_help'
|
4
|
+
|
5
|
+
class ActiveSupport::TestCase
|
6
|
+
self.use_transactional_fixtures = false
|
7
|
+
self.use_instantiated_fixtures = false
|
8
|
+
|
9
|
+
def data_path(name)
|
10
|
+
File.expand_path(File.join('test', 'data', name), Rails.root)
|
11
|
+
end
|
12
|
+
|
13
|
+
def assert_created(model)
|
14
|
+
assert model
|
15
|
+
assert_equal [ ], model.errors.full_messages
|
16
|
+
assert model.valid?
|
17
|
+
assert !model.new_record?
|
18
|
+
end
|
19
|
+
|
20
|
+
def assert_not_created(model)
|
21
|
+
assert model
|
22
|
+
assert model.new_record?
|
23
|
+
end
|
24
|
+
|
25
|
+
def assert_errors_on(model, *attrs)
|
26
|
+
found_attrs = [ ]
|
27
|
+
|
28
|
+
model.errors.each do |attr, error|
|
29
|
+
found_attrs << attr
|
30
|
+
end
|
31
|
+
|
32
|
+
assert_equal attrs.flatten.collect(&:to_s).sort, found_attrs.uniq.collect(&:to_s).sort
|
33
|
+
end
|
34
|
+
|
35
|
+
def assert_mapping(map, &block)
|
36
|
+
result_map = map.inject({ }) do |h, (k,v)|
|
37
|
+
h[k] = yield(k)
|
38
|
+
h
|
39
|
+
end
|
40
|
+
|
41
|
+
differences = result_map.inject([ ]) do |a, (k,v)|
|
42
|
+
if (v != map[k])
|
43
|
+
a << k
|
44
|
+
end
|
45
|
+
|
46
|
+
a
|
47
|
+
end
|
48
|
+
|
49
|
+
assert_equal map, result_map, "Difference: #{map.slice(*differences).inspect} vs #{result_map.slice(*differences).inspect}"
|
50
|
+
end
|
51
|
+
|
52
|
+
def login_as(obj)
|
53
|
+
case obj
|
54
|
+
when String
|
55
|
+
user = a User
|
56
|
+
user.update_attribute(:role, obj)
|
57
|
+
when Symbol
|
58
|
+
user = a User
|
59
|
+
user.update_attribute(:role, obj.to_s)
|
60
|
+
when User
|
61
|
+
user = obj
|
62
|
+
else
|
63
|
+
raise "Please specifuy either a User or a role: #{obj.class.to_s}"
|
64
|
+
end
|
65
|
+
|
66
|
+
session[:user_id] = user.id
|
67
|
+
|
68
|
+
token = Wristband::Support.encrypt_with_salt(user.id.to_s, Time.now.to_f.to_s)
|
69
|
+
|
70
|
+
cookies[:login_token] = {
|
71
|
+
:value => token,
|
72
|
+
:expires => 2.weeks.from_now.utc
|
73
|
+
}
|
74
|
+
|
75
|
+
user
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class NewUserAuthorityCheck < AuthorityCheck
|
4
|
+
before_check :is_admin?
|
5
|
+
|
6
|
+
def is_admin?
|
7
|
+
unless (@user.email.match(/^scott/i))
|
8
|
+
fail!("Only scott can be an admin.")
|
9
|
+
else
|
10
|
+
allow!
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def wear_shoes?
|
15
|
+
unless (@user.email.match(/^s/i))
|
16
|
+
fail!("Only people with emails that start with 'S' can wear shoes.")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def walk_outside?
|
21
|
+
wear_shoes?
|
22
|
+
unless (@user.email.match(/^j/i))
|
23
|
+
fail!("Only people with emails that start with 'J' or 'S' can walk outside.")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
class NewUser < ActiveRecord::Base
|
30
|
+
def self.columns() @columns ||= []; end
|
31
|
+
|
32
|
+
def self.column(name, sql_type = nil, default = nil, null = true)
|
33
|
+
columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, sql_type.to_s, null)
|
34
|
+
end
|
35
|
+
|
36
|
+
column :email, :string
|
37
|
+
column :to_email, :string
|
38
|
+
column :article_id, :integer
|
39
|
+
column :message, :text
|
40
|
+
column :email
|
41
|
+
column :email_validation_key
|
42
|
+
column :validated_at
|
43
|
+
column :password_crypt
|
44
|
+
column :password_salt
|
45
|
+
column :remember_token
|
46
|
+
column :role
|
47
|
+
|
48
|
+
wristband :has_authorities => true
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
class HasAuthoritiesTest < ActiveSupport::TestCase
|
53
|
+
|
54
|
+
def test_has_authority_to_with_fail
|
55
|
+
scott = NewUser.new(
|
56
|
+
:email => 'scott@example.com',
|
57
|
+
:password => 'tester',
|
58
|
+
:password_confirmation => 'tester',
|
59
|
+
:role => :admin
|
60
|
+
)
|
61
|
+
jack = NewUser.new(
|
62
|
+
:email => 'jack@example.com',
|
63
|
+
:password => 'tester',
|
64
|
+
:password_confirmation => 'tester',
|
65
|
+
:role => :admin
|
66
|
+
)
|
67
|
+
oleg = NewUser.new(
|
68
|
+
:email => 'oleg@example.com',
|
69
|
+
:password => 'tester',
|
70
|
+
:password_confirmation => 'tester',
|
71
|
+
:role => :admin
|
72
|
+
)
|
73
|
+
|
74
|
+
|
75
|
+
assert scott.has_authority_to?(:wear_shoes)
|
76
|
+
assert !jack.has_authority_to?(:wear_shoes)
|
77
|
+
assert_equal jack.has_objections_to?(:wear_shoes), ["Only scott can be an admin.", "Only people with emails that start with 'S' can wear shoes."]
|
78
|
+
|
79
|
+
|
80
|
+
assert scott.has_authority_to?(:walk_outside)
|
81
|
+
assert !jack.has_authority_to?(:walk_outside)
|
82
|
+
assert_equal jack.has_objections_to?(:walk_outside), ["Only scott can be an admin.", "Only people with emails that start with 'S' can wear shoes."]
|
83
|
+
assert !oleg.has_authority_to?(:walk_outside)
|
84
|
+
assert_equal oleg.has_objections_to?(:walk_outside), ["Only scott can be an admin.", "Only people with emails that start with 'S' can wear shoes.", "Only people with emails that start with 'J' or 'S' can walk outside."]
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class UserTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
def test_create_defaults
|
6
|
+
user = User.new(
|
7
|
+
:email => 'user@example.com',
|
8
|
+
:password => 'tester',
|
9
|
+
:password_confirmation => 'tester'
|
10
|
+
)
|
11
|
+
user.role = :admin
|
12
|
+
user.save
|
13
|
+
assert_created user
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_create_requirements
|
17
|
+
user = User.create
|
18
|
+
|
19
|
+
assert_errors_on user, :email, :password, :role
|
20
|
+
assert user.errors[:email].include?("Please enter your email address")
|
21
|
+
assert user.errors[:email].include?("The email address you entered is not valid")
|
22
|
+
assert user.errors[:email].include?("The email address you entered is to short")
|
23
|
+
assert user.errors[:password].include?("Please choose a password")
|
24
|
+
assert user.errors[:password].include?("The password you entered is too short (minimum is 4 characters)")
|
25
|
+
assert user.errors[:role].include?("can't be blank")
|
26
|
+
assert user.errors[:role].include?("is not included in the list")
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_create_dummy
|
30
|
+
user = a User
|
31
|
+
assert_created user
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_user_instance_methods
|
35
|
+
@user = a User
|
36
|
+
%w{
|
37
|
+
has_authority_to?
|
38
|
+
has_objections_to?
|
39
|
+
initialize_salt
|
40
|
+
initialize_token
|
41
|
+
encrypt_password
|
42
|
+
password_match?
|
43
|
+
password_crypted?
|
44
|
+
password_crypt=
|
45
|
+
is_admin?
|
46
|
+
is_regular_user?
|
47
|
+
}.each do |method|
|
48
|
+
assert @user.respond_to?(method), "On '#{method}' method"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_user_class_methods
|
53
|
+
@user = a User
|
54
|
+
%w{
|
55
|
+
authenticate
|
56
|
+
execute_authentication_chain
|
57
|
+
verify_email!
|
58
|
+
wristband
|
59
|
+
}.each do |method|
|
60
|
+
assert User.respond_to?(method), "On '#{method}' method"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_user_class_private_methods
|
65
|
+
%w{
|
66
|
+
random_string
|
67
|
+
encrypt_with_salt
|
68
|
+
random_salt
|
69
|
+
}.each do |method|
|
70
|
+
assert User.private_methods.include?(method), "On '#{method}' method"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_assigned_options
|
75
|
+
assert_equal User.wristband[:login_with_fields], [:email]
|
76
|
+
assert_equal User.wristband[:before_authentication_chain], []
|
77
|
+
assert_equal User.wristband[:after_authentication_chain], []
|
78
|
+
assert_equal User.wristband[:password_column], :password_crypt
|
79
|
+
assert_equal User.wristband[:roles], [:admin, :regular_user]
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_authentication_by_email
|
83
|
+
@user = a User
|
84
|
+
assert_equal @user, User.authenticate(@user.email, 'passpass')
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_authentication_fails
|
88
|
+
@user = a User
|
89
|
+
assert_nil User.authenticate('-bugus-', 'passpass')
|
90
|
+
assert_nil User.authenticate(@user.email, '-bugus-')
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_password_match
|
94
|
+
@user = a User
|
95
|
+
assert @user.password_match?('passpass')
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_user_roles
|
99
|
+
@user = a User
|
100
|
+
@user.update_attribute(:role, :regular_user)
|
101
|
+
assert @user.is_regular_user?
|
102
|
+
@user.update_attribute(:role, :admin)
|
103
|
+
assert @user.is_admin?
|
104
|
+
end
|
105
|
+
end
|
data/wristband.gemspec
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{wristband}
|
8
|
+
s.version = "0.0.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Jack Neto", "The Working Group Inc"]
|
12
|
+
s.date = %q{2011-01-23}
|
13
|
+
s.description = %q{Provides a starting point for user authentication}
|
14
|
+
s.email = %q{jack@theworkinggroup.ca}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"README.md"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
".DS_Store",
|
20
|
+
"Gemfile",
|
21
|
+
"Gemfile.lock",
|
22
|
+
"README.md",
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION",
|
25
|
+
"app/controllers/application_controller.rb",
|
26
|
+
"app/controllers/sessions_controller.rb",
|
27
|
+
"app/controllers/users_controller.rb",
|
28
|
+
"app/mailers/user_mailer.rb",
|
29
|
+
"app/models/session_user.rb",
|
30
|
+
"app/models/user.rb",
|
31
|
+
"app/views/layouts/application.html.erb",
|
32
|
+
"app/views/sessions/new.html.haml",
|
33
|
+
"app/views/user_mailer/email_verification.text.html.rhtml",
|
34
|
+
"app/views/user_mailer/email_verification.text.plain.rhtml",
|
35
|
+
"app/views/user_mailer/forgot_password.text.html.rhtml",
|
36
|
+
"app/views/user_mailer/forgot_password.text.plain.rhtml",
|
37
|
+
"app/views/users/show.html.haml",
|
38
|
+
"config.ru",
|
39
|
+
"config/application.rb",
|
40
|
+
"config/boot.rb",
|
41
|
+
"config/database.yml",
|
42
|
+
"config/environment.rb",
|
43
|
+
"config/environments/development.rb",
|
44
|
+
"config/environments/production.rb",
|
45
|
+
"config/environments/test.rb",
|
46
|
+
"config/initializers/wristband.rb",
|
47
|
+
"config/locales/en.yml",
|
48
|
+
"config/routes.rb",
|
49
|
+
"db/migrate/01_create_users_table.rb",
|
50
|
+
"db/schema.rb",
|
51
|
+
"lib/generators/wristband/.DS_Store",
|
52
|
+
"lib/generators/wristband/wristband_generator.rb",
|
53
|
+
"lib/wristband.rb",
|
54
|
+
"lib/wristband/application_extensions.rb",
|
55
|
+
"lib/wristband/authority_check.rb",
|
56
|
+
"lib/wristband/support.rb",
|
57
|
+
"lib/wristband/user_extensions.rb",
|
58
|
+
"public/robots.txt",
|
59
|
+
"script/rails",
|
60
|
+
"test/dummy/user.rb",
|
61
|
+
"test/test_helper.rb",
|
62
|
+
"test/unit/has_authorities_test.rb",
|
63
|
+
"test/unit/session_user_test.rb",
|
64
|
+
"test/unit/user_test.rb",
|
65
|
+
"wristband.gemspec"
|
66
|
+
]
|
67
|
+
s.homepage = %q{http://github.com/twg/wristband}
|
68
|
+
s.require_paths = ["lib"]
|
69
|
+
s.rubygems_version = %q{1.3.7}
|
70
|
+
s.summary = %q{An authentication engine}
|
71
|
+
s.test_files = [
|
72
|
+
"test/dummy/user.rb",
|
73
|
+
"test/test_helper.rb",
|
74
|
+
"test/unit/has_authorities_test.rb",
|
75
|
+
"test/unit/session_user_test.rb",
|
76
|
+
"test/unit/user_test.rb"
|
77
|
+
]
|
78
|
+
|
79
|
+
if s.respond_to? :specification_version then
|
80
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
81
|
+
s.specification_version = 3
|
82
|
+
|
83
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
84
|
+
s.add_runtime_dependency(%q<rails>, ["= 3.0.3"])
|
85
|
+
s.add_runtime_dependency(%q<haml>, ["= 3.0.25"])
|
86
|
+
s.add_development_dependency(%q<sqlite3-ruby>, [">= 0"])
|
87
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
88
|
+
s.add_runtime_dependency(%q<rails>, [">= 3.0.3"])
|
89
|
+
s.add_runtime_dependency(%q<haml>, [">= 3.0.25"])
|
90
|
+
else
|
91
|
+
s.add_dependency(%q<rails>, ["= 3.0.3"])
|
92
|
+
s.add_dependency(%q<haml>, ["= 3.0.25"])
|
93
|
+
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
94
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
95
|
+
s.add_dependency(%q<rails>, [">= 3.0.3"])
|
96
|
+
s.add_dependency(%q<haml>, [">= 3.0.25"])
|
97
|
+
end
|
98
|
+
else
|
99
|
+
s.add_dependency(%q<rails>, ["= 3.0.3"])
|
100
|
+
s.add_dependency(%q<haml>, ["= 3.0.25"])
|
101
|
+
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
102
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
103
|
+
s.add_dependency(%q<rails>, [">= 3.0.3"])
|
104
|
+
s.add_dependency(%q<haml>, [">= 3.0.25"])
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
metadata
ADDED
@@ -0,0 +1,209 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: wristband
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 31
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 0
|
10
|
+
version: 0.0.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Jack Neto
|
14
|
+
- The Working Group Inc
|
15
|
+
autorequire:
|
16
|
+
bindir: bin
|
17
|
+
cert_chain: []
|
18
|
+
|
19
|
+
date: 2011-01-23 00:00:00 -05:00
|
20
|
+
default_executable:
|
21
|
+
dependencies:
|
22
|
+
- !ruby/object:Gem::Dependency
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - "="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 1
|
29
|
+
segments:
|
30
|
+
- 3
|
31
|
+
- 0
|
32
|
+
- 3
|
33
|
+
version: 3.0.3
|
34
|
+
type: :runtime
|
35
|
+
name: rails
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: *id001
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - "="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 53
|
45
|
+
segments:
|
46
|
+
- 3
|
47
|
+
- 0
|
48
|
+
- 25
|
49
|
+
version: 3.0.25
|
50
|
+
type: :runtime
|
51
|
+
name: haml
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: *id002
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
hash: 3
|
61
|
+
segments:
|
62
|
+
- 0
|
63
|
+
version: "0"
|
64
|
+
type: :development
|
65
|
+
name: sqlite3-ruby
|
66
|
+
prerelease: false
|
67
|
+
version_requirements: *id003
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
70
|
+
none: false
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
hash: 3
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
version: "0"
|
78
|
+
type: :development
|
79
|
+
name: jeweler
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: *id004
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
hash: 1
|
89
|
+
segments:
|
90
|
+
- 3
|
91
|
+
- 0
|
92
|
+
- 3
|
93
|
+
version: 3.0.3
|
94
|
+
type: :runtime
|
95
|
+
name: rails
|
96
|
+
prerelease: false
|
97
|
+
version_requirements: *id005
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
hash: 53
|
105
|
+
segments:
|
106
|
+
- 3
|
107
|
+
- 0
|
108
|
+
- 25
|
109
|
+
version: 3.0.25
|
110
|
+
type: :runtime
|
111
|
+
name: haml
|
112
|
+
prerelease: false
|
113
|
+
version_requirements: *id006
|
114
|
+
description: Provides a starting point for user authentication
|
115
|
+
email: jack@theworkinggroup.ca
|
116
|
+
executables: []
|
117
|
+
|
118
|
+
extensions: []
|
119
|
+
|
120
|
+
extra_rdoc_files:
|
121
|
+
- README.md
|
122
|
+
files:
|
123
|
+
- .DS_Store
|
124
|
+
- Gemfile
|
125
|
+
- Gemfile.lock
|
126
|
+
- README.md
|
127
|
+
- Rakefile
|
128
|
+
- VERSION
|
129
|
+
- app/controllers/application_controller.rb
|
130
|
+
- app/controllers/sessions_controller.rb
|
131
|
+
- app/controllers/users_controller.rb
|
132
|
+
- app/mailers/user_mailer.rb
|
133
|
+
- app/models/session_user.rb
|
134
|
+
- app/models/user.rb
|
135
|
+
- app/views/layouts/application.html.erb
|
136
|
+
- app/views/sessions/new.html.haml
|
137
|
+
- app/views/user_mailer/email_verification.text.html.rhtml
|
138
|
+
- app/views/user_mailer/email_verification.text.plain.rhtml
|
139
|
+
- app/views/user_mailer/forgot_password.text.html.rhtml
|
140
|
+
- app/views/user_mailer/forgot_password.text.plain.rhtml
|
141
|
+
- app/views/users/show.html.haml
|
142
|
+
- config.ru
|
143
|
+
- config/application.rb
|
144
|
+
- config/boot.rb
|
145
|
+
- config/database.yml
|
146
|
+
- config/environment.rb
|
147
|
+
- config/environments/development.rb
|
148
|
+
- config/environments/production.rb
|
149
|
+
- config/environments/test.rb
|
150
|
+
- config/initializers/wristband.rb
|
151
|
+
- config/locales/en.yml
|
152
|
+
- config/routes.rb
|
153
|
+
- db/migrate/01_create_users_table.rb
|
154
|
+
- db/schema.rb
|
155
|
+
- lib/generators/wristband/.DS_Store
|
156
|
+
- lib/generators/wristband/wristband_generator.rb
|
157
|
+
- lib/wristband.rb
|
158
|
+
- lib/wristband/application_extensions.rb
|
159
|
+
- lib/wristband/authority_check.rb
|
160
|
+
- lib/wristband/support.rb
|
161
|
+
- lib/wristband/user_extensions.rb
|
162
|
+
- public/robots.txt
|
163
|
+
- script/rails
|
164
|
+
- test/dummy/user.rb
|
165
|
+
- test/test_helper.rb
|
166
|
+
- test/unit/has_authorities_test.rb
|
167
|
+
- test/unit/session_user_test.rb
|
168
|
+
- test/unit/user_test.rb
|
169
|
+
- wristband.gemspec
|
170
|
+
has_rdoc: true
|
171
|
+
homepage: http://github.com/twg/wristband
|
172
|
+
licenses: []
|
173
|
+
|
174
|
+
post_install_message:
|
175
|
+
rdoc_options: []
|
176
|
+
|
177
|
+
require_paths:
|
178
|
+
- lib
|
179
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
180
|
+
none: false
|
181
|
+
requirements:
|
182
|
+
- - ">="
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
hash: 3
|
185
|
+
segments:
|
186
|
+
- 0
|
187
|
+
version: "0"
|
188
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
189
|
+
none: false
|
190
|
+
requirements:
|
191
|
+
- - ">="
|
192
|
+
- !ruby/object:Gem::Version
|
193
|
+
hash: 3
|
194
|
+
segments:
|
195
|
+
- 0
|
196
|
+
version: "0"
|
197
|
+
requirements: []
|
198
|
+
|
199
|
+
rubyforge_project:
|
200
|
+
rubygems_version: 1.3.7
|
201
|
+
signing_key:
|
202
|
+
specification_version: 3
|
203
|
+
summary: An authentication engine
|
204
|
+
test_files:
|
205
|
+
- test/dummy/user.rb
|
206
|
+
- test/test_helper.rb
|
207
|
+
- test/unit/has_authorities_test.rb
|
208
|
+
- test/unit/session_user_test.rb
|
209
|
+
- test/unit/user_test.rb
|