dailycred 0.1.2 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. data/.gitignore +4 -0
  2. data/Gemfile +14 -2
  3. data/Guardfile +15 -0
  4. data/README.md +159 -33
  5. data/Rakefile +30 -0
  6. data/app/controllers/sessions_controller.rb +31 -0
  7. data/app/views/sessions/info.html.erb +13 -0
  8. data/config/routes.rb +7 -0
  9. data/dailycred.gemspec +4 -3
  10. data/docs/lib/dailycred/acts_as_dailycred.html +42 -0
  11. data/docs/lib/dailycred/client.html +214 -0
  12. data/docs/lib/dailycred/engine.html +112 -0
  13. data/docs/lib/dailycred/helper.html +125 -0
  14. data/docs/lib/dailycred/middleware.html +42 -0
  15. data/docs/lib/dailycred/tests_helper.html +42 -0
  16. data/docs/lib/dailycred/user.html +133 -0
  17. data/docs/lib/dailycred.html +42 -0
  18. data/docs/lib/generators/dailycred_generator.html +42 -0
  19. data/docs/lib/generators/templates/migration_create_user.html +39 -0
  20. data/docs/lib/generators/templates/omniauth.html +71 -0
  21. data/docs/lib/generators/templates/sessions_controller.html +96 -0
  22. data/docs/lib/generators/templates/user.html +42 -0
  23. data/docs/lib/middleware/middleware.html +38 -0
  24. data/docs/lib/omniauth/strategies/dailycred.html +199 -0
  25. data/docs/lib/omniauth-dailycred/version.html +38 -0
  26. data/docs/lib/user/user.html +129 -0
  27. data/dummy/.gitignore +15 -0
  28. data/dummy/Gemfile +55 -0
  29. data/dummy/Guardfile +31 -0
  30. data/dummy/README.rdoc +261 -0
  31. data/dummy/Rakefile +7 -0
  32. data/dummy/app/assets/images/rails.png +0 -0
  33. data/dummy/app/assets/javascripts/application.js +15 -0
  34. data/dummy/app/assets/javascripts/posts.js.coffee +3 -0
  35. data/dummy/app/assets/stylesheets/application.css +13 -0
  36. data/dummy/app/assets/stylesheets/posts.css.scss +3 -0
  37. data/dummy/app/assets/stylesheets/scaffolds.css.scss +69 -0
  38. data/dummy/app/controllers/application_controller.rb +16 -0
  39. data/dummy/app/controllers/posts_controller.rb +85 -0
  40. data/dummy/app/helpers/application_helper.rb +2 -0
  41. data/dummy/app/helpers/posts_helper.rb +2 -0
  42. data/dummy/app/mailers/.gitkeep +0 -0
  43. data/dummy/app/models/.gitkeep +0 -0
  44. data/dummy/app/models/post.rb +3 -0
  45. data/dummy/app/models/user.rb +3 -0
  46. data/dummy/app/views/layouts/application.html.erb +14 -0
  47. data/dummy/app/views/posts/_form.html.erb +21 -0
  48. data/dummy/app/views/posts/edit.html.erb +6 -0
  49. data/dummy/app/views/posts/index.html.erb +23 -0
  50. data/dummy/app/views/posts/new.html.erb +5 -0
  51. data/dummy/app/views/posts/show.html.erb +10 -0
  52. data/dummy/config/application.rb +62 -0
  53. data/dummy/config/boot.rb +6 -0
  54. data/dummy/config/database.yml +25 -0
  55. data/dummy/config/environment.rb +5 -0
  56. data/dummy/config/environments/development.rb +37 -0
  57. data/dummy/config/environments/production.rb +67 -0
  58. data/dummy/config/environments/test.rb +37 -0
  59. data/dummy/config/initializers/backtrace_silencers.rb +7 -0
  60. data/dummy/config/initializers/inflections.rb +15 -0
  61. data/dummy/config/initializers/mime_types.rb +5 -0
  62. data/dummy/config/initializers/omniauth.rb +13 -0
  63. data/dummy/config/initializers/secret_token.rb +7 -0
  64. data/dummy/config/initializers/session_store.rb +8 -0
  65. data/dummy/config/initializers/wrap_parameters.rb +14 -0
  66. data/dummy/config/locales/en.yml +5 -0
  67. data/dummy/config/routes.rb +61 -0
  68. data/dummy/config.ru +4 -0
  69. data/dummy/db/migrate/20120925172903_create_users.rb +68 -0
  70. data/dummy/db/migrate/20120926012555_create_posts.rb +9 -0
  71. data/dummy/db/migrate/20121002192037_update_users_2.rb +70 -0
  72. data/dummy/db/schema.rb +45 -0
  73. data/dummy/db/seeds.rb +7 -0
  74. data/dummy/lib/assets/.gitkeep +0 -0
  75. data/dummy/lib/tasks/.gitkeep +0 -0
  76. data/dummy/log/.gitkeep +0 -0
  77. data/dummy/public/404.html +26 -0
  78. data/dummy/public/422.html +26 -0
  79. data/dummy/public/500.html +25 -0
  80. data/dummy/public/favicon.ico +0 -0
  81. data/dummy/public/index.html +241 -0
  82. data/dummy/public/robots.txt +5 -0
  83. data/dummy/script/rails +6 -0
  84. data/dummy/test/fixtures/.gitkeep +0 -0
  85. data/dummy/test/fixtures/posts.yml +7 -0
  86. data/dummy/test/fixtures/users.yml +3 -0
  87. data/dummy/test/functional/.gitkeep +0 -0
  88. data/dummy/test/functional/posts_controller_test.rb +51 -0
  89. data/dummy/test/integration/.gitkeep +0 -0
  90. data/dummy/test/performance/browsing_test.rb +12 -0
  91. data/dummy/test/test_helper.rb +62 -0
  92. data/dummy/test/unit/.gitkeep +0 -0
  93. data/dummy/test/unit/helpers/posts_helper_test.rb +4 -0
  94. data/dummy/test/unit/post_test.rb +7 -0
  95. data/dummy/test/unit/user_test.rb +77 -0
  96. data/dummy/vendor/assets/javascripts/.gitkeep +0 -0
  97. data/dummy/vendor/assets/stylesheets/.gitkeep +0 -0
  98. data/dummy/vendor/plugins/.gitkeep +0 -0
  99. data/lib/dailycred/acts_as_dailycred.rb +87 -0
  100. data/lib/dailycred/client.rb +105 -0
  101. data/lib/dailycred/engine.rb +52 -0
  102. data/lib/dailycred/helper.rb +60 -0
  103. data/lib/{middleware → dailycred}/middleware.rb +25 -15
  104. data/lib/dailycred/tests_helper.rb +5 -0
  105. data/lib/dailycred/user.rb +63 -0
  106. data/lib/dailycred.rb +1 -79
  107. data/lib/generators/dailycred_generator.rb +94 -44
  108. data/lib/generators/templates/info.html.erb +1 -1
  109. data/lib/generators/templates/login.html.erb +13 -0
  110. data/lib/generators/templates/migration_create_user.rb +60 -10
  111. data/lib/generators/templates/omniauth.rb +6 -17
  112. data/lib/generators/templates/sessions_controller.rb +8 -2
  113. data/lib/generators/templates/user.rb +1 -23
  114. data/lib/omniauth/strategies/dailycred.rb +37 -20
  115. data/script/download_info.rb +11 -0
  116. data/spec/{spec_helper.rb → helper_spec.rb} +4 -2
  117. data/spec/omniauth/strategies/dailycred_spec.rb +52 -10
  118. data/spec/support/dailycred_spec.rb +72 -0
  119. data/spec/support/shared_examples.rb +40 -0
  120. data/test/generator_test.rb +85 -0
  121. data/test/test_helper.rb +6 -0
  122. metadata +116 -8
  123. 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 &hellip;
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">&#182;</a>
44
+ </div>
45
+
46
+ </td>
47
+ <td class=code>
48
+ <div class='highlight'><pre><span class="nb">require</span> <span class="s1">&#39;omniauth-oauth2&#39;</span>
49
+ <span class="nb">require</span> <span class="s1">&#39;faraday&#39;</span>
50
+ <span class="nb">require</span> <span class="s1">&#39;net/https&#39;</span>
51
+ <span class="nb">require</span> <span class="s1">&#39;json&#39;</span>
52
+ <span class="nb">require</span> <span class="s1">&#39;pp&#39;</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">&#182;</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">&lt;</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">&#182;</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">=&gt;</span> <span class="s2">&quot;https://www.dailycred.com&quot;</span><span class="p">,</span>
78
+ <span class="ss">:authorize_url</span> <span class="o">=&gt;</span> <span class="s1">&#39;/oauth/authorize&#39;</span><span class="p">,</span>
79
+ <span class="ss">:token_url</span> <span class="o">=&gt;</span> <span class="s1">&#39;/oauth/access_token&#39;</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">&#182;</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">&quot;email&quot;</span><span class="p">,</span> <span class="s2">&quot;username&quot;</span><span class="p">,</span> <span class="s2">&quot;created&quot;</span><span class="p">,</span> <span class="s2">&quot;verified&quot;</span><span class="p">,</span> <span class="s2">&quot;admin&quot;</span><span class="p">,</span> <span class="s2">&quot;referred_by&quot;</span><span class="p">,</span> <span class="s2">&quot;tags&quot;</span><span class="p">,</span> <span class="s2">&quot;referred&quot;</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">&#182;</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">&quot;action&quot;</span><span class="p">,</span><span class="s2">&quot;identity_provider&quot;</span><span class="p">,</span><span class="s2">&quot;referrer&quot;</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">&#39;id&#39;</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">&#182;</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">&#39;omniauth.state&#39;</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">&#39;omniauth.params&#39;</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">&amp;&amp;</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">=&gt;</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">&#182;</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">=&gt;</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">&quot;/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">&quot;</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">&#182;</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">&#39;token&#39;</span> <span class="o">=&gt;</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">&#39;provider&#39;</span><span class="o">]</span> <span class="o">=</span> <span class="s1">&#39;dailycred&#39;</span>
170
+ <span class="vi">@duser</span><span class="o">[</span><span class="s1">&#39;uid&#39;</span><span class="o">]</span> <span class="o">=</span> <span class="n">json</span><span class="o">[</span><span class="s1">&#39;id&#39;</span><span class="o">]</span> <span class="o">||</span> <span class="n">json</span><span class="o">[</span><span class="s1">&#39;user_id&#39;</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">&quot;identities&quot;</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">&quot;access_tokens&quot;</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">&quot;identities&quot;</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">&#182;</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 &hellip;
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 &hellip;
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">&#182;</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">&#182;</a>
69
+ </div>
70
+ <p>it didn&rsquo;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">=&gt;</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">=&gt;</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">&#182;</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">&quot;worked&quot;</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">&quot;errors&quot;</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">&quot;attribute&quot;</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">&quot;message&quot;</span><span class="o">]</span>
109
+ <span class="k">if</span> <span class="n">attrib</span> <span class="o">==</span> <span class="s2">&quot;form&quot;</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">&quot;user&quot;</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