dailycred 0.1.2 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/Gemfile +14 -2
- data/Guardfile +15 -0
- data/README.md +159 -33
- data/Rakefile +30 -0
- data/app/controllers/sessions_controller.rb +31 -0
- data/app/views/sessions/info.html.erb +13 -0
- data/config/routes.rb +7 -0
- data/dailycred.gemspec +4 -3
- data/docs/lib/dailycred/acts_as_dailycred.html +42 -0
- data/docs/lib/dailycred/client.html +214 -0
- data/docs/lib/dailycred/engine.html +112 -0
- data/docs/lib/dailycred/helper.html +125 -0
- data/docs/lib/dailycred/middleware.html +42 -0
- data/docs/lib/dailycred/tests_helper.html +42 -0
- data/docs/lib/dailycred/user.html +133 -0
- data/docs/lib/dailycred.html +42 -0
- data/docs/lib/generators/dailycred_generator.html +42 -0
- data/docs/lib/generators/templates/migration_create_user.html +39 -0
- data/docs/lib/generators/templates/omniauth.html +71 -0
- data/docs/lib/generators/templates/sessions_controller.html +96 -0
- data/docs/lib/generators/templates/user.html +42 -0
- data/docs/lib/middleware/middleware.html +38 -0
- data/docs/lib/omniauth/strategies/dailycred.html +199 -0
- data/docs/lib/omniauth-dailycred/version.html +38 -0
- data/docs/lib/user/user.html +129 -0
- data/dummy/.gitignore +15 -0
- data/dummy/Gemfile +55 -0
- data/dummy/Guardfile +31 -0
- data/dummy/README.rdoc +261 -0
- data/dummy/Rakefile +7 -0
- data/dummy/app/assets/images/rails.png +0 -0
- data/dummy/app/assets/javascripts/application.js +15 -0
- data/dummy/app/assets/javascripts/posts.js.coffee +3 -0
- data/dummy/app/assets/stylesheets/application.css +13 -0
- data/dummy/app/assets/stylesheets/posts.css.scss +3 -0
- data/dummy/app/assets/stylesheets/scaffolds.css.scss +69 -0
- data/dummy/app/controllers/application_controller.rb +16 -0
- data/dummy/app/controllers/posts_controller.rb +85 -0
- data/dummy/app/helpers/application_helper.rb +2 -0
- data/dummy/app/helpers/posts_helper.rb +2 -0
- data/dummy/app/mailers/.gitkeep +0 -0
- data/dummy/app/models/.gitkeep +0 -0
- data/dummy/app/models/post.rb +3 -0
- data/dummy/app/models/user.rb +3 -0
- data/dummy/app/views/layouts/application.html.erb +14 -0
- data/dummy/app/views/posts/_form.html.erb +21 -0
- data/dummy/app/views/posts/edit.html.erb +6 -0
- data/dummy/app/views/posts/index.html.erb +23 -0
- data/dummy/app/views/posts/new.html.erb +5 -0
- data/dummy/app/views/posts/show.html.erb +10 -0
- data/dummy/config/application.rb +62 -0
- data/dummy/config/boot.rb +6 -0
- data/dummy/config/database.yml +25 -0
- data/dummy/config/environment.rb +5 -0
- data/dummy/config/environments/development.rb +37 -0
- data/dummy/config/environments/production.rb +67 -0
- data/dummy/config/environments/test.rb +37 -0
- data/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/dummy/config/initializers/inflections.rb +15 -0
- data/dummy/config/initializers/mime_types.rb +5 -0
- data/dummy/config/initializers/omniauth.rb +13 -0
- data/dummy/config/initializers/secret_token.rb +7 -0
- data/dummy/config/initializers/session_store.rb +8 -0
- data/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/dummy/config/locales/en.yml +5 -0
- data/dummy/config/routes.rb +61 -0
- data/dummy/config.ru +4 -0
- data/dummy/db/migrate/20120925172903_create_users.rb +68 -0
- data/dummy/db/migrate/20120926012555_create_posts.rb +9 -0
- data/dummy/db/migrate/20121002192037_update_users_2.rb +70 -0
- data/dummy/db/schema.rb +45 -0
- data/dummy/db/seeds.rb +7 -0
- data/dummy/lib/assets/.gitkeep +0 -0
- data/dummy/lib/tasks/.gitkeep +0 -0
- data/dummy/log/.gitkeep +0 -0
- data/dummy/public/404.html +26 -0
- data/dummy/public/422.html +26 -0
- data/dummy/public/500.html +25 -0
- data/dummy/public/favicon.ico +0 -0
- data/dummy/public/index.html +241 -0
- data/dummy/public/robots.txt +5 -0
- data/dummy/script/rails +6 -0
- data/dummy/test/fixtures/.gitkeep +0 -0
- data/dummy/test/fixtures/posts.yml +7 -0
- data/dummy/test/fixtures/users.yml +3 -0
- data/dummy/test/functional/.gitkeep +0 -0
- data/dummy/test/functional/posts_controller_test.rb +51 -0
- data/dummy/test/integration/.gitkeep +0 -0
- data/dummy/test/performance/browsing_test.rb +12 -0
- data/dummy/test/test_helper.rb +62 -0
- data/dummy/test/unit/.gitkeep +0 -0
- data/dummy/test/unit/helpers/posts_helper_test.rb +4 -0
- data/dummy/test/unit/post_test.rb +7 -0
- data/dummy/test/unit/user_test.rb +77 -0
- data/dummy/vendor/assets/javascripts/.gitkeep +0 -0
- data/dummy/vendor/assets/stylesheets/.gitkeep +0 -0
- data/dummy/vendor/plugins/.gitkeep +0 -0
- data/lib/dailycred/acts_as_dailycred.rb +87 -0
- data/lib/dailycred/client.rb +105 -0
- data/lib/dailycred/engine.rb +52 -0
- data/lib/dailycred/helper.rb +60 -0
- data/lib/{middleware → dailycred}/middleware.rb +25 -15
- data/lib/dailycred/tests_helper.rb +5 -0
- data/lib/dailycred/user.rb +63 -0
- data/lib/dailycred.rb +1 -79
- data/lib/generators/dailycred_generator.rb +94 -44
- data/lib/generators/templates/info.html.erb +1 -1
- data/lib/generators/templates/login.html.erb +13 -0
- data/lib/generators/templates/migration_create_user.rb +60 -10
- data/lib/generators/templates/omniauth.rb +6 -17
- data/lib/generators/templates/sessions_controller.rb +8 -2
- data/lib/generators/templates/user.rb +1 -23
- data/lib/omniauth/strategies/dailycred.rb +37 -20
- data/script/download_info.rb +11 -0
- data/spec/{spec_helper.rb → helper_spec.rb} +4 -2
- data/spec/omniauth/strategies/dailycred_spec.rb +52 -10
- data/spec/support/dailycred_spec.rb +72 -0
- data/spec/support/shared_examples.rb +40 -0
- data/test/generator_test.rb +85 -0
- data/test/test_helper.rb +6 -0
- metadata +116 -8
- data/lib/omniauth-dailycred/version.rb +0 -5
@@ -0,0 +1,199 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
5
|
+
<title>dailycred.rb</title>
|
6
|
+
<link rel="stylesheet" href="http://jashkenas.github.com/docco/resources/docco.css">
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<div id='container'>
|
10
|
+
<div id="background"></div>
|
11
|
+
<div id="jump_to">
|
12
|
+
Jump To …
|
13
|
+
<div id="jump_wrapper">
|
14
|
+
<div id="jump_page">
|
15
|
+
<a class="source" href="../../dailycred.html">dailycred.rb</a>
|
16
|
+
<a class="source" href="../../dailycred/acts_as_dailycred.html">acts_as_dailycred.rb</a>
|
17
|
+
<a class="source" href="../../dailycred/client.html">client.rb</a>
|
18
|
+
<a class="source" href="../../dailycred/engine.html">engine.rb</a>
|
19
|
+
<a class="source" href="../../dailycred/helper.html">helper.rb</a>
|
20
|
+
<a class="source" href="../../dailycred/middleware.html">middleware.rb</a>
|
21
|
+
<a class="source" href="../../dailycred/tests_helper.html">tests_helper.rb</a>
|
22
|
+
<a class="source" href="../../dailycred/user.html">user.rb</a>
|
23
|
+
<a class="source" href="../../generators/dailycred_generator.html">dailycred_generator.rb</a>
|
24
|
+
<a class="source" href="../../generators/templates/migration_create_user.html">migration_create_user.rb</a>
|
25
|
+
<a class="source" href="../../generators/templates/omniauth.html">omniauth.rb</a>
|
26
|
+
<a class="source" href="../../generators/templates/sessions_controller.html">sessions_controller.rb</a>
|
27
|
+
<a class="source" href="../../generators/templates/user.html">user.rb</a>
|
28
|
+
<a class="source" href="dailycred.html">dailycred.rb</a>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
<table cellspacing=0 cellpadding=0>
|
33
|
+
<thead>
|
34
|
+
<tr>
|
35
|
+
<th class=docs><h1>dailycred.rb</h1></th>
|
36
|
+
<th class=code></th>
|
37
|
+
</tr>
|
38
|
+
</thead>
|
39
|
+
<tbody>
|
40
|
+
<tr id='section-1'>
|
41
|
+
<td class=docs>
|
42
|
+
<div class="pilwrap">
|
43
|
+
<a class="pilcrow" href="#section-1">¶</a>
|
44
|
+
</div>
|
45
|
+
|
46
|
+
</td>
|
47
|
+
<td class=code>
|
48
|
+
<div class='highlight'><pre><span class="nb">require</span> <span class="s1">'omniauth-oauth2'</span>
|
49
|
+
<span class="nb">require</span> <span class="s1">'faraday'</span>
|
50
|
+
<span class="nb">require</span> <span class="s1">'net/https'</span>
|
51
|
+
<span class="nb">require</span> <span class="s1">'json'</span>
|
52
|
+
<span class="nb">require</span> <span class="s1">'pp'</span></pre></div>
|
53
|
+
</td>
|
54
|
+
</tr>
|
55
|
+
<tr id='section-The_Dailycred_Omniauth_Strategy'>
|
56
|
+
<td class=docs>
|
57
|
+
<div class="pilwrap">
|
58
|
+
<a class="pilcrow" href="#section-The_Dailycred_Omniauth_Strategy">¶</a>
|
59
|
+
</div>
|
60
|
+
<h1>The Dailycred Omniauth Strategy</h1>
|
61
|
+
</td>
|
62
|
+
<td class=code>
|
63
|
+
<div class='highlight'><pre><span class="k">module</span> <span class="nn">OmniAuth</span>
|
64
|
+
<span class="k">module</span> <span class="nn">Strategies</span>
|
65
|
+
<span class="k">class</span> <span class="nc">Dailycred</span> <span class="o"><</span> <span class="no">OmniAuth</span><span class="o">::</span><span class="no">Strategies</span><span class="o">::</span><span class="no">OAuth2</span></pre></div>
|
66
|
+
</td>
|
67
|
+
</tr>
|
68
|
+
<tr id='section-3'>
|
69
|
+
<td class=docs>
|
70
|
+
<div class="pilwrap">
|
71
|
+
<a class="pilcrow" href="#section-3">¶</a>
|
72
|
+
</div>
|
73
|
+
<p>default options</p>
|
74
|
+
</td>
|
75
|
+
<td class=code>
|
76
|
+
<div class='highlight'><pre> <span class="n">option</span> <span class="ss">:client_options</span><span class="p">,</span> <span class="p">{</span>
|
77
|
+
<span class="ss">:site</span> <span class="o">=></span> <span class="s2">"https://www.dailycred.com"</span><span class="p">,</span>
|
78
|
+
<span class="ss">:authorize_url</span> <span class="o">=></span> <span class="s1">'/oauth/authorize'</span><span class="p">,</span>
|
79
|
+
<span class="ss">:token_url</span> <span class="o">=></span> <span class="s1">'/oauth/access_token'</span>
|
80
|
+
<span class="p">}</span></pre></div>
|
81
|
+
</td>
|
82
|
+
</tr>
|
83
|
+
<tr id='section-4'>
|
84
|
+
<td class=docs>
|
85
|
+
<div class="pilwrap">
|
86
|
+
<a class="pilcrow" href="#section-4">¶</a>
|
87
|
+
</div>
|
88
|
+
<p>parameters to expect and return from dailycred responses</p>
|
89
|
+
</td>
|
90
|
+
<td class=code>
|
91
|
+
<div class='highlight'><pre> <span class="no">ATTRIBUTES</span> <span class="o">=</span> <span class="o">[</span><span class="s2">"email"</span><span class="p">,</span> <span class="s2">"username"</span><span class="p">,</span> <span class="s2">"created"</span><span class="p">,</span> <span class="s2">"verified"</span><span class="p">,</span> <span class="s2">"admin"</span><span class="p">,</span> <span class="s2">"referred_by"</span><span class="p">,</span> <span class="s2">"tags"</span><span class="p">,</span> <span class="s2">"referred"</span><span class="o">]</span></pre></div>
|
92
|
+
</td>
|
93
|
+
</tr>
|
94
|
+
<tr id='section-5'>
|
95
|
+
<td class=docs>
|
96
|
+
<div class="pilwrap">
|
97
|
+
<a class="pilcrow" href="#section-5">¶</a>
|
98
|
+
</div>
|
99
|
+
<p>allows parameters to be passed through</p>
|
100
|
+
</td>
|
101
|
+
<td class=code>
|
102
|
+
<div class='highlight'><pre> <span class="no">AUTH_PARAMS</span> <span class="o">=</span> <span class="o">[</span><span class="s2">"action"</span><span class="p">,</span><span class="s2">"identity_provider"</span><span class="p">,</span><span class="s2">"referrer"</span><span class="o">]</span>
|
103
|
+
|
104
|
+
<span class="n">option</span> <span class="ss">:authorize_options</span><span class="p">,</span> <span class="no">OmniAuth</span><span class="o">::</span><span class="no">Strategies</span><span class="o">::</span><span class="no">Dailycred</span><span class="o">::</span><span class="no">AUTH_PARAMS</span>
|
105
|
+
|
106
|
+
<span class="n">uid</span> <span class="p">{</span> <span class="n">user</span><span class="o">[</span><span class="s1">'id'</span><span class="o">]</span> <span class="p">}</span>
|
107
|
+
|
108
|
+
<span class="n">info</span> <span class="k">do</span>
|
109
|
+
<span class="n">user</span>
|
110
|
+
<span class="k">end</span>
|
111
|
+
|
112
|
+
<span class="k">alias</span> <span class="ss">:old_request_phase</span> <span class="ss">:request_phase</span>
|
113
|
+
|
114
|
+
|
115
|
+
<span class="k">def</span> <span class="nf">authorize_params</span>
|
116
|
+
<span class="k">super</span><span class="o">.</span><span class="n">tap</span> <span class="k">do</span> <span class="o">|</span><span class="n">params</span><span class="o">|</span>
|
117
|
+
<span class="n">params</span><span class="o">[</span><span class="ss">:state</span><span class="o">]</span> <span class="o">||=</span> <span class="p">{}</span>
|
118
|
+
<span class="k">end</span>
|
119
|
+
<span class="k">end</span></pre></div>
|
120
|
+
</td>
|
121
|
+
</tr>
|
122
|
+
<tr id='section-6'>
|
123
|
+
<td class=docs>
|
124
|
+
<div class="pilwrap">
|
125
|
+
<a class="pilcrow" href="#section-6">¶</a>
|
126
|
+
</div>
|
127
|
+
<p>this step allows auth_params to be added to the url</p>
|
128
|
+
</td>
|
129
|
+
<td class=code>
|
130
|
+
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">request_phase</span>
|
131
|
+
<span class="nb">p</span> <span class="n">session</span><span class="o">[</span><span class="s1">'omniauth.state'</span><span class="o">]</span>
|
132
|
+
<span class="no">OmniAuth</span><span class="o">::</span><span class="no">Strategies</span><span class="o">::</span><span class="no">Dailycred</span><span class="o">::</span><span class="no">AUTH_PARAMS</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">param</span><span class="o">|</span>
|
133
|
+
<span class="n">val</span> <span class="o">=</span> <span class="n">session</span><span class="o">[</span><span class="s1">'omniauth.params'</span><span class="o">][</span><span class="n">param</span><span class="o">]</span>
|
134
|
+
<span class="k">if</span> <span class="n">val</span> <span class="o">&&</span> <span class="o">!</span><span class="n">val</span><span class="o">.</span><span class="n">empty?</span>
|
135
|
+
<span class="n">options</span><span class="o">[</span><span class="ss">:authorize_params</span><span class="o">]</span> <span class="o">||=</span> <span class="p">{}</span>
|
136
|
+
<span class="n">options</span><span class="o">[</span><span class="ss">:authorize_params</span><span class="o">].</span><span class="n">merge!</span><span class="p">(</span><span class="n">param</span> <span class="o">=></span> <span class="n">val</span><span class="p">)</span>
|
137
|
+
<span class="k">end</span>
|
138
|
+
<span class="k">end</span>
|
139
|
+
<span class="n">old_request_phase</span>
|
140
|
+
<span class="k">end</span>
|
141
|
+
|
142
|
+
<span class="kp">private</span></pre></div>
|
143
|
+
</td>
|
144
|
+
</tr>
|
145
|
+
<tr id='section-7'>
|
146
|
+
<td class=docs>
|
147
|
+
<div class="pilwrap">
|
148
|
+
<a class="pilcrow" href="#section-7">¶</a>
|
149
|
+
</div>
|
150
|
+
<p>This is the phase where the gem calls me.json, which returns information about the user</p>
|
151
|
+
</td>
|
152
|
+
<td class=code>
|
153
|
+
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">user</span>
|
154
|
+
<span class="k">return</span> <span class="vi">@duser</span> <span class="k">if</span> <span class="o">!</span><span class="vi">@duser</span><span class="o">.</span><span class="n">nil?</span>
|
155
|
+
<span class="n">connection</span> <span class="o">=</span> <span class="no">Faraday</span><span class="o">::</span><span class="no">Connection</span><span class="o">.</span><span class="n">new</span> <span class="n">options</span><span class="o">.</span><span class="n">client_options</span><span class="o">[</span><span class="ss">:site</span><span class="o">]</span><span class="p">,</span> <span class="ss">:ssl</span> <span class="o">=></span> <span class="n">options</span><span class="o">.</span><span class="n">client_options</span><span class="o">[</span><span class="ss">:ssl</span><span class="o">]</span>
|
156
|
+
<span class="n">response</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"/graph/me.json?access_token=</span><span class="si">#{</span><span class="n">access_token</span><span class="o">.</span><span class="n">token</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
157
|
+
<span class="n">json</span> <span class="o">=</span> <span class="no">JSON</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">body</span><span class="p">)</span></pre></div>
|
158
|
+
</td>
|
159
|
+
</tr>
|
160
|
+
<tr id='section-8'>
|
161
|
+
<td class=docs>
|
162
|
+
<div class="pilwrap">
|
163
|
+
<a class="pilcrow" href="#section-8">¶</a>
|
164
|
+
</div>
|
165
|
+
<p>pp json</p>
|
166
|
+
</td>
|
167
|
+
<td class=code>
|
168
|
+
<div class='highlight'><pre> <span class="vi">@duser</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'token'</span> <span class="o">=></span> <span class="n">access_token</span><span class="o">.</span><span class="n">token</span><span class="p">}</span>
|
169
|
+
<span class="vi">@duser</span><span class="o">[</span><span class="s1">'provider'</span><span class="o">]</span> <span class="o">=</span> <span class="s1">'dailycred'</span>
|
170
|
+
<span class="vi">@duser</span><span class="o">[</span><span class="s1">'uid'</span><span class="o">]</span> <span class="o">=</span> <span class="n">json</span><span class="o">[</span><span class="s1">'id'</span><span class="o">]</span> <span class="o">||</span> <span class="n">json</span><span class="o">[</span><span class="s1">'user_id'</span><span class="o">]</span>
|
171
|
+
<span class="no">OmniAuth</span><span class="o">::</span><span class="no">Strategies</span><span class="o">::</span><span class="no">Dailycred</span><span class="o">::</span><span class="no">ATTRIBUTES</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="kp">attr</span><span class="o">|</span>
|
172
|
+
<span class="vi">@duser</span><span class="o">[</span><span class="kp">attr</span><span class="o">]</span> <span class="o">=</span> <span class="n">json</span><span class="o">[</span><span class="kp">attr</span><span class="o">]</span>
|
173
|
+
<span class="k">end</span>
|
174
|
+
<span class="n">json</span><span class="o">[</span><span class="s2">"identities"</span><span class="o">].</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="o">|</span>
|
175
|
+
<span class="vi">@duser</span><span class="o">[</span><span class="n">k</span><span class="o">]</span> <span class="o">=</span> <span class="n">v</span>
|
176
|
+
<span class="vi">@duser</span><span class="o">[</span><span class="n">k</span><span class="o">][</span><span class="ss">:access_token</span><span class="o">]</span> <span class="o">=</span> <span class="n">json</span><span class="o">[</span><span class="s2">"access_tokens"</span><span class="o">][</span><span class="n">k</span><span class="o">]</span>
|
177
|
+
<span class="k">end</span> <span class="k">if</span> <span class="o">!</span><span class="n">json</span><span class="o">[</span><span class="s2">"identities"</span><span class="o">].</span><span class="n">nil?</span></pre></div>
|
178
|
+
</td>
|
179
|
+
</tr>
|
180
|
+
<tr id='section-9'>
|
181
|
+
<td class=docs>
|
182
|
+
<div class="pilwrap">
|
183
|
+
<a class="pilcrow" href="#section-9">¶</a>
|
184
|
+
</div>
|
185
|
+
<p>pp @duser</p>
|
186
|
+
|
187
|
+
</td>
|
188
|
+
<td class=code>
|
189
|
+
<div class='highlight'><pre> <span class="vi">@duser</span>
|
190
|
+
<span class="k">end</span>
|
191
|
+
|
192
|
+
<span class="k">end</span>
|
193
|
+
<span class="k">end</span>
|
194
|
+
<span class="k">end</span></pre></div>
|
195
|
+
</td>
|
196
|
+
</tr>
|
197
|
+
</table>
|
198
|
+
</div>
|
199
|
+
</body>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
5
|
+
<title>version.rb</title>
|
6
|
+
<link rel="stylesheet" href="http://jashkenas.github.com/docco/resources/docco.css">
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<div id='container'>
|
10
|
+
<div id="background"></div>
|
11
|
+
<div id="jump_to">
|
12
|
+
Jump To …
|
13
|
+
<div id="jump_wrapper">
|
14
|
+
<div id="jump_page">
|
15
|
+
<a class="source" href="../dailycred.html">dailycred.rb</a>
|
16
|
+
<a class="source" href="../generators/dailycred_generator.html">dailycred_generator.rb</a>
|
17
|
+
<a class="source" href="../generators/templates/migration_create_user.html">migration_create_user.rb</a>
|
18
|
+
<a class="source" href="../generators/templates/omniauth.html">omniauth.rb</a>
|
19
|
+
<a class="source" href="../generators/templates/sessions_controller.html">sessions_controller.rb</a>
|
20
|
+
<a class="source" href="../generators/templates/user.html">user.rb</a>
|
21
|
+
<a class="source" href="../middleware/middleware.html">middleware.rb</a>
|
22
|
+
<a class="source" href="version.html">version.rb</a>
|
23
|
+
<a class="source" href="../omniauth/strategies/dailycred.html">dailycred.rb</a>
|
24
|
+
<a class="source" href="../user/user.html">user.rb</a>
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
<table cellspacing=0 cellpadding=0>
|
29
|
+
<thead>
|
30
|
+
<tr>
|
31
|
+
<th class=docs><h1>version.rb</h1></th>
|
32
|
+
<th class=code></th>
|
33
|
+
</tr>
|
34
|
+
</thead>
|
35
|
+
<tbody>
|
36
|
+
</table>
|
37
|
+
</div>
|
38
|
+
</body>
|
@@ -0,0 +1,129 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
5
|
+
<title>user.rb</title>
|
6
|
+
<link rel="stylesheet" href="http://jashkenas.github.com/docco/resources/docco.css">
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<div id='container'>
|
10
|
+
<div id="background"></div>
|
11
|
+
<div id="jump_to">
|
12
|
+
Jump To …
|
13
|
+
<div id="jump_wrapper">
|
14
|
+
<div id="jump_page">
|
15
|
+
<a class="source" href="../dailycred.html">dailycred.rb</a>
|
16
|
+
<a class="source" href="../generators/dailycred_generator.html">dailycred_generator.rb</a>
|
17
|
+
<a class="source" href="../generators/templates/migration_create_user.html">migration_create_user.rb</a>
|
18
|
+
<a class="source" href="../generators/templates/omniauth.html">omniauth.rb</a>
|
19
|
+
<a class="source" href="../generators/templates/sessions_controller.html">sessions_controller.rb</a>
|
20
|
+
<a class="source" href="../generators/templates/user.html">user.rb</a>
|
21
|
+
<a class="source" href="../middleware/middleware.html">middleware.rb</a>
|
22
|
+
<a class="source" href="../omniauth-dailycred/version.html">version.rb</a>
|
23
|
+
<a class="source" href="../omniauth/strategies/dailycred.html">dailycred.rb</a>
|
24
|
+
<a class="source" href="user.html">user.rb</a>
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
<table cellspacing=0 cellpadding=0>
|
29
|
+
<thead>
|
30
|
+
<tr>
|
31
|
+
<th class=docs><h1>user.rb</h1></th>
|
32
|
+
<th class=code></th>
|
33
|
+
</tr>
|
34
|
+
</thead>
|
35
|
+
<tbody>
|
36
|
+
<tr id='section-1'>
|
37
|
+
<td class=docs>
|
38
|
+
<div class="pilwrap">
|
39
|
+
<a class="pilcrow" href="#section-1">¶</a>
|
40
|
+
</div>
|
41
|
+
|
42
|
+
</td>
|
43
|
+
<td class=code>
|
44
|
+
<div class='highlight'><pre><span class="k">class</span> <span class="nc">Dailycred</span>
|
45
|
+
<span class="k">class</span> <span class="nc">Auth</span>
|
46
|
+
<span class="kp">include</span> <span class="no">ActiveModel</span><span class="o">::</span><span class="no">Validations</span>
|
47
|
+
<span class="kp">include</span> <span class="no">ActiveModel</span><span class="o">::</span><span class="no">Serialization</span>
|
48
|
+
|
49
|
+
<span class="n">validates_presence_of</span> <span class="ss">:email</span><span class="p">,</span> <span class="ss">:pass</span>
|
50
|
+
|
51
|
+
<span class="kp">attr_accessor</span> <span class="ss">:client</span><span class="p">,</span> <span class="ss">:email</span><span class="p">,</span> <span class="ss">:pass</span><span class="p">,</span> <span class="ss">:authorized</span>
|
52
|
+
|
53
|
+
<span class="k">def</span> <span class="nf">initialize</span> <span class="n">client</span><span class="p">,</span> <span class="n">user</span> <span class="o">=</span> <span class="p">{}</span>
|
54
|
+
<span class="nb">self</span><span class="o">.</span><span class="n">client</span> <span class="o">=</span> <span class="n">client</span>
|
55
|
+
<span class="nb">self</span><span class="o">.</span><span class="n">authorized</span> <span class="o">=</span> <span class="kp">false</span>
|
56
|
+
<span class="n">user</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">k</span><span class="p">,</span><span class="n">v</span><span class="o">|</span>
|
57
|
+
<span class="nb">self</span><span class="o">[</span><span class="n">k</span><span class="o">]</span> <span class="o">=</span> <span class="n">v</span> <span class="k">if</span> <span class="nb">self</span><span class="o">.</span><span class="n">respond_to</span><span class="p">(</span><span class="n">k</span><span class="p">)</span>
|
58
|
+
<span class="k">end</span>
|
59
|
+
<span class="k">end</span>
|
60
|
+
|
61
|
+
<span class="k">def</span> <span class="nf">login</span>
|
62
|
+
<span class="k">if</span> <span class="o">!</span><span class="nb">self</span><span class="o">.</span><span class="n">valid?</span></pre></div>
|
63
|
+
</td>
|
64
|
+
</tr>
|
65
|
+
<tr id='section-2'>
|
66
|
+
<td class=docs>
|
67
|
+
<div class="pilwrap">
|
68
|
+
<a class="pilcrow" href="#section-2">¶</a>
|
69
|
+
</div>
|
70
|
+
<p>it didn’t work already, return false</p>
|
71
|
+
</td>
|
72
|
+
<td class=code>
|
73
|
+
<div class='highlight'><pre> <span class="k">return</span> <span class="kp">false</span>
|
74
|
+
<span class="k">end</span>
|
75
|
+
|
76
|
+
<span class="n">response</span> <span class="o">=</span> <span class="no">JSON</span><span class="o">.</span><span class="n">parse</span> <span class="n">client</span><span class="o">.</span><span class="n">login</span><span class="p">(</span><span class="nb">self</span><span class="o">.</span><span class="n">to_hash</span><span class="p">)</span>
|
77
|
+
<span class="n">err_parser</span> <span class="n">response</span>
|
78
|
+
|
79
|
+
<span class="k">return</span> <span class="kp">false</span> <span class="k">if</span> <span class="o">!</span><span class="nb">self</span><span class="o">.</span><span class="n">valid?</span>
|
80
|
+
<span class="kp">true</span>
|
81
|
+
<span class="k">end</span>
|
82
|
+
|
83
|
+
<span class="k">def</span> <span class="nf">to_hash</span>
|
84
|
+
<span class="p">{</span>
|
85
|
+
<span class="ss">:email</span> <span class="o">=></span> <span class="nb">self</span><span class="o">.</span><span class="n">email</span><span class="p">,</span>
|
86
|
+
<span class="ss">:pass</span> <span class="o">=></span> <span class="nb">self</span><span class="o">.</span><span class="n">pass</span>
|
87
|
+
<span class="p">}</span>
|
88
|
+
<span class="k">end</span>
|
89
|
+
|
90
|
+
<span class="kp">private</span></pre></div>
|
91
|
+
</td>
|
92
|
+
</tr>
|
93
|
+
<tr id='section-3'>
|
94
|
+
<td class=docs>
|
95
|
+
<div class="pilwrap">
|
96
|
+
<a class="pilcrow" href="#section-3">¶</a>
|
97
|
+
</div>
|
98
|
+
<p>response is a hash, which is
|
99
|
+
a json-parsed http response body</p>
|
100
|
+
|
101
|
+
</td>
|
102
|
+
<td class=code>
|
103
|
+
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">err_parser</span> <span class="n">response</span>
|
104
|
+
<span class="k">if</span> <span class="o">!</span><span class="n">response</span><span class="o">[</span><span class="s2">"worked"</span><span class="o">]</span>
|
105
|
+
<span class="nb">self</span><span class="o">.</span><span class="n">authorized</span> <span class="o">=</span> <span class="kp">false</span>
|
106
|
+
<span class="n">response</span><span class="o">[</span><span class="s2">"errors"</span><span class="o">].</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">err</span><span class="o">|</span>
|
107
|
+
<span class="n">attrib</span> <span class="o">=</span> <span class="n">err</span><span class="o">[</span><span class="s2">"attribute"</span><span class="o">]</span>
|
108
|
+
<span class="n">message</span> <span class="o">=</span> <span class="n">err</span><span class="o">[</span><span class="s2">"message"</span><span class="o">]</span>
|
109
|
+
<span class="k">if</span> <span class="n">attrib</span> <span class="o">==</span> <span class="s2">"form"</span>
|
110
|
+
<span class="nb">self</span><span class="o">.</span><span class="n">errors</span><span class="o">.</span><span class="n">add_to_base</span> <span class="n">message</span>
|
111
|
+
<span class="k">else</span>
|
112
|
+
<span class="k">if</span> <span class="n">attrib</span> <span class="o">==</span> <span class="s2">"user"</span>
|
113
|
+
<span class="nb">self</span><span class="o">.</span><span class="n">errors</span><span class="o">.</span><span class="n">add</span> <span class="ss">:email</span><span class="p">,</span> <span class="n">message</span>
|
114
|
+
<span class="k">elsif</span> <span class="nb">self</span><span class="o">.</span><span class="n">respond_to</span> <span class="n">attrib</span>
|
115
|
+
<span class="nb">self</span><span class="o">.</span><span class="n">errors</span><span class="o">.</span><span class="n">add</span> <span class="n">attrib</span><span class="p">,</span> <span class="n">message</span>
|
116
|
+
<span class="k">end</span>
|
117
|
+
<span class="k">end</span>
|
118
|
+
<span class="k">end</span>
|
119
|
+
<span class="k">end</span>
|
120
|
+
<span class="k">end</span>
|
121
|
+
|
122
|
+
<span class="k">end</span>
|
123
|
+
|
124
|
+
<span class="k">end</span></pre></div>
|
125
|
+
</td>
|
126
|
+
</tr>
|
127
|
+
</table>
|
128
|
+
</div>
|
129
|
+
</body>
|
data/dummy/.gitignore
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# See http://help.github.com/ignore-files/ for more about ignoring files.
|
2
|
+
#
|
3
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
4
|
+
# or operating system, you probably want to add a global ignore instead:
|
5
|
+
# git config --global core.excludesfile ~/.gitignore_global
|
6
|
+
|
7
|
+
# Ignore bundler config
|
8
|
+
/.bundle
|
9
|
+
|
10
|
+
# Ignore the default SQLite database.
|
11
|
+
/db/*.sqlite3
|
12
|
+
|
13
|
+
# Ignore all logfiles and tempfiles.
|
14
|
+
/log/*.log
|
15
|
+
/tmp
|
data/dummy/Gemfile
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gem 'rails', '3.2.8'
|
4
|
+
|
5
|
+
# Bundle edge Rails instead:
|
6
|
+
# gem 'rails', :git => 'git://github.com/rails/rails.git'
|
7
|
+
|
8
|
+
gem 'sqlite3'
|
9
|
+
gem 'dailycred', :path => '../'
|
10
|
+
gem 'awesome_print'
|
11
|
+
|
12
|
+
|
13
|
+
# Gems used only for assets and not required
|
14
|
+
# in production environments by default.
|
15
|
+
group :assets do
|
16
|
+
gem 'sass-rails', '~> 3.2.3'
|
17
|
+
gem 'coffee-rails', '~> 3.2.1'
|
18
|
+
|
19
|
+
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
|
20
|
+
# gem 'therubyracer', :platforms => :ruby
|
21
|
+
|
22
|
+
gem 'uglifier', '>= 1.0.3'
|
23
|
+
end
|
24
|
+
|
25
|
+
gem 'jquery-rails'
|
26
|
+
gem 'factory_girl'
|
27
|
+
|
28
|
+
gem 'quiet_assets', :group => :development
|
29
|
+
|
30
|
+
group :test, :development do
|
31
|
+
gem 'guard-test'
|
32
|
+
gem 'rb-fsevent', '~> 0.9.1'
|
33
|
+
gem 'guard'
|
34
|
+
gem 'growl'
|
35
|
+
gem 'guard-spork'
|
36
|
+
gem 'ruby_gntp'
|
37
|
+
gem 'spork-rails'
|
38
|
+
gem 'spork-testunit'
|
39
|
+
gem 'mocha'
|
40
|
+
end
|
41
|
+
|
42
|
+
# To use ActiveModel has_secure_password
|
43
|
+
# gem 'bcrypt-ruby', '~> 3.0.0'
|
44
|
+
|
45
|
+
# To use Jbuilder templates for JSON
|
46
|
+
# gem 'jbuilder'
|
47
|
+
|
48
|
+
# Use unicorn as the app server
|
49
|
+
# gem 'unicorn'
|
50
|
+
|
51
|
+
# Deploy with Capistrano
|
52
|
+
# gem 'capistrano'
|
53
|
+
|
54
|
+
# To use debugger
|
55
|
+
# gem 'debugger'
|
data/dummy/Guardfile
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
guard :test do
|
5
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "test/#{m[1]}_test.rb" }
|
6
|
+
watch(%r{^test/.+_test\.rb$})
|
7
|
+
watch('test/test_helper.rb') { "test" }
|
8
|
+
watch(%r{/test\/unit\/(.+)_test.rb/})
|
9
|
+
watch('../lib/dailycred/acts_as_dailycred.rb') { "test/unit/user_test.rb"}
|
10
|
+
Dir[File.expand_path('../../lib/dailycred/*.rb', __FILE__)].each do |f|
|
11
|
+
watch(f) {"test/unit/user_test.rb"}
|
12
|
+
end
|
13
|
+
|
14
|
+
# Rails example
|
15
|
+
watch(%r{^app/models/(.+)\.rb$}) { |m| "test/unit/#{m[1]}_test.rb" }
|
16
|
+
watch(%r{^app/controllers/(.+)\.rb$}) { |m| "test/functional/#{m[1]}_test.rb" }
|
17
|
+
watch(%r{^app/views/.+\.rb$}) { "test/integration" }
|
18
|
+
watch('app/controllers/application_controller.rb') { ["test/functional", "test/integration"] }
|
19
|
+
end
|
20
|
+
|
21
|
+
guard 'spork', :cucumber_env => { 'RAILS_ENV' => 'test' }, :rspec_env => { 'RAILS_ENV' => 'test' } do
|
22
|
+
watch('config/application.rb')
|
23
|
+
watch('config/environment.rb')
|
24
|
+
watch('config/environments/test.rb')
|
25
|
+
watch(%r{^config/initializers/.+\.rb$})
|
26
|
+
watch('Gemfile')
|
27
|
+
watch('Gemfile.lock')
|
28
|
+
watch('spec/spec_helper.rb') { :rspec }
|
29
|
+
watch('test/test_helper.rb') { :test_unit }
|
30
|
+
watch(%r{features/support/}) { :cucumber }
|
31
|
+
end
|