sinatra-authentication-oran 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +33 -0
- data/History.txt +4 -0
- data/Manifest +26 -0
- data/Rakefile +43 -0
- data/TODO +53 -0
- data/UNLICENSE +24 -0
- data/example/database.yml +3 -0
- data/example/dm_extend_app.rb +26 -0
- data/example/dm_sinbook.rb +56 -0
- data/example/extend_views/edit.haml +42 -0
- data/example/extend_views/index.haml +31 -0
- data/example/extend_views/login.haml +21 -0
- data/example/extend_views/show.haml +9 -0
- data/example/extend_views/signup.haml +30 -0
- data/example/mm_app.rb +22 -0
- data/example/tc_app.rb +16 -0
- data/example/tc_sinbook.rb +62 -0
- data/lib/models/abstract_user.rb +95 -0
- data/lib/models/activerecord_user.rb +56 -0
- data/lib/models/ar_adapter.rb +66 -0
- data/lib/models/datamapper_user.rb +43 -0
- data/lib/models/dm_adapter.rb +61 -0
- data/lib/models/mm_adapter.rb +65 -0
- data/lib/models/mongoid_adapter.rb +67 -0
- data/lib/models/mongoid_user.rb +42 -0
- data/lib/models/mongomapper_user.rb +38 -0
- data/lib/models/rufus_tokyo_user.rb +206 -0
- data/lib/models/sequel_adapter.rb +68 -0
- data/lib/models/sequel_user.rb +53 -0
- data/lib/models/tc_adapter.rb +101 -0
- data/lib/sinatra-authentication-o.rb +305 -0
- data/lib/sinatra-authentication.rb +305 -0
- data/lib/sinatra-authentication/models.rb +5 -0
- data/lib/views/edit.haml +45 -0
- data/lib/views/edit.slim +46 -0
- data/lib/views/index.haml +29 -0
- data/lib/views/index.slim +30 -0
- data/lib/views/login.haml +24 -0
- data/lib/views/login.slim +25 -0
- data/lib/views/show.haml +9 -0
- data/lib/views/show.slim +10 -0
- data/lib/views/signup.haml +28 -0
- data/lib/views/signup.slim +33 -0
- data/readme.markdown +295 -0
- data/sinatra-authentication-oran.gemspec +137 -0
- data/spec/run_all_specs.rb +8 -0
- data/spec/unit/ar_model_spec.rb +3 -0
- data/spec/unit/dm_model_spec.rb +3 -0
- data/spec/unit/mm_model_spec.rb +3 -0
- data/spec/unit/mongoid_model_spec.rb +3 -0
- data/spec/unit/sequel_model_spec.rb +10 -0
- data/spec/unit/tc_model_spec.rb +3 -0
- data/spec/unit/user_specs.rb +119 -0
- data/test/activerecord_test.rb +5 -0
- data/test/datamapper_test.rb +5 -0
- data/test/lib/ar_app.rb +27 -0
- data/test/lib/dm_app.rb +20 -0
- data/test/lib/dm_extend_app.rb +27 -0
- data/test/lib/dm_sinbook.rb +54 -0
- data/test/lib/extend_views/edit.haml +46 -0
- data/test/lib/extend_views/index.haml +31 -0
- data/test/lib/extend_views/login.haml +21 -0
- data/test/lib/extend_views/show.haml +9 -0
- data/test/lib/extend_views/signup.haml +29 -0
- data/test/lib/helper.rb +16 -0
- data/test/lib/mm_app.rb +24 -0
- data/test/lib/mongoid_app.rb +28 -0
- data/test/lib/sequel_app.rb +21 -0
- data/test/lib/tc_app.rb +17 -0
- data/test/lib/tc_sinbook.rb +61 -0
- data/test/mongoid_test.rb +5 -0
- data/test/mongomapper_test.rb +40 -0
- data/test/route_tests.rb +29 -0
- data/test/rufus_tokyo_test.rb +5 -0
- data/test/sequel_test.rb +5 -0
- metadata +220 -0
@@ -0,0 +1,137 @@
|
|
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 = "sinatra-authentication-oran"
|
8
|
+
s.version = "0.0.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["oranzhang"]
|
12
|
+
s.date = "2012-12-08"
|
13
|
+
s.description = "Simple authentication plugin for sinatra."
|
14
|
+
s.email = "423794590@qq.com"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"TODO",
|
17
|
+
"readme.markdown"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
"Gemfile",
|
21
|
+
"History.txt",
|
22
|
+
"Manifest",
|
23
|
+
"Rakefile",
|
24
|
+
"TODO",
|
25
|
+
"UNLICENSE",
|
26
|
+
"example/database.yml",
|
27
|
+
"example/dm_extend_app.rb",
|
28
|
+
"example/dm_sinbook.rb",
|
29
|
+
"example/extend_views/edit.haml",
|
30
|
+
"example/extend_views/index.haml",
|
31
|
+
"example/extend_views/login.haml",
|
32
|
+
"example/extend_views/show.haml",
|
33
|
+
"example/extend_views/signup.haml",
|
34
|
+
"example/mm_app.rb",
|
35
|
+
"example/tc_app.rb",
|
36
|
+
"example/tc_sinbook.rb",
|
37
|
+
"lib/models/abstract_user.rb",
|
38
|
+
"lib/models/activerecord_user.rb",
|
39
|
+
"lib/models/ar_adapter.rb",
|
40
|
+
"lib/models/datamapper_user.rb",
|
41
|
+
"lib/models/dm_adapter.rb",
|
42
|
+
"lib/models/mm_adapter.rb",
|
43
|
+
"lib/models/mongoid_adapter.rb",
|
44
|
+
"lib/models/mongoid_user.rb",
|
45
|
+
"lib/models/mongomapper_user.rb",
|
46
|
+
"lib/models/rufus_tokyo_user.rb",
|
47
|
+
"lib/models/sequel_adapter.rb",
|
48
|
+
"lib/models/sequel_user.rb",
|
49
|
+
"lib/models/tc_adapter.rb",
|
50
|
+
"lib/sinatra-authentication-o.rb",
|
51
|
+
"lib/sinatra-authentication.rb",
|
52
|
+
"lib/sinatra-authentication/models.rb",
|
53
|
+
"lib/views/edit.haml",
|
54
|
+
"lib/views/edit.slim",
|
55
|
+
"lib/views/index.haml",
|
56
|
+
"lib/views/index.slim",
|
57
|
+
"lib/views/login.haml",
|
58
|
+
"lib/views/login.slim",
|
59
|
+
"lib/views/show.haml",
|
60
|
+
"lib/views/show.slim",
|
61
|
+
"lib/views/signup.haml",
|
62
|
+
"lib/views/signup.slim",
|
63
|
+
"readme.markdown",
|
64
|
+
"sinatra-authentication-oran.gemspec",
|
65
|
+
"spec/run_all_specs.rb",
|
66
|
+
"spec/unit/ar_model_spec.rb",
|
67
|
+
"spec/unit/dm_model_spec.rb",
|
68
|
+
"spec/unit/mm_model_spec.rb",
|
69
|
+
"spec/unit/mongoid_model_spec.rb",
|
70
|
+
"spec/unit/sequel_model_spec.rb",
|
71
|
+
"spec/unit/tc_model_spec.rb",
|
72
|
+
"spec/unit/user_specs.rb",
|
73
|
+
"test/activerecord_test.rb",
|
74
|
+
"test/datamapper_test.rb",
|
75
|
+
"test/lib/ar_app.rb",
|
76
|
+
"test/lib/dm_app.rb",
|
77
|
+
"test/lib/dm_extend_app.rb",
|
78
|
+
"test/lib/dm_sinbook.rb",
|
79
|
+
"test/lib/extend_views/edit.haml",
|
80
|
+
"test/lib/extend_views/index.haml",
|
81
|
+
"test/lib/extend_views/login.haml",
|
82
|
+
"test/lib/extend_views/show.haml",
|
83
|
+
"test/lib/extend_views/signup.haml",
|
84
|
+
"test/lib/helper.rb",
|
85
|
+
"test/lib/mm_app.rb",
|
86
|
+
"test/lib/mongoid_app.rb",
|
87
|
+
"test/lib/sequel_app.rb",
|
88
|
+
"test/lib/tc_app.rb",
|
89
|
+
"test/lib/tc_sinbook.rb",
|
90
|
+
"test/mongoid_test.rb",
|
91
|
+
"test/mongomapper_test.rb",
|
92
|
+
"test/route_tests.rb",
|
93
|
+
"test/rufus_tokyo_test.rb",
|
94
|
+
"test/sequel_test.rb"
|
95
|
+
]
|
96
|
+
s.homepage = "https://github.com/oranzhang/sinatra-authentication"
|
97
|
+
s.require_paths = ["lib"]
|
98
|
+
s.rubygems_version = "1.8.16"
|
99
|
+
s.summary = "Simple authentication plugin for sinatra."
|
100
|
+
|
101
|
+
if s.respond_to? :specification_version then
|
102
|
+
s.specification_version = 3
|
103
|
+
|
104
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
105
|
+
s.add_runtime_dependency(%q<sinatra-authentication-oran>, [">= 0"])
|
106
|
+
s.add_runtime_dependency(%q<sinatra>, [">= 0"])
|
107
|
+
s.add_runtime_dependency(%q<dm-core>, [">= 0"])
|
108
|
+
s.add_runtime_dependency(%q<dm-migrations>, [">= 0"])
|
109
|
+
s.add_runtime_dependency(%q<dm-validations>, [">= 0"])
|
110
|
+
s.add_runtime_dependency(%q<dm-timestamps>, [">= 0"])
|
111
|
+
s.add_runtime_dependency(%q<rufus-tokyo>, [">= 0"])
|
112
|
+
s.add_runtime_dependency(%q<sinbook>, [">= 0"])
|
113
|
+
s.add_runtime_dependency(%q<rack-flash3>, [">= 0"])
|
114
|
+
else
|
115
|
+
s.add_dependency(%q<sinatra-authentication-oran>, [">= 0"])
|
116
|
+
s.add_dependency(%q<sinatra>, [">= 0"])
|
117
|
+
s.add_dependency(%q<dm-core>, [">= 0"])
|
118
|
+
s.add_dependency(%q<dm-migrations>, [">= 0"])
|
119
|
+
s.add_dependency(%q<dm-validations>, [">= 0"])
|
120
|
+
s.add_dependency(%q<dm-timestamps>, [">= 0"])
|
121
|
+
s.add_dependency(%q<rufus-tokyo>, [">= 0"])
|
122
|
+
s.add_dependency(%q<sinbook>, [">= 0"])
|
123
|
+
s.add_dependency(%q<rack-flash3>, [">= 0"])
|
124
|
+
end
|
125
|
+
else
|
126
|
+
s.add_dependency(%q<sinatra-authentication-oran>, [">= 0"])
|
127
|
+
s.add_dependency(%q<sinatra>, [">= 0"])
|
128
|
+
s.add_dependency(%q<dm-core>, [">= 0"])
|
129
|
+
s.add_dependency(%q<dm-migrations>, [">= 0"])
|
130
|
+
s.add_dependency(%q<dm-validations>, [">= 0"])
|
131
|
+
s.add_dependency(%q<dm-timestamps>, [">= 0"])
|
132
|
+
s.add_dependency(%q<rufus-tokyo>, [">= 0"])
|
133
|
+
s.add_dependency(%q<sinbook>, [">= 0"])
|
134
|
+
s.add_dependency(%q<rack-flash3>, [">= 0"])
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../../test/lib/sequel_app')
|
2
|
+
require File.join(File.dirname(__FILE__), '../../test/lib/helper')
|
3
|
+
require File.join(File.dirname(__FILE__), 'user_specs')
|
4
|
+
|
5
|
+
describe User do
|
6
|
+
describe '#get' do
|
7
|
+
it 'Should pass arguments to the underlying ORM' do
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
describe User do
|
2
|
+
before :each do
|
3
|
+
User.all.each do |u|
|
4
|
+
User.delete(u.id)
|
5
|
+
end
|
6
|
+
|
7
|
+
@user = User.set(TestHelper.gen_user_for_model)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'instance' do
|
11
|
+
describe '#update' do
|
12
|
+
before :each do
|
13
|
+
@user.update(:password => 'password', :password_confirmation => 'password')
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'Returns an instance if User' do
|
17
|
+
@user.class.should == User
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'Should return true on success' do
|
21
|
+
@user.update(:email => 'max@max.com', :password => 'hi', :password_confirmation => 'hi').should == true
|
22
|
+
@user.update(:email => 'max@max.com').should == true
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'Does not allow duplicate email addresses on update' do
|
26
|
+
@user_two = User.set(:email => 'steve@steve.com', :password => 'hi', :password_confirmation => 'hi')
|
27
|
+
@user.update(:email => 'steve@steve.com').should == false
|
28
|
+
#@user.class.should == User
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'Should say saved is false when invalid' do
|
32
|
+
@user.update(:password => 'paz')
|
33
|
+
@user.saved.should == false
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#errors' do
|
38
|
+
it 'Returns a string of errors' do
|
39
|
+
@user.update(:password => 'paz')
|
40
|
+
@user.errors.class.should == String && @user.errors.length.should > 0
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#valid' do
|
45
|
+
it 'Should return false when invalid' do
|
46
|
+
@user.update(:password => 'hi')
|
47
|
+
@user.valid.should == false
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'Should validate format of email' do
|
51
|
+
@user.update(:email => 'meeewewe!!')
|
52
|
+
@user.valid.should == false
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'Should return true when valid' do
|
56
|
+
@user.valid.should == true
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '#all' do
|
62
|
+
it 'Should return an array of instances of User' do
|
63
|
+
User.all[0].class.should == User
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'Should return users in descending order of creation time' do
|
67
|
+
@newest_user = User.set(:email => 'hey@hi.com', :password => 'hihihi', :password_confirmation => 'hihihi', :created_at => Time.now + 1)
|
68
|
+
User.all[0].email.should == @newest_user.email
|
69
|
+
end
|
70
|
+
|
71
|
+
#it 'Should accept a page argument in a hash and limit results to 20 by default' do
|
72
|
+
# 40.times do |n|
|
73
|
+
# @newest_user = User.set(:email => "#{n}hey@hi.com", :password => 'hihihi', :password_confirmation => 'hihihi', :created_at => Time.now + n)
|
74
|
+
# end
|
75
|
+
# users = User.all(:page => 0)
|
76
|
+
# users[0].email.should == @newest_user.email
|
77
|
+
# users.size.should == 20
|
78
|
+
# User.all(:page => 1)[0].email.should == "19hey@hi.com"
|
79
|
+
#end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe '#set' do
|
83
|
+
it 'Returns an instance if User' do
|
84
|
+
@user.class.should == User
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'Timestamps user with Time' do
|
88
|
+
@user.created_at.class.should == Time
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'Should set first user in database as site admin' do
|
92
|
+
@user.site_admin?.should == true
|
93
|
+
end
|
94
|
+
|
95
|
+
#it 'Should say saved is true' do
|
96
|
+
# @user.saved.should == true
|
97
|
+
#end
|
98
|
+
end
|
99
|
+
|
100
|
+
describe '#set!' do
|
101
|
+
before :each do
|
102
|
+
@user = User.set!({:password => 'hi'})
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'Returns an instance if User' do
|
106
|
+
@user.class.should == User
|
107
|
+
end
|
108
|
+
|
109
|
+
#it 'Should say saved is true' do
|
110
|
+
# @user.saved.should == true
|
111
|
+
#end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe '#delete' do
|
115
|
+
it 'Returns a boolean' do
|
116
|
+
User.delete(@user.id).should == true
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
data/test/lib/ar_app.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'sinatra'
|
3
|
+
require 'active_record'
|
4
|
+
require 'rack-flash'
|
5
|
+
|
6
|
+
ActiveRecord::Base.establish_connection(
|
7
|
+
:adapter => "sqlite3",
|
8
|
+
:database => "#{Dir.pwd}/test.db"
|
9
|
+
)
|
10
|
+
|
11
|
+
require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
|
12
|
+
|
13
|
+
use Rack::Session::Cookie, :secret => "heyhihello"
|
14
|
+
use Rack::Flash
|
15
|
+
|
16
|
+
set :environment, 'development'
|
17
|
+
set :public, 'public'
|
18
|
+
set :views, 'views'
|
19
|
+
|
20
|
+
get '/' do
|
21
|
+
send TEMPLATE, "= render_login_logout", :layout => :layout
|
22
|
+
end
|
23
|
+
|
24
|
+
__END__
|
25
|
+
|
26
|
+
@@ layout
|
27
|
+
= yield
|
data/test/lib/dm_app.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'sinatra'
|
3
|
+
require 'dm-core'
|
4
|
+
require 'dm-migrations'
|
5
|
+
require 'rack-flash'
|
6
|
+
require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
|
7
|
+
|
8
|
+
DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/test.db")
|
9
|
+
DataMapper.auto_migrate!
|
10
|
+
|
11
|
+
use Rack::Session::Cookie, :secret => "heyhihello"
|
12
|
+
use Rack::Flash
|
13
|
+
|
14
|
+
set :environment, 'development'
|
15
|
+
set :public, 'public'
|
16
|
+
set :views, 'views'
|
17
|
+
|
18
|
+
get '/' do
|
19
|
+
send TEMPLATE, "= render_login_logout", :layout => :layout
|
20
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'sinatra'
|
3
|
+
require 'dm-core'
|
4
|
+
require 'dm-migrations'
|
5
|
+
require 'rack-flash'
|
6
|
+
require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
|
7
|
+
|
8
|
+
|
9
|
+
class DmUser
|
10
|
+
property :name, String
|
11
|
+
end
|
12
|
+
|
13
|
+
DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/test.db")
|
14
|
+
DataMapper.auto_migrate!
|
15
|
+
|
16
|
+
set :sinatra_authentication_view_path, Pathname(__FILE__).dirname.expand_path + "extend_views/"
|
17
|
+
use Rack::Session::Cookie, :secret => "heyhihello"
|
18
|
+
use Rack::Flash
|
19
|
+
|
20
|
+
set :environment, 'development'
|
21
|
+
set :public, 'public'
|
22
|
+
set :views, 'views'
|
23
|
+
|
24
|
+
get '/' do
|
25
|
+
puts User.all(:name => 'max')
|
26
|
+
send TEMPLATE, "= render_login_logout", :layout => :layout
|
27
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'sinatra'
|
3
|
+
require 'sinbook'
|
4
|
+
require 'dm-core'
|
5
|
+
require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
|
6
|
+
|
7
|
+
facebook do
|
8
|
+
api_key 'aa2db1b96cb7b57f0c5b1d4d3d8f0a22'
|
9
|
+
secret '21d94ee63969ae3b3f833689838ca00f'
|
10
|
+
app_id 48652736613
|
11
|
+
url 'peoplewithjetpacks.com:4568/'
|
12
|
+
callback 'peoplewithjetpacks.com:4568/'
|
13
|
+
end
|
14
|
+
|
15
|
+
set :port, 4568
|
16
|
+
|
17
|
+
DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/test.db")
|
18
|
+
DataMapper.auto_migrate!
|
19
|
+
|
20
|
+
use Rack::Session::Cookie, :secret => "heyhihello"
|
21
|
+
|
22
|
+
set :environment, 'development'
|
23
|
+
set :public, 'public'
|
24
|
+
set :views, 'views'
|
25
|
+
|
26
|
+
get '/' do
|
27
|
+
send TEMPLATE, :main
|
28
|
+
end
|
29
|
+
|
30
|
+
get '/test' do
|
31
|
+
login_required
|
32
|
+
'hihihi'
|
33
|
+
end
|
34
|
+
|
35
|
+
__END__
|
36
|
+
|
37
|
+
@@ layout
|
38
|
+
%html{:xmlns=>"http://www.w3.org/1999/xhtml", :'xmlns:fb'=>"http://www.facebook.com/2008/fbml"}
|
39
|
+
%head
|
40
|
+
%title Welcome to my Facebook Connect website!
|
41
|
+
%script{:type => 'text/javascript', :src => 'http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US'}
|
42
|
+
%body
|
43
|
+
= render_login_logout
|
44
|
+
= yield
|
45
|
+
:javascript
|
46
|
+
FB.init("#{fb.api_key}", "/receiver")
|
47
|
+
|
48
|
+
@@ main
|
49
|
+
- if fb[:user]
|
50
|
+
Hi,
|
51
|
+
%fb:profile-pic{:uid => fb[:user]}
|
52
|
+
%fb:name{:uid => fb[:user], :useyou => 'false', :firstnameonly => 'true'}
|
53
|
+
!
|
54
|
+
|