sinatra-authentication-oran 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. data/Gemfile +33 -0
  2. data/History.txt +4 -0
  3. data/Manifest +26 -0
  4. data/Rakefile +43 -0
  5. data/TODO +53 -0
  6. data/UNLICENSE +24 -0
  7. data/example/database.yml +3 -0
  8. data/example/dm_extend_app.rb +26 -0
  9. data/example/dm_sinbook.rb +56 -0
  10. data/example/extend_views/edit.haml +42 -0
  11. data/example/extend_views/index.haml +31 -0
  12. data/example/extend_views/login.haml +21 -0
  13. data/example/extend_views/show.haml +9 -0
  14. data/example/extend_views/signup.haml +30 -0
  15. data/example/mm_app.rb +22 -0
  16. data/example/tc_app.rb +16 -0
  17. data/example/tc_sinbook.rb +62 -0
  18. data/lib/models/abstract_user.rb +95 -0
  19. data/lib/models/activerecord_user.rb +56 -0
  20. data/lib/models/ar_adapter.rb +66 -0
  21. data/lib/models/datamapper_user.rb +43 -0
  22. data/lib/models/dm_adapter.rb +61 -0
  23. data/lib/models/mm_adapter.rb +65 -0
  24. data/lib/models/mongoid_adapter.rb +67 -0
  25. data/lib/models/mongoid_user.rb +42 -0
  26. data/lib/models/mongomapper_user.rb +38 -0
  27. data/lib/models/rufus_tokyo_user.rb +206 -0
  28. data/lib/models/sequel_adapter.rb +68 -0
  29. data/lib/models/sequel_user.rb +53 -0
  30. data/lib/models/tc_adapter.rb +101 -0
  31. data/lib/sinatra-authentication-o.rb +305 -0
  32. data/lib/sinatra-authentication.rb +305 -0
  33. data/lib/sinatra-authentication/models.rb +5 -0
  34. data/lib/views/edit.haml +45 -0
  35. data/lib/views/edit.slim +46 -0
  36. data/lib/views/index.haml +29 -0
  37. data/lib/views/index.slim +30 -0
  38. data/lib/views/login.haml +24 -0
  39. data/lib/views/login.slim +25 -0
  40. data/lib/views/show.haml +9 -0
  41. data/lib/views/show.slim +10 -0
  42. data/lib/views/signup.haml +28 -0
  43. data/lib/views/signup.slim +33 -0
  44. data/readme.markdown +295 -0
  45. data/sinatra-authentication-oran.gemspec +137 -0
  46. data/spec/run_all_specs.rb +8 -0
  47. data/spec/unit/ar_model_spec.rb +3 -0
  48. data/spec/unit/dm_model_spec.rb +3 -0
  49. data/spec/unit/mm_model_spec.rb +3 -0
  50. data/spec/unit/mongoid_model_spec.rb +3 -0
  51. data/spec/unit/sequel_model_spec.rb +10 -0
  52. data/spec/unit/tc_model_spec.rb +3 -0
  53. data/spec/unit/user_specs.rb +119 -0
  54. data/test/activerecord_test.rb +5 -0
  55. data/test/datamapper_test.rb +5 -0
  56. data/test/lib/ar_app.rb +27 -0
  57. data/test/lib/dm_app.rb +20 -0
  58. data/test/lib/dm_extend_app.rb +27 -0
  59. data/test/lib/dm_sinbook.rb +54 -0
  60. data/test/lib/extend_views/edit.haml +46 -0
  61. data/test/lib/extend_views/index.haml +31 -0
  62. data/test/lib/extend_views/login.haml +21 -0
  63. data/test/lib/extend_views/show.haml +9 -0
  64. data/test/lib/extend_views/signup.haml +29 -0
  65. data/test/lib/helper.rb +16 -0
  66. data/test/lib/mm_app.rb +24 -0
  67. data/test/lib/mongoid_app.rb +28 -0
  68. data/test/lib/sequel_app.rb +21 -0
  69. data/test/lib/tc_app.rb +17 -0
  70. data/test/lib/tc_sinbook.rb +61 -0
  71. data/test/mongoid_test.rb +5 -0
  72. data/test/mongomapper_test.rb +40 -0
  73. data/test/route_tests.rb +29 -0
  74. data/test/rufus_tokyo_test.rb +5 -0
  75. data/test/sequel_test.rb +5 -0
  76. 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,8 @@
1
+ #!/bin/ruby
2
+
3
+ specs = ['sequel_model', 'dm_model', 'mm_model', 'tc_model', 'mongoid_model']
4
+ specs.each do |spec|
5
+ spec_path = File.dirname(__FILE__) + "/unit/#{spec}_spec.rb"
6
+ @output = %x[rspec #{spec_path}]
7
+ puts @output
8
+ end
@@ -0,0 +1,3 @@
1
+ require File.join(File.dirname(__FILE__), '../../test/lib/ar_app')
2
+ require File.join(File.dirname(__FILE__), '../../test/lib/helper')
3
+ require File.join(File.dirname(__FILE__), 'user_specs')
@@ -0,0 +1,3 @@
1
+ require File.join(File.dirname(__FILE__), '../../test/lib/dm_app')
2
+ require File.join(File.dirname(__FILE__), '../../test/lib/helper')
3
+ require File.join(File.dirname(__FILE__), 'user_specs')
@@ -0,0 +1,3 @@
1
+ require File.join(File.dirname(__FILE__), '../../test/lib/mm_app')
2
+ require File.join(File.dirname(__FILE__), '../../test/lib/helper')
3
+ require File.join(File.dirname(__FILE__), 'user_specs')
@@ -0,0 +1,3 @@
1
+ require File.join(File.dirname(__FILE__), '../../test/lib/mongoid_app')
2
+ require File.join(File.dirname(__FILE__), '../../test/lib/helper')
3
+ require File.join(File.dirname(__FILE__), '/user_specs')
@@ -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,3 @@
1
+ require File.join(File.dirname(__FILE__), '../../test/lib/tc_app')
2
+ require File.join(File.dirname(__FILE__), '../../test/lib/helper')
3
+ require File.join(File.dirname(__FILE__), 'user_specs')
@@ -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
@@ -0,0 +1,5 @@
1
+ require 'lib/ar_app'
2
+ require 'lib/helper'
3
+ require 'test/unit'
4
+ require 'rack/test'
5
+ require 'route_tests'
@@ -0,0 +1,5 @@
1
+ require 'lib/dm_app'
2
+ require 'lib/helper'
3
+ require 'test/unit'
4
+ require 'rack/test'
5
+ require 'route_tests'
@@ -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
@@ -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
+