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,46 @@
1
+ #sinatra_authentication
2
+ #sinatra_authentication_flash= session[:flash]
3
+ %h1
4
+ Edit
5
+ - if @user.id == current_user.id
6
+ account
7
+ - else
8
+ - if @user.email
9
+ = @user.email
10
+ - elsif @user.fb_uid
11
+ <fb:name uid=#{@user.fb_uid} linked='false' />
12
+ - else
13
+ account
14
+ %form{:action => "/users/#{@user.id}/edit", :method => "post"}
15
+ .field
16
+ .label
17
+ %label{:for => "user_email"} Email
18
+ %input{ :id => "user_email", :name => "user[email]", :size => 30, :type => "text", :value => @user.email }
19
+ .field
20
+ .label
21
+ %label{:for => "user_email"} Name
22
+ %input{ :id => "user_email", :name => "user[name]", :size => 30, :type => "text", :value => @user.name }
23
+ .field
24
+ .label
25
+ %label{:for => "user_password"} New password
26
+ %input{ :id => "user_password", :name => "user[password]", :size => 30, :type => "password" }
27
+ .field
28
+ .label
29
+ %label{:for => "user_password_confirmation"} Confirm
30
+ %input{ :id => "user_password_confirmation", :name => "user[password_confirmation]", :size => 30, :type => "password" }
31
+ -# don't render permission field if admin and editing yourself so you don't shoot yourself in the foot
32
+ - if current_user.admin? && current_user.id != @user.id
33
+ .field
34
+ .label
35
+ %label{:for => 'permission_level'} Permission level
36
+ %select{ :id => "permission_level", :name => "user[permission_level]" }
37
+ %option{:value => -1, :selected => @user.admin?}
38
+ Admin
39
+ %option{:value => 1, :selected => @user.permission_level == 1}
40
+ Authenticated user
41
+ .buttons
42
+ %input{ :value => "Update", :type => "submit" }
43
+ - if Sinatra.const_defined?('FacebookObject')
44
+ - unless @user.fb_uid
45
+ |
46
+ = render_facebook_connect_link('Link account with Facebook')
@@ -0,0 +1,31 @@
1
+ #sinatra_authentication
2
+ %h1.page_title Users
3
+ %table
4
+ %tr
5
+ %th
6
+ - if current_user.admin?
7
+ %th permission level
8
+ - @users.each do |user|
9
+ %tr
10
+ %td
11
+ - if user.email
12
+ = user.email
13
+ - elsif user.fb_uid
14
+ <fb:name uid=#{user.fb_uid} />
15
+ - else
16
+ "user #{user.id}"
17
+ - if current_user.admin?
18
+ %td= user.permission_level
19
+ %td
20
+ = user.name
21
+ %td
22
+ %a{:href => "/users/#{user.id}"} show
23
+ - if current_user.admin?
24
+ %td
25
+ %a{:href => "/users/#{user.id}/edit"} edit
26
+ %td
27
+ -# this doesn't work for tk
28
+ - if !user.site_admin?
29
+ %a{:href => "/users/#{user.id}/delete", :onclick => "return confirm('you sure?')"} delete
30
+ - else
31
+ site admin
@@ -0,0 +1,21 @@
1
+ #sinatra_authentication
2
+ #sinatra_authentication_flash= session[:flash]
3
+ %h1.page_title Login
4
+ %form{:action => "/login", :method => "post"}
5
+ .field
6
+ .label
7
+ %label{:for => "user_email'"} Email
8
+ %input{:id => "user_email", :name => "email", :size => 30, :type => "text"}
9
+ .field
10
+ .label
11
+ %label{:for => "user_password"} Password
12
+ %input{:id => "user_password", :name => "password", :size => 30, :type => "password"}
13
+ .buttons
14
+ %input{:value => "login", :type => "submit"}
15
+ %a{:href => "/signup", :class => 'sinatra_authentication_link'}
16
+ Signup
17
+ - if Sinatra.const_defined?('FacebookObject')
18
+ .third_party_signup
19
+ %h3.section_title One click login:
20
+ .login_link.facebook_login
21
+ = render_facebook_connect_link('Login using facebook', :size => 'large')
@@ -0,0 +1,9 @@
1
+ #sinatra_authentication
2
+ %h1.page_title
3
+ - if @user.email
4
+ = @user.email
5
+ - elsif @user.fb_uid
6
+ <fb:name uid=#{@user.fb_uid} linked='false' />
7
+ - if current_user.admin?
8
+ %h2 permission level
9
+ = @user.permission_level
@@ -0,0 +1,29 @@
1
+ #sinatra_authentication
2
+ #sinatra_authentication_flash= session[:flash]
3
+ %h1.page_title Signup
4
+ %form{:action => "/signup", :method => "post"}
5
+ .field
6
+ .label
7
+ %label{:for => "user_email"} Email
8
+ %input{ :id => "user_email", :name => "user[email]", :size => 30, :type => "text" }
9
+ .field
10
+ .label
11
+ %label{:for => "user_name"} Name
12
+ %input{ :id => "user_name", :name => "user[name]", :size => 30, :type => "text" }
13
+ .field
14
+ .label
15
+ %label{:for => "user_password"} Password
16
+ %input{ :id => "user_password", :name => "user[password]", :size => 30, :type => "password" }
17
+ .field
18
+ .label
19
+ %label{:for => "user_password_confirmation"} Confirm Password
20
+ %input{ :id => "user_password_confirmation", :name => "user[password_confirmation]", :size => 30, :type => "password" }
21
+ .buttons
22
+ %input{ :value => "Create account", :type => "submit" }
23
+ %a{:href => "/login", :class => 'sinatra_authentication_link'}
24
+ Login
25
+ - if Sinatra.const_defined?('FacebookObject')
26
+ .third_party_signup
27
+ %h3.section_title One click signup:
28
+ .login_link.facebook_login
29
+ = render_facebook_connect_link('Signup using facebook', :size => 'large')
@@ -0,0 +1,16 @@
1
+ require 'haml'
2
+ TEMPLATE = :haml
3
+
4
+ class TestHelper
5
+ def self.gen_user
6
+ {'user[email]' => 'yodawg@gmail.com', 'user[password]' => 'password', 'user[password_confirmation]' => 'password'}
7
+ end
8
+
9
+ def self.gen_user_for_model
10
+ {:email => 'yodawg@gmail.com', :password => 'password', :password_confirmation => 'password'}
11
+ end
12
+ end
13
+
14
+ def app
15
+ Sinatra::Application
16
+ end
@@ -0,0 +1,24 @@
1
+ require 'rubygems'
2
+ require 'sinatra'
3
+ require 'rack-flash'
4
+ require 'mongo_mapper'
5
+
6
+ #logger = Logger.new($stdout)
7
+ #MongoMapper.connection = Mongo::Connection.new('db.mongohq.com', 27017, :logger => logger)
8
+ #MongoMapper.database = "fdbk"
9
+ #MongoMapper.database.authenticate(ENV['mongohq_user'], ENV['mongohq_pass'])
10
+
11
+ require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
12
+
13
+ MongoMapper.database = "sinatraauthtest"
14
+
15
+ use Rack::Session::Cookie, :secret => "heyhihello"
16
+ use Rack::Flash
17
+
18
+ set :environment, 'development'
19
+ set :public_folder, 'public'
20
+ set :views, 'views'
21
+
22
+ get '/' do
23
+ send TEMPLATE, "= render_login_logout", :layout => :layout
24
+ end
@@ -0,0 +1,28 @@
1
+ require 'rubygems'
2
+ require 'sinatra'
3
+ require 'rack-flash'
4
+ require 'mongoid'
5
+
6
+ #logger = Logger.new($stdout)
7
+ #MongoMapper.connection = Mongo::Connection.new('db.mongohq.com', 27017, :logger => logger)
8
+ #MongoMapper.database = "fdbk"
9
+ #MongoMapper.database.authenticate(ENV['mongohq_user'], ENV['mongohq_pass'])
10
+
11
+ require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
12
+
13
+ Mongoid.configure do |config|
14
+ name = "sinatraauth_test"
15
+ host = "localhost"
16
+ config.master = Mongo::Connection.new.db(name)
17
+ end
18
+
19
+ use Rack::Session::Cookie, :secret => "heyhihello"
20
+ use Rack::Flash
21
+
22
+ set :environment, 'development'
23
+ set :public, 'public'
24
+ set :views, 'views'
25
+
26
+ get '/' do
27
+ send TEMPLATE, "= render_login_logout", :layout => :layout
28
+ end
@@ -0,0 +1,21 @@
1
+ require 'rubygems'
2
+ require 'sinatra'
3
+ require 'sequel'
4
+ require 'rack-flash'
5
+
6
+ #DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/test.db")
7
+ #DataMapper.auto_migrate!
8
+ DB = Sequel.sqlite(:database => 'test.db')
9
+
10
+ require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
11
+
12
+ use Rack::Session::Cookie, :secret => "heyhihello"
13
+ use Rack::Flash
14
+
15
+ set :environment, 'development'
16
+ set :public, 'public'
17
+ set :views, 'views'
18
+
19
+ get '/' do
20
+ send TEMPLATE, "= render_login_logout", :layout => :layout
21
+ end
@@ -0,0 +1,17 @@
1
+ require 'rubygems'
2
+ require 'sinatra'
3
+ require 'rufus/tokyo'
4
+ require 'rack-flash'
5
+ require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
6
+
7
+ use Rack::Session::Cookie, :secret => "heyhihello"
8
+ use Rack::Flash
9
+ TcUserTable.cabinet_path = File.dirname(__FILE__)
10
+
11
+ set :environment, 'development'
12
+ set :public, 'public'
13
+ set :views, 'views'
14
+
15
+ get '/' do
16
+ send TEMPLATE, "= render_login_logout", :layout => :layout
17
+ end
@@ -0,0 +1,61 @@
1
+ require 'rubygems'
2
+ require 'sinbook'
3
+ require 'rufus/tokyo'
4
+ require 'sinatra'
5
+ require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
6
+
7
+ use Rack::Session::Cookie, :secret => "heyhihello"
8
+ TcUserTable.cabinet_path = File.dirname(__FILE__)
9
+
10
+ facebook do
11
+ api_key 'aa2db1b96cb7b57f0c5b1d4d3d8f0a22'
12
+ secret '21d94ee63969ae3b3f833689838ca00f'
13
+ app_id 48652736613
14
+ url 'peoplewithjetpacks.com:4568/'
15
+ callback 'peoplewithjetpacks.com:4568/'
16
+ end
17
+
18
+ set :port, 4568
19
+
20
+ get '/' do
21
+ send TEMPLATE, :main
22
+ end
23
+
24
+ get '/test' do
25
+ login_required
26
+ 'hihihi'
27
+ end
28
+
29
+ __END__
30
+
31
+ @@ layout
32
+ %html{:xmlns=>"http://www.w3.org/1999/xhtml", :'xmlns:fb'=>"http://www.facebook.com/2008/fbml"}
33
+ %head
34
+ %title Welcome to my Facebook Connect website!
35
+ %script{:type => 'text/javascript', :src => 'http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US'}
36
+ %script{:type => 'text/javascript', :src => 'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js'}
37
+ :javascript
38
+ $(document).ready(function(){
39
+ /* test facebook crap works with ajax */
40
+ $('.sinatra-authentication-login').click(function(){
41
+ $.get($(this).attr('href'), {}, function(data){
42
+ $('#test_box').html(data);
43
+ });
44
+ return false;
45
+ });
46
+ });
47
+ %body
48
+ = render_login_logout
49
+ = yield
50
+ :javascript
51
+ FB.init("#{fb.api_key}", "/receiver")
52
+ #test_box
53
+
54
+ @@ main
55
+ - if fb[:user]
56
+ Hi,
57
+ %fb:profile-pic{:uid => fb[:user]}
58
+ %fb:name{:uid => fb[:user], :useyou => 'false', :firstnameonly => 'true'}
59
+ !
60
+ %br/
61
+
@@ -0,0 +1,5 @@
1
+ require 'lib/mongoid_app'
2
+ require 'lib/helper'
3
+ require 'test/unit'
4
+ require 'rack/test'
5
+ require 'route_tests'
@@ -0,0 +1,40 @@
1
+ require 'lib/mm_app'
2
+ require 'lib/helper'
3
+ require 'test/unit'
4
+ require 'rack/test'
5
+ require 'route_tests'
6
+
7
+ #Test::Unit::TestCase.send :include, Rack::Test::Methods
8
+
9
+ #class SinatraAuthMongoMapperTest < Test::Unit::TestCase
10
+ # include Rack::Test::Methods
11
+ #
12
+ # def app
13
+ # TestApp
14
+ # end
15
+ #
16
+ # def setup
17
+ # post '/signup', TestHelper.gen_user
18
+ # follow_redirect!
19
+ # get '/logout'
20
+ # end
21
+ #
22
+ # def test_should_login
23
+ # post '/login', {'email' => TestHelper.gen_user['user[email]'], 'password' => TestHelper.gen_user['user[password]']}
24
+ # follow_redirect!
25
+ #
26
+ # assert_equal 'http://example.org/', last_request.url
27
+ # #assert cookie_jar['user']
28
+ # assert last_request.env['rack.session'][:user]
29
+ # assert last_response.ok?
30
+ # end
31
+ #
32
+ # def test_should_logout
33
+ # post '/login', {'email' => TestHelper.gen_user['user[email]'], 'password' => TestHelper.gen_user['user[password]']}
34
+ # get '/logout'
35
+ # follow_redirect!
36
+ #
37
+ # assert !last_request.env['rack.session'][:user]
38
+ # assert_equal 'http://example.org/', last_request.url
39
+ # end
40
+ #end
@@ -0,0 +1,29 @@
1
+ Test::Unit::TestCase.send :include, Rack::Test::Methods
2
+
3
+ class SinatraAuthDataMapperTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ post '/signup', TestHelper.gen_user
7
+ follow_redirect!
8
+ get '/logout'
9
+ end
10
+
11
+ def test_should_login
12
+ post '/login', {'email' => TestHelper.gen_user['user[email]'], 'password' => TestHelper.gen_user['user[password]']}
13
+ follow_redirect!
14
+
15
+ assert_equal 'http://example.org/', last_request.url
16
+ #assert cookie_jar['user']
17
+ assert last_request.env['rack.session'][:user]
18
+ assert last_response.ok?
19
+ end
20
+
21
+ def test_should_logout
22
+ post '/login', {'email' => TestHelper.gen_user['user[email]'], 'password' => TestHelper.gen_user['user[password]']}
23
+ get '/logout'
24
+ follow_redirect!
25
+
26
+ assert !last_request.env['rack.session'][:user]
27
+ assert_equal 'http://example.org/', last_request.url
28
+ end
29
+ end
@@ -0,0 +1,5 @@
1
+ require 'lib/tc_app'
2
+ require 'lib/helper'
3
+ require 'test/unit'
4
+ require 'rack/test'
5
+ require 'route_tests'
@@ -0,0 +1,5 @@
1
+ require 'lib/sequel_app'
2
+ require 'lib/helper'
3
+ require 'test/unit'
4
+ require 'rack/test'
5
+ require 'route_tests'
metadata ADDED
@@ -0,0 +1,220 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sinatra-authentication-oran
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - oranzhang
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: sinatra-authentication-oran
16
+ requirement: &22608396 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *22608396
25
+ - !ruby/object:Gem::Dependency
26
+ name: sinatra
27
+ requirement: &22608012 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *22608012
36
+ - !ruby/object:Gem::Dependency
37
+ name: dm-core
38
+ requirement: &22607604 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *22607604
47
+ - !ruby/object:Gem::Dependency
48
+ name: dm-migrations
49
+ requirement: &22607136 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *22607136
58
+ - !ruby/object:Gem::Dependency
59
+ name: dm-validations
60
+ requirement: &22606692 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *22606692
69
+ - !ruby/object:Gem::Dependency
70
+ name: dm-timestamps
71
+ requirement: &22606368 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: *22606368
80
+ - !ruby/object:Gem::Dependency
81
+ name: rufus-tokyo
82
+ requirement: &22606032 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: *22606032
91
+ - !ruby/object:Gem::Dependency
92
+ name: sinbook
93
+ requirement: &22605576 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: *22605576
102
+ - !ruby/object:Gem::Dependency
103
+ name: rack-flash3
104
+ requirement: &22604892 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: *22604892
113
+ description: Simple authentication plugin for sinatra.
114
+ email: 423794590@qq.com
115
+ executables: []
116
+ extensions: []
117
+ extra_rdoc_files:
118
+ - TODO
119
+ - readme.markdown
120
+ files:
121
+ - Gemfile
122
+ - History.txt
123
+ - Manifest
124
+ - Rakefile
125
+ - TODO
126
+ - UNLICENSE
127
+ - example/database.yml
128
+ - example/dm_extend_app.rb
129
+ - example/dm_sinbook.rb
130
+ - example/extend_views/edit.haml
131
+ - example/extend_views/index.haml
132
+ - example/extend_views/login.haml
133
+ - example/extend_views/show.haml
134
+ - example/extend_views/signup.haml
135
+ - example/mm_app.rb
136
+ - example/tc_app.rb
137
+ - example/tc_sinbook.rb
138
+ - lib/models/abstract_user.rb
139
+ - lib/models/activerecord_user.rb
140
+ - lib/models/ar_adapter.rb
141
+ - lib/models/datamapper_user.rb
142
+ - lib/models/dm_adapter.rb
143
+ - lib/models/mm_adapter.rb
144
+ - lib/models/mongoid_adapter.rb
145
+ - lib/models/mongoid_user.rb
146
+ - lib/models/mongomapper_user.rb
147
+ - lib/models/rufus_tokyo_user.rb
148
+ - lib/models/sequel_adapter.rb
149
+ - lib/models/sequel_user.rb
150
+ - lib/models/tc_adapter.rb
151
+ - lib/sinatra-authentication-o.rb
152
+ - lib/sinatra-authentication.rb
153
+ - lib/sinatra-authentication/models.rb
154
+ - lib/views/edit.haml
155
+ - lib/views/edit.slim
156
+ - lib/views/index.haml
157
+ - lib/views/index.slim
158
+ - lib/views/login.haml
159
+ - lib/views/login.slim
160
+ - lib/views/show.haml
161
+ - lib/views/show.slim
162
+ - lib/views/signup.haml
163
+ - lib/views/signup.slim
164
+ - readme.markdown
165
+ - sinatra-authentication-oran.gemspec
166
+ - spec/run_all_specs.rb
167
+ - spec/unit/ar_model_spec.rb
168
+ - spec/unit/dm_model_spec.rb
169
+ - spec/unit/mm_model_spec.rb
170
+ - spec/unit/mongoid_model_spec.rb
171
+ - spec/unit/sequel_model_spec.rb
172
+ - spec/unit/tc_model_spec.rb
173
+ - spec/unit/user_specs.rb
174
+ - test/activerecord_test.rb
175
+ - test/datamapper_test.rb
176
+ - test/lib/ar_app.rb
177
+ - test/lib/dm_app.rb
178
+ - test/lib/dm_extend_app.rb
179
+ - test/lib/dm_sinbook.rb
180
+ - test/lib/extend_views/edit.haml
181
+ - test/lib/extend_views/index.haml
182
+ - test/lib/extend_views/login.haml
183
+ - test/lib/extend_views/show.haml
184
+ - test/lib/extend_views/signup.haml
185
+ - test/lib/helper.rb
186
+ - test/lib/mm_app.rb
187
+ - test/lib/mongoid_app.rb
188
+ - test/lib/sequel_app.rb
189
+ - test/lib/tc_app.rb
190
+ - test/lib/tc_sinbook.rb
191
+ - test/mongoid_test.rb
192
+ - test/mongomapper_test.rb
193
+ - test/route_tests.rb
194
+ - test/rufus_tokyo_test.rb
195
+ - test/sequel_test.rb
196
+ homepage: https://github.com/oranzhang/sinatra-authentication
197
+ licenses: []
198
+ post_install_message:
199
+ rdoc_options: []
200
+ require_paths:
201
+ - lib
202
+ required_ruby_version: !ruby/object:Gem::Requirement
203
+ none: false
204
+ requirements:
205
+ - - ! '>='
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ required_rubygems_version: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ requirements: []
215
+ rubyforge_project:
216
+ rubygems_version: 1.8.16
217
+ signing_key:
218
+ specification_version: 3
219
+ summary: Simple authentication plugin for sinatra.
220
+ test_files: []