dailycred 0.1.25 → 0.1.26
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +2 -2
- data/dailycred.gemspec +1 -1
- data/docs/lib/dailycred.html +212 -0
- data/docs/lib/generators/dailycred_generator.html +38 -0
- data/docs/lib/generators/templates/migration_create_user.html +38 -0
- data/docs/lib/generators/templates/omniauth.html +38 -0
- data/docs/lib/generators/templates/sessions_controller.html +91 -0
- data/docs/lib/generators/templates/user.html +38 -0
- data/docs/lib/middleware/middleware.html +38 -0
- data/docs/lib/omniauth/strategies/dailycred.html +194 -0
- data/docs/lib/omniauth-dailycred/version.html +38 -0
- data/docs/lib/user/user.html +129 -0
- data/lib/dailycred.rb +22 -7
- data/lib/generators/dailycred_generator.rb +10 -10
- data/lib/omniauth/strategies/dailycred.rb +4 -3
- data/spec/helper_spec.rb +2 -2
- data/spec/omniauth/strategies/dailycred_spec.rb +3 -1
- data/spec/support/dailycred_spec.rb +19 -6
- metadata +12 -2
data/Rakefile
CHANGED
@@ -7,7 +7,7 @@ task :default => :spec
|
|
7
7
|
|
8
8
|
desc "Run specs"
|
9
9
|
RSpec::Core::RakeTask.new do |t|
|
10
|
-
t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default.
|
10
|
+
# t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default.
|
11
11
|
# Put spec opts in a file named .rspec in root
|
12
12
|
end
|
13
13
|
|
@@ -15,7 +15,7 @@ begin
|
|
15
15
|
require 'rocco/tasks'
|
16
16
|
require 'fileutils'
|
17
17
|
Rocco::make 'docs/'
|
18
|
-
FileUtils.cp_r "docs/lib/", "/Users/hank/rails/dailycred/public/docs/ruby/"
|
18
|
+
FileUtils.cp_r "docs/lib/", "/Users/hank/rails/dailycred/public/docs/ruby/", :verbose => true
|
19
19
|
rescue LoadError
|
20
20
|
warn "#$! -- rocco tasks not loaded."
|
21
21
|
task :rocco
|
data/dailycred.gemspec
CHANGED
@@ -0,0 +1,212 @@
|
|
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="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/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>dailycred.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="nb">require</span> <span class="s2">"omniauth-dailycred/version"</span>
|
45
|
+
<span class="nb">require</span> <span class="s2">"omniauth/strategies/dailycred"</span>
|
46
|
+
<span class="nb">require</span> <span class="s2">"middleware/middleware"</span>
|
47
|
+
|
48
|
+
<span class="k">class</span> <span class="nc">Dailycred</span>
|
49
|
+
|
50
|
+
<span class="kp">attr_accessor</span> <span class="ss">:client_id</span><span class="p">,</span> <span class="ss">:secret_key</span><span class="p">,</span> <span class="ss">:options</span><span class="p">,</span> <span class="ss">:url</span>
|
51
|
+
|
52
|
+
<span class="no">URL</span> <span class="o">=</span> <span class="s2">"https://www.dailycred.com"</span>
|
53
|
+
|
54
|
+
<span class="no">ROUTES</span> <span class="o">=</span> <span class="p">{</span>
|
55
|
+
<span class="ss">:signup</span> <span class="o">=></span> <span class="s2">"/user/api/signup.json"</span><span class="p">,</span>
|
56
|
+
<span class="ss">:login</span> <span class="o">=></span> <span class="s2">"/user/api/signin.json"</span>
|
57
|
+
<span class="p">}</span></pre></div>
|
58
|
+
</td>
|
59
|
+
</tr>
|
60
|
+
<tr id='section-2'>
|
61
|
+
<td class=docs>
|
62
|
+
<div class="pilwrap">
|
63
|
+
<a class="pilcrow" href="#section-2">¶</a>
|
64
|
+
</div>
|
65
|
+
<p>Initializes a dailycred object</p>
|
66
|
+
|
67
|
+
<ul>
|
68
|
+
<li>@param [String] client_id the client’s daiycred client id</li>
|
69
|
+
<li>@param [String] secret_key the clients secret key</li>
|
70
|
+
<li>@param [Hash] opts a hash of options</li>
|
71
|
+
</ul>
|
72
|
+
</td>
|
73
|
+
<td class=code>
|
74
|
+
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">initialize</span><span class="p">(</span><span class="n">client_id</span><span class="p">,</span> <span class="n">secret_key</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">opts</span><span class="o">=</span><span class="p">{})</span>
|
75
|
+
<span class="vi">@client_id</span> <span class="o">=</span> <span class="n">client_id</span>
|
76
|
+
<span class="vi">@secret_key</span> <span class="o">=</span> <span class="n">secret_key</span>
|
77
|
+
<span class="vi">@options</span> <span class="o">=</span> <span class="n">opts</span>
|
78
|
+
<span class="n">opts</span><span class="o">[</span><span class="ss">:client_options</span><span class="o">]</span> <span class="o">||=</span> <span class="p">{}</span>
|
79
|
+
<span class="vi">@url</span> <span class="o">=</span> <span class="n">opts</span><span class="o">[</span><span class="ss">:client_options</span><span class="o">][</span><span class="ss">:site</span><span class="o">]</span> <span class="o">||</span> <span class="no">Dailycred</span><span class="o">::</span><span class="no">URL</span>
|
80
|
+
<span class="k">end</span></pre></div>
|
81
|
+
</td>
|
82
|
+
</tr>
|
83
|
+
<tr id='section-3'>
|
84
|
+
<td class=docs>
|
85
|
+
<div class="pilwrap">
|
86
|
+
<a class="pilcrow" href="#section-3">¶</a>
|
87
|
+
</div>
|
88
|
+
<p>Generates a Dailycred event</p>
|
89
|
+
|
90
|
+
<ul>
|
91
|
+
<li>@param [String] user_id the user’s dailycred user id</li>
|
92
|
+
<li>@param [String] key the name of the event type</li>
|
93
|
+
<li>@param [String] val the value of the event (optional)</li>
|
94
|
+
</ul>
|
95
|
+
</td>
|
96
|
+
<td class=code>
|
97
|
+
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">event</span><span class="p">(</span><span class="n">user_id</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span>
|
98
|
+
<span class="n">opts</span> <span class="o">=</span> <span class="p">{</span>
|
99
|
+
<span class="ss">:key</span> <span class="o">=></span> <span class="n">key</span><span class="p">,</span>
|
100
|
+
<span class="ss">:valuestring</span> <span class="o">=></span> <span class="n">val</span><span class="p">,</span>
|
101
|
+
<span class="ss">:user_id</span> <span class="o">=></span> <span class="n">user_id</span>
|
102
|
+
<span class="p">}</span>
|
103
|
+
<span class="n">post</span> <span class="s2">"/admin/api/customevent.json"</span><span class="p">,</span> <span class="n">opts</span>
|
104
|
+
<span class="k">end</span></pre></div>
|
105
|
+
</td>
|
106
|
+
</tr>
|
107
|
+
<tr id='section-4'>
|
108
|
+
<td class=docs>
|
109
|
+
<div class="pilwrap">
|
110
|
+
<a class="pilcrow" href="#section-4">¶</a>
|
111
|
+
</div>
|
112
|
+
<p>Tag a user in dailycred</p>
|
113
|
+
|
114
|
+
<ul>
|
115
|
+
<li>@param [String] user_id the user’s dailycred user id</li>
|
116
|
+
<li>@param [String] tag the desired tag to add</li>
|
117
|
+
</ul>
|
118
|
+
</td>
|
119
|
+
<td class=code>
|
120
|
+
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">tag</span><span class="p">(</span><span class="n">user_id</span><span class="p">,</span> <span class="n">tag</span><span class="p">)</span>
|
121
|
+
<span class="n">opts</span> <span class="o">=</span> <span class="p">{</span>
|
122
|
+
<span class="ss">:user_id</span> <span class="o">=></span> <span class="n">user_id</span><span class="p">,</span>
|
123
|
+
<span class="ss">:tag</span> <span class="o">=></span> <span class="n">tag</span>
|
124
|
+
<span class="p">}</span>
|
125
|
+
<span class="n">post</span> <span class="s2">"/admin/api/user/tag.json"</span><span class="p">,</span> <span class="n">opts</span>
|
126
|
+
<span class="k">end</span></pre></div>
|
127
|
+
</td>
|
128
|
+
</tr>
|
129
|
+
<tr id='section-5'>
|
130
|
+
<td class=docs>
|
131
|
+
<div class="pilwrap">
|
132
|
+
<a class="pilcrow" href="#section-5">¶</a>
|
133
|
+
</div>
|
134
|
+
<p>Untag a user in dailycred
|
135
|
+
(see #tag)</p>
|
136
|
+
</td>
|
137
|
+
<td class=code>
|
138
|
+
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">untag</span><span class="p">(</span><span class="n">user_id</span><span class="p">,</span> <span class="n">tag</span><span class="p">)</span>
|
139
|
+
<span class="n">opts</span> <span class="o">=</span> <span class="p">{</span>
|
140
|
+
<span class="ss">:user_id</span> <span class="o">=></span> <span class="n">user_id</span><span class="p">,</span>
|
141
|
+
<span class="ss">:tag</span> <span class="o">=></span> <span class="n">tag</span>
|
142
|
+
<span class="p">}</span>
|
143
|
+
<span class="n">post</span> <span class="s2">"/admin/api/user/untag.json"</span><span class="p">,</span> <span class="n">opts</span>
|
144
|
+
<span class="k">end</span></pre></div>
|
145
|
+
</td>
|
146
|
+
</tr>
|
147
|
+
<tr id='section-6'>
|
148
|
+
<td class=docs>
|
149
|
+
<div class="pilwrap">
|
150
|
+
<a class="pilcrow" href="#section-6">¶</a>
|
151
|
+
</div>
|
152
|
+
<p>Send a reset password email</p>
|
153
|
+
|
154
|
+
<ul>
|
155
|
+
<li>@param [string] user the user’s email or username</li>
|
156
|
+
</ul>
|
157
|
+
</td>
|
158
|
+
<td class=code>
|
159
|
+
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">passReset</span><span class="p">(</span><span class="n">user</span><span class="p">)</span>
|
160
|
+
<span class="n">opts</span> <span class="o">=</span> <span class="p">{</span>
|
161
|
+
<span class="ss">:user</span> <span class="o">=></span> <span class="n">user</span>
|
162
|
+
<span class="p">}</span>
|
163
|
+
<span class="n">post</span> <span class="s2">"/password/api/reset"</span><span class="p">,</span> <span class="n">opts</span>
|
164
|
+
<span class="k">end</span></pre></div>
|
165
|
+
</td>
|
166
|
+
</tr>
|
167
|
+
<tr id='section-7'>
|
168
|
+
<td class=docs>
|
169
|
+
<div class="pilwrap">
|
170
|
+
<a class="pilcrow" href="#section-7">¶</a>
|
171
|
+
</div>
|
172
|
+
<p>A wildcard for making any post requests to dailycred.
|
173
|
+
client<em>id and client</em>secret are automatically added to the request</p>
|
174
|
+
|
175
|
+
<ul>
|
176
|
+
<li>@param [string] url</li>
|
177
|
+
<li>@param [hash] opts</li>
|
178
|
+
<li>@param [boolean] secure whether the client_secret should be passed. Defaults to true</li>
|
179
|
+
</ul>
|
180
|
+
|
181
|
+
</td>
|
182
|
+
<td class=code>
|
183
|
+
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">post</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">opts</span><span class="p">,</span> <span class="n">secure</span><span class="o">=</span><span class="kp">true</span><span class="p">)</span>
|
184
|
+
<span class="n">opts</span><span class="o">.</span><span class="n">merge!</span> <span class="n">base_opts</span><span class="p">(</span><span class="n">secure</span><span class="p">)</span>
|
185
|
+
<span class="n">response</span> <span class="o">=</span> <span class="n">get_conn</span><span class="o">.</span><span class="n">post</span> <span class="n">url</span><span class="p">,</span> <span class="n">opts</span>
|
186
|
+
<span class="k">end</span>
|
187
|
+
|
188
|
+
<span class="kp">private</span>
|
189
|
+
|
190
|
+
<span class="k">def</span> <span class="nf">ssl_opts</span>
|
191
|
+
<span class="n">opts</span> <span class="o">=</span> <span class="p">{}</span>
|
192
|
+
<span class="k">if</span> <span class="vi">@options</span><span class="o">[</span><span class="ss">:client_options</span><span class="o">]</span> <span class="o">&&</span> <span class="vi">@options</span><span class="o">[</span><span class="ss">:client_options</span><span class="o">][</span><span class="ss">:ssl</span><span class="o">]</span>
|
193
|
+
<span class="n">opts</span><span class="o">[</span><span class="ss">:ssl</span><span class="o">]</span> <span class="o">=</span> <span class="vi">@options</span><span class="o">[</span><span class="ss">:client_options</span><span class="o">][</span><span class="ss">:ssl</span><span class="o">]</span>
|
194
|
+
<span class="k">end</span>
|
195
|
+
<span class="n">opts</span>
|
196
|
+
<span class="k">end</span>
|
197
|
+
|
198
|
+
<span class="k">def</span> <span class="nf">base_opts</span> <span class="n">secure</span><span class="o">=</span><span class="kp">true</span>
|
199
|
+
<span class="n">opts</span> <span class="o">=</span> <span class="p">{</span><span class="ss">:client_id</span> <span class="o">=></span> <span class="vi">@client_id</span><span class="p">}</span>
|
200
|
+
<span class="n">opts</span><span class="o">[</span><span class="ss">:client_secret</span><span class="o">]</span> <span class="o">=</span> <span class="vi">@secret_key</span> <span class="k">if</span> <span class="n">secure</span>
|
201
|
+
<span class="n">opts</span>
|
202
|
+
<span class="k">end</span>
|
203
|
+
|
204
|
+
<span class="k">def</span> <span class="nf">get_conn</span>
|
205
|
+
<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="vi">@url</span><span class="p">,</span> <span class="n">ssl_opts</span>
|
206
|
+
<span class="k">end</span>
|
207
|
+
<span class="k">end</span></pre></div>
|
208
|
+
</td>
|
209
|
+
</tr>
|
210
|
+
</table>
|
211
|
+
</div>
|
212
|
+
</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>dailycred_generator.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_generator.html">dailycred_generator.rb</a>
|
17
|
+
<a class="source" href="templates/migration_create_user.html">migration_create_user.rb</a>
|
18
|
+
<a class="source" href="templates/omniauth.html">omniauth.rb</a>
|
19
|
+
<a class="source" href="templates/sessions_controller.html">sessions_controller.rb</a>
|
20
|
+
<a class="source" href="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/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>dailycred_generator.rb</h1></th>
|
32
|
+
<th class=code></th>
|
33
|
+
</tr>
|
34
|
+
</thead>
|
35
|
+
<tbody>
|
36
|
+
</table>
|
37
|
+
</div>
|
38
|
+
</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>migration_create_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="../dailycred_generator.html">dailycred_generator.rb</a>
|
17
|
+
<a class="source" href="migration_create_user.html">migration_create_user.rb</a>
|
18
|
+
<a class="source" href="omniauth.html">omniauth.rb</a>
|
19
|
+
<a class="source" href="sessions_controller.html">sessions_controller.rb</a>
|
20
|
+
<a class="source" href="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/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>migration_create_user.rb</h1></th>
|
32
|
+
<th class=code></th>
|
33
|
+
</tr>
|
34
|
+
</thead>
|
35
|
+
<tbody>
|
36
|
+
</table>
|
37
|
+
</div>
|
38
|
+
</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>omniauth.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_generator.html">dailycred_generator.rb</a>
|
17
|
+
<a class="source" href="migration_create_user.html">migration_create_user.rb</a>
|
18
|
+
<a class="source" href="omniauth.html">omniauth.rb</a>
|
19
|
+
<a class="source" href="sessions_controller.html">sessions_controller.rb</a>
|
20
|
+
<a class="source" href="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/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>omniauth.rb</h1></th>
|
32
|
+
<th class=code></th>
|
33
|
+
</tr>
|
34
|
+
</thead>
|
35
|
+
<tbody>
|
36
|
+
</table>
|
37
|
+
</div>
|
38
|
+
</body>
|
@@ -0,0 +1,91 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
5
|
+
<title>sessions_controller.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_generator.html">dailycred_generator.rb</a>
|
17
|
+
<a class="source" href="migration_create_user.html">migration_create_user.rb</a>
|
18
|
+
<a class="source" href="omniauth.html">omniauth.rb</a>
|
19
|
+
<a class="source" href="sessions_controller.html">sessions_controller.rb</a>
|
20
|
+
<a class="source" href="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/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>sessions_controller.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">SessionsController</span> <span class="o"><</span> <span class="no">ApplicationController</span>
|
45
|
+
<span class="n">before_filter</span> <span class="ss">:authenticate</span><span class="p">,</span> <span class="ss">:only</span> <span class="o">=></span> <span class="o">[</span><span class="ss">:destroy</span><span class="o">]</span>
|
46
|
+
<span class="n">before_filter</span> <span class="ss">:current_user</span></pre></div>
|
47
|
+
</td>
|
48
|
+
</tr>
|
49
|
+
<tr id='section-2'>
|
50
|
+
<td class=docs>
|
51
|
+
<div class="pilwrap">
|
52
|
+
<a class="pilcrow" href="#section-2">¶</a>
|
53
|
+
</div>
|
54
|
+
<p>Callback Route for OAuth flow</p>
|
55
|
+
</td>
|
56
|
+
<td class=code>
|
57
|
+
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">create</span>
|
58
|
+
<span class="vi">@user</span> <span class="o">=</span> <span class="no">User</span><span class="o">.</span><span class="n">find_or_create_with_omniauth</span> <span class="n">auth_hash</span>
|
59
|
+
<span class="n">session</span><span class="o">[</span><span class="ss">:user_id</span><span class="o">]</span> <span class="o">=</span> <span class="vi">@user</span><span class="o">.</span><span class="n">id</span>
|
60
|
+
<span class="n">redirect_to</span> <span class="s2">"/auth"</span>
|
61
|
+
<span class="k">end</span></pre></div>
|
62
|
+
</td>
|
63
|
+
</tr>
|
64
|
+
<tr id='section-3'>
|
65
|
+
<td class=docs>
|
66
|
+
<div class="pilwrap">
|
67
|
+
<a class="pilcrow" href="#section-3">¶</a>
|
68
|
+
</div>
|
69
|
+
<p>GET /logout</p>
|
70
|
+
|
71
|
+
</td>
|
72
|
+
<td class=code>
|
73
|
+
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">destroy</span>
|
74
|
+
<span class="n">session</span><span class="o">[</span><span class="ss">:user_id</span><span class="o">]</span> <span class="o">=</span> <span class="kp">nil</span>
|
75
|
+
<span class="n">redirect_to</span> <span class="n">auth_path</span>
|
76
|
+
<span class="k">end</span>
|
77
|
+
|
78
|
+
<span class="k">def</span> <span class="nf">info</span>
|
79
|
+
<span class="k">end</span>
|
80
|
+
|
81
|
+
<span class="kp">private</span>
|
82
|
+
|
83
|
+
<span class="k">def</span> <span class="nf">auth_hash</span>
|
84
|
+
<span class="n">request</span><span class="o">.</span><span class="n">env</span><span class="o">[</span><span class="s1">'omniauth.auth'</span><span class="o">]</span>
|
85
|
+
<span class="k">end</span>
|
86
|
+
<span class="k">end</span></pre></div>
|
87
|
+
</td>
|
88
|
+
</tr>
|
89
|
+
</table>
|
90
|
+
</div>
|
91
|
+
</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>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="../dailycred_generator.html">dailycred_generator.rb</a>
|
17
|
+
<a class="source" href="migration_create_user.html">migration_create_user.rb</a>
|
18
|
+
<a class="source" href="omniauth.html">omniauth.rb</a>
|
19
|
+
<a class="source" href="sessions_controller.html">sessions_controller.rb</a>
|
20
|
+
<a class="source" href="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/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
|
+
</table>
|
37
|
+
</div>
|
38
|
+
</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>middleware.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.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/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>middleware.rb</h1></th>
|
32
|
+
<th class=code></th>
|
33
|
+
</tr>
|
34
|
+
</thead>
|
35
|
+
<tbody>
|
36
|
+
</table>
|
37
|
+
</div>
|
38
|
+
</body>
|
@@ -0,0 +1,194 @@
|
|
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="../../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="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>dailycred.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="nb">require</span> <span class="s1">'omniauth-oauth2'</span>
|
45
|
+
<span class="nb">require</span> <span class="s1">'faraday'</span>
|
46
|
+
<span class="nb">require</span> <span class="s1">'net/https'</span>
|
47
|
+
<span class="nb">require</span> <span class="s1">'json'</span>
|
48
|
+
<span class="nb">require</span> <span class="s1">'pp'</span></pre></div>
|
49
|
+
</td>
|
50
|
+
</tr>
|
51
|
+
<tr id='section-The_Dailycred_Omniauth_Strategy'>
|
52
|
+
<td class=docs>
|
53
|
+
<div class="pilwrap">
|
54
|
+
<a class="pilcrow" href="#section-The_Dailycred_Omniauth_Strategy">¶</a>
|
55
|
+
</div>
|
56
|
+
<h1>The Dailycred Omniauth Strategy</h1>
|
57
|
+
</td>
|
58
|
+
<td class=code>
|
59
|
+
<div class='highlight'><pre><span class="k">module</span> <span class="nn">OmniAuth</span>
|
60
|
+
<span class="k">module</span> <span class="nn">Strategies</span>
|
61
|
+
<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>
|
62
|
+
</td>
|
63
|
+
</tr>
|
64
|
+
<tr id='section-3'>
|
65
|
+
<td class=docs>
|
66
|
+
<div class="pilwrap">
|
67
|
+
<a class="pilcrow" href="#section-3">¶</a>
|
68
|
+
</div>
|
69
|
+
<p>default options</p>
|
70
|
+
</td>
|
71
|
+
<td class=code>
|
72
|
+
<div class='highlight'><pre> <span class="n">option</span> <span class="ss">:client_options</span><span class="p">,</span> <span class="p">{</span>
|
73
|
+
<span class="ss">:site</span> <span class="o">=></span> <span class="s2">"https://www.dailycred.com"</span><span class="p">,</span>
|
74
|
+
<span class="ss">:authorize_url</span> <span class="o">=></span> <span class="s1">'/connect'</span><span class="p">,</span>
|
75
|
+
<span class="ss">:token_url</span> <span class="o">=></span> <span class="s1">'/oauth/access_token'</span>
|
76
|
+
<span class="p">}</span></pre></div>
|
77
|
+
</td>
|
78
|
+
</tr>
|
79
|
+
<tr id='section-4'>
|
80
|
+
<td class=docs>
|
81
|
+
<div class="pilwrap">
|
82
|
+
<a class="pilcrow" href="#section-4">¶</a>
|
83
|
+
</div>
|
84
|
+
<p>parameters to expect and return from dailycred responses</p>
|
85
|
+
</td>
|
86
|
+
<td class=code>
|
87
|
+
<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>
|
88
|
+
</td>
|
89
|
+
</tr>
|
90
|
+
<tr id='section-5'>
|
91
|
+
<td class=docs>
|
92
|
+
<div class="pilwrap">
|
93
|
+
<a class="pilcrow" href="#section-5">¶</a>
|
94
|
+
</div>
|
95
|
+
<p>allows parameters to be passed through</p>
|
96
|
+
</td>
|
97
|
+
<td class=code>
|
98
|
+
<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>
|
99
|
+
|
100
|
+
<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>
|
101
|
+
|
102
|
+
<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>
|
103
|
+
|
104
|
+
<span class="n">info</span> <span class="k">do</span>
|
105
|
+
<span class="n">user</span>
|
106
|
+
<span class="k">end</span>
|
107
|
+
|
108
|
+
<span class="k">alias</span> <span class="ss">:old_request_phase</span> <span class="ss">:request_phase</span>
|
109
|
+
|
110
|
+
|
111
|
+
<span class="k">def</span> <span class="nf">authorize_params</span>
|
112
|
+
<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>
|
113
|
+
<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>
|
114
|
+
<span class="k">end</span>
|
115
|
+
<span class="k">end</span></pre></div>
|
116
|
+
</td>
|
117
|
+
</tr>
|
118
|
+
<tr id='section-6'>
|
119
|
+
<td class=docs>
|
120
|
+
<div class="pilwrap">
|
121
|
+
<a class="pilcrow" href="#section-6">¶</a>
|
122
|
+
</div>
|
123
|
+
<p>this step allows auth_params to be added to the url</p>
|
124
|
+
</td>
|
125
|
+
<td class=code>
|
126
|
+
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">request_phase</span>
|
127
|
+
<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>
|
128
|
+
<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>
|
129
|
+
<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>
|
130
|
+
<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>
|
131
|
+
<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>
|
132
|
+
<span class="k">end</span>
|
133
|
+
<span class="k">end</span>
|
134
|
+
<span class="n">old_request_phase</span>
|
135
|
+
<span class="k">end</span>
|
136
|
+
|
137
|
+
<span class="kp">private</span></pre></div>
|
138
|
+
</td>
|
139
|
+
</tr>
|
140
|
+
<tr id='section-7'>
|
141
|
+
<td class=docs>
|
142
|
+
<div class="pilwrap">
|
143
|
+
<a class="pilcrow" href="#section-7">¶</a>
|
144
|
+
</div>
|
145
|
+
<p>This is the phase where the gem calls me.json, which returns information about the user</p>
|
146
|
+
</td>
|
147
|
+
<td class=code>
|
148
|
+
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">user</span>
|
149
|
+
<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>
|
150
|
+
<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="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>
|
151
|
+
<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>
|
152
|
+
<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>
|
153
|
+
</td>
|
154
|
+
</tr>
|
155
|
+
<tr id='section-8'>
|
156
|
+
<td class=docs>
|
157
|
+
<div class="pilwrap">
|
158
|
+
<a class="pilcrow" href="#section-8">¶</a>
|
159
|
+
</div>
|
160
|
+
<p>pp json</p>
|
161
|
+
</td>
|
162
|
+
<td class=code>
|
163
|
+
<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>
|
164
|
+
<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>
|
165
|
+
<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>
|
166
|
+
<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>
|
167
|
+
<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>
|
168
|
+
<span class="k">end</span>
|
169
|
+
<span class="k">if</span> <span class="o">!</span><span class="n">json</span><span class="o">[</span><span class="s2">"FACEBOOK"</span><span class="o">].</span><span class="n">nil?</span>
|
170
|
+
<span class="vi">@duser</span><span class="o">[</span><span class="s1">'facebook'</span><span class="o">]</span> <span class="o">=</span> <span class="n">json</span><span class="o">[</span><span class="s2">"FACEBOOK"</span><span class="o">][</span><span class="s2">"members"</span><span class="o">]</span>
|
171
|
+
<span class="vi">@duser</span><span class="o">[</span><span class="s1">'facebook'</span><span class="o">][</span><span class="s1">'access_token'</span><span class="o">]</span> <span class="o">=</span> <span class="n">json</span><span class="o">[</span><span class="s2">"FACEBOOK"</span><span class="o">][</span><span class="s1">'access_token'</span><span class="o">]</span>
|
172
|
+
<span class="k">end</span></pre></div>
|
173
|
+
</td>
|
174
|
+
</tr>
|
175
|
+
<tr id='section-9'>
|
176
|
+
<td class=docs>
|
177
|
+
<div class="pilwrap">
|
178
|
+
<a class="pilcrow" href="#section-9">¶</a>
|
179
|
+
</div>
|
180
|
+
<p>pp @duser</p>
|
181
|
+
|
182
|
+
</td>
|
183
|
+
<td class=code>
|
184
|
+
<div class='highlight'><pre> <span class="vi">@duser</span>
|
185
|
+
<span class="k">end</span>
|
186
|
+
|
187
|
+
<span class="k">end</span>
|
188
|
+
<span class="k">end</span>
|
189
|
+
<span class="k">end</span></pre></div>
|
190
|
+
</td>
|
191
|
+
</tr>
|
192
|
+
</table>
|
193
|
+
</div>
|
194
|
+
</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/lib/dailycred.rb
CHANGED
@@ -62,8 +62,24 @@ class Dailycred
|
|
62
62
|
post "/admin/api/user/untag.json", opts
|
63
63
|
end
|
64
64
|
|
65
|
-
|
66
|
-
|
65
|
+
# Send a reset password email
|
66
|
+
#
|
67
|
+
# - @param [string] user the user's email or username
|
68
|
+
def passReset(user)
|
69
|
+
opts = {
|
70
|
+
:user => user
|
71
|
+
}
|
72
|
+
post "/password/api/reset", opts
|
73
|
+
end
|
74
|
+
|
75
|
+
# A wildcard for making any post requests to dailycred.
|
76
|
+
# client_id and client_secret are automatically added to the request
|
77
|
+
#
|
78
|
+
# - @param [string] url
|
79
|
+
# - @param [hash] opts
|
80
|
+
# - @param [boolean] secure whether the client_secret should be passed. Defaults to true
|
81
|
+
def post(url, opts, secure=true)
|
82
|
+
opts.merge! base_opts(secure)
|
67
83
|
response = get_conn.post url, opts
|
68
84
|
end
|
69
85
|
|
@@ -77,11 +93,10 @@ class Dailycred
|
|
77
93
|
opts
|
78
94
|
end
|
79
95
|
|
80
|
-
def base_opts
|
81
|
-
{
|
82
|
-
|
83
|
-
|
84
|
-
}
|
96
|
+
def base_opts secure=true
|
97
|
+
opts = {:client_id => @client_id}
|
98
|
+
opts[:client_secret] = @secret_key if secure
|
99
|
+
opts
|
85
100
|
end
|
86
101
|
|
87
102
|
def get_conn
|
@@ -10,6 +10,7 @@ class DailycredGenerator < Rails::Generators::Base
|
|
10
10
|
match '/auth/:provider/callback' => 'sessions#create'
|
11
11
|
match "/logout" => "sessions#destroy", :as => :logout
|
12
12
|
match "/auth" => "sessions#info", :as => :auth
|
13
|
+
match "/auth/dailycred"
|
13
14
|
EOS
|
14
15
|
|
15
16
|
APP_CONTROLLER_LINES =<<-EOS
|
@@ -33,16 +34,6 @@ class DailycredGenerator < Rails::Generators::Base
|
|
33
34
|
redirect_to auth_path unless current_user
|
34
35
|
end
|
35
36
|
|
36
|
-
# link to sign up
|
37
|
-
def signup_path
|
38
|
-
"/auth/dailycred"
|
39
|
-
end
|
40
|
-
|
41
|
-
# link to login
|
42
|
-
def login_path
|
43
|
-
"/auth/dailycred?action=signin"
|
44
|
-
end
|
45
|
-
|
46
37
|
# helper method for getting an instance of dailycred
|
47
38
|
# example:
|
48
39
|
# dailycred.tagUser "user_id", "tag"
|
@@ -54,6 +45,13 @@ class DailycredGenerator < Rails::Generators::Base
|
|
54
45
|
end
|
55
46
|
EOS
|
56
47
|
|
48
|
+
APP_HELPER_LINES = <<-EOS
|
49
|
+
def connect_path(provider)
|
50
|
+
url = "/auth/dailycred?identity_provider=#{provider.to_s}"
|
51
|
+
url += "&referrer=#{request.protocol}#{request.host_with_port}#{request.fullpath}"
|
52
|
+
end
|
53
|
+
EOS
|
54
|
+
|
57
55
|
def install
|
58
56
|
dailycred_ascii =<<-EOS
|
59
57
|
*****
|
@@ -75,6 +73,8 @@ class DailycredGenerator < Rails::Generators::Base
|
|
75
73
|
copy_file "sessions_controller.rb", "app/controllers/sessions_controller.rb"
|
76
74
|
# application controller
|
77
75
|
inject_into_class "app/controllers/application_controller.rb", ApplicationController, APP_CONTROLLER_LINES
|
76
|
+
# application helper
|
77
|
+
inject_into_class "app/helpers/application_helper.rb", ApplicationController, APP_HELPER_LINES
|
78
78
|
# add user_model
|
79
79
|
copy_file "user.rb", "app/models/user.rb"
|
80
80
|
# session_controller
|
@@ -20,7 +20,7 @@ module OmniAuth
|
|
20
20
|
ATTRIBUTES = ["email", "username", "created", "verified", "admin", "referred_by", "tags", "referred"]
|
21
21
|
|
22
22
|
# allows parameters to be passed through
|
23
|
-
AUTH_PARAMS = ["action"]
|
23
|
+
AUTH_PARAMS = ["action","identity_provider","referrer"]
|
24
24
|
|
25
25
|
option :authorize_options, OmniAuth::Strategies::Dailycred::AUTH_PARAMS
|
26
26
|
|
@@ -59,7 +59,7 @@ module OmniAuth
|
|
59
59
|
connection = Faraday::Connection.new options.client_options[:site], options.client_options[:ssl]
|
60
60
|
response = connection.get("/graph/me.json?access_token=#{access_token.token}")
|
61
61
|
json = JSON.parse(response.body)
|
62
|
-
pp json
|
62
|
+
# pp json
|
63
63
|
@duser = {'token' => access_token.token}
|
64
64
|
@duser['provider'] = 'dailycred'
|
65
65
|
@duser['uid'] = json['id'] || json['user_id']
|
@@ -68,8 +68,9 @@ module OmniAuth
|
|
68
68
|
end
|
69
69
|
if !json["FACEBOOK"].nil?
|
70
70
|
@duser['facebook'] = json["FACEBOOK"]["members"]
|
71
|
+
@duser['facebook']['access_token'] = json["FACEBOOK"]['access_token']
|
71
72
|
end
|
72
|
-
pp @duser
|
73
|
+
# pp @duser
|
73
74
|
|
74
75
|
@duser
|
75
76
|
end
|
data/spec/helper_spec.rb
CHANGED
@@ -35,24 +35,37 @@ describe Dailycred do
|
|
35
35
|
end
|
36
36
|
|
37
37
|
it "tags a user" do
|
38
|
-
|
39
|
-
json = JSON.parse response.body
|
38
|
+
json = json_response @dc.tag(@user_id, "loser")
|
40
39
|
json["worked"].should == true
|
41
40
|
user = json["user"]
|
42
41
|
# user["tags"].should include('loser') #will work in next push
|
43
42
|
end
|
44
43
|
|
45
44
|
it "untags a user" do
|
46
|
-
|
47
|
-
json = JSON.parse response.body
|
45
|
+
json = json_response @dc.untag(@user_id, "loser")
|
48
46
|
json["worked"].should == true
|
49
47
|
user = json["user"]
|
50
48
|
# user["tags"].should == nil #will work in next push
|
51
49
|
end
|
52
50
|
|
53
51
|
it "fires an event" do
|
54
|
-
|
55
|
-
json = JSON.parse response.body
|
52
|
+
json = json_response @dc.event(@user_id, "became a loser")
|
56
53
|
json["worked"].should == true
|
57
54
|
end
|
55
|
+
|
56
|
+
it "resets a password" do
|
57
|
+
json = json_response @dc.passReset("useruseruseruser@gmail.com")
|
58
|
+
json["worked"].should == true
|
59
|
+
end
|
60
|
+
|
61
|
+
# it "changes a password" do
|
62
|
+
# json = json_response @dc.changePass("0c19c355-2a71-4c8e-805e-f7a6087ea84c", "wrongPass", "newPass")
|
63
|
+
# json["worked"].should == false
|
64
|
+
# json["message"].should != nil
|
65
|
+
# end
|
66
|
+
|
67
|
+
|
68
|
+
def json_response response
|
69
|
+
JSON.parse response.body
|
70
|
+
end
|
58
71
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dailycred
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.26
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: omniauth
|
@@ -56,6 +56,16 @@ files:
|
|
56
56
|
- README.md
|
57
57
|
- Rakefile
|
58
58
|
- dailycred.gemspec
|
59
|
+
- docs/lib/dailycred.html
|
60
|
+
- docs/lib/generators/dailycred_generator.html
|
61
|
+
- docs/lib/generators/templates/migration_create_user.html
|
62
|
+
- docs/lib/generators/templates/omniauth.html
|
63
|
+
- docs/lib/generators/templates/sessions_controller.html
|
64
|
+
- docs/lib/generators/templates/user.html
|
65
|
+
- docs/lib/middleware/middleware.html
|
66
|
+
- docs/lib/omniauth-dailycred/version.html
|
67
|
+
- docs/lib/omniauth/strategies/dailycred.html
|
68
|
+
- docs/lib/user/user.html
|
59
69
|
- lib/dailycred.rb
|
60
70
|
- lib/generators/USAGE
|
61
71
|
- lib/generators/dailycred_generator.rb
|