openstax_accounts 1.0.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +89 -58
- data/app/controllers/openstax/accounts/application_controller.rb +3 -12
- data/app/controllers/openstax/accounts/dev/accounts_controller.rb +19 -0
- data/app/controllers/openstax/accounts/dev/base_controller.rb +2 -8
- data/app/controllers/openstax/accounts/sessions_controller.rb +31 -19
- data/app/handlers/openstax/accounts/dev/{users_index.rb → accounts_index.rb} +4 -4
- data/app/handlers/openstax/accounts/sessions_callback.rb +43 -0
- data/app/models/openstax/accounts/{user.rb → account.rb} +7 -22
- data/app/models/openstax/accounts/anonymous_account.rb +24 -0
- data/app/models/openstax/accounts/application_account.rb +7 -0
- data/app/representers/openstax/accounts/api/v1/{user_representer.rb → account_representer.rb} +1 -1
- data/app/representers/openstax/accounts/api/v1/{user_search_representer.rb → account_search_representer.rb} +7 -6
- data/app/representers/openstax/accounts/api/v1/{application_user_representer.rb → application_account_representer.rb} +5 -4
- data/app/representers/openstax/accounts/api/v1/application_account_search_representer.rb +20 -0
- data/app/representers/openstax/accounts/api/v1/{application_users_representer.rb → application_accounts_representer.rb} +3 -3
- data/app/routines/openstax/accounts/dev/{search_users.rb → search_accounts.rb} +5 -5
- data/app/routines/openstax/accounts/{search_users.rb → search_accounts.rb} +55 -46
- data/app/routines/openstax/accounts/sync_accounts.rb +47 -0
- data/app/views/openstax/accounts/dev/{users → accounts}/_search_results.html.erb +13 -13
- data/app/views/openstax/accounts/dev/{users/login.html.erb → accounts/index.html.erb} +3 -3
- data/app/views/openstax/accounts/dev/{users → accounts}/index.js.erb +1 -1
- data/app/views/openstax/accounts/shared/{users → accounts}/_index.html.erb +4 -1
- data/config/initializers/action_interceptor.rb +14 -0
- data/config/routes.rb +18 -15
- data/db/migrate/0_create_openstax_accounts_accounts.rb +22 -0
- data/lib/generators/openstax/accounts/schedule/USAGE +1 -1
- data/lib/generators/openstax/accounts/schedule/templates/schedule.rb +1 -1
- data/lib/openstax/accounts/current_user_manager.rb +74 -65
- data/lib/openstax/accounts/default_account_user_mapper.rb +15 -0
- data/lib/openstax/accounts/engine.rb +2 -0
- data/lib/openstax/accounts/extend_builtins.rb +37 -0
- data/lib/openstax/accounts/version.rb +1 -1
- data/lib/openstax_accounts.rb +46 -25
- data/spec/controllers/openstax/accounts/dev/accounts_controller_spec.rb +21 -0
- data/spec/controllers/openstax/accounts/sessions_controller_spec.rb +12 -9
- data/spec/dummy/app/controllers/api/application_users_controller.rb +0 -4
- data/spec/dummy/app/controllers/api/users_controller.rb +7 -0
- data/spec/dummy/app/models/anonymous_user.rb +48 -0
- data/spec/dummy/app/models/user.rb +26 -0
- data/spec/dummy/config/initializers/openstax_accounts.rb +3 -2
- data/spec/dummy/config/routes.rb +5 -3
- data/spec/dummy/db/migrate/1_create_users.rb +11 -0
- data/spec/dummy/db/schema.rb +18 -6
- data/spec/factories/openstax_accounts_account.rb +6 -0
- data/spec/lib/openstax/accounts/current_user_manager_spec.rb +151 -0
- data/spec/lib/openstax_accounts_spec.rb +16 -9
- data/spec/models/openstax/accounts/account_spec.rb +9 -0
- data/spec/models/openstax/accounts/anonymous_account_spec.rb +9 -0
- data/spec/routines/openstax/accounts/{search_users_spec.rb → search_accounts_spec.rb} +38 -38
- metadata +87 -50
- data/app/controllers/openstax/accounts/dev/users_controller.rb +0 -22
- data/app/handlers/openstax/accounts/sessions_omniauth_authenticated.rb +0 -48
- data/app/models/openstax/accounts/application_user.rb +0 -7
- data/app/representers/openstax/accounts/api/v1/application_user_search_representer.rb +0 -19
- data/app/routines/openstax/accounts/dev/create_user.rb +0 -37
- data/app/routines/openstax/accounts/sync_users.rb +0 -44
- data/config/initializers/extend_builtins.rb +0 -42
- data/db/migrate/0_create_openstax_accounts_users.rb +0 -18
- data/lib/openstax/accounts/action_list.rb +0 -42
- data/lib/openstax/accounts/route_helper.rb +0 -34
- data/lib/openstax/accounts/user_provider.rb +0 -15
- data/spec/controllers/openstax/accounts/dev/users_controller_spec.rb +0 -21
- data/spec/factories/openstax_accounts_user.rb +0 -6
- data/spec/models/openstax/accounts/user_spec.rb +0 -13
- data/spec/routines/openstax/accounts/dev/create_user_spec.rb +0 -26
@@ -3,77 +3,77 @@ require 'spec_helper'
|
|
3
3
|
module OpenStax
|
4
4
|
module Accounts
|
5
5
|
|
6
|
-
describe
|
6
|
+
describe SearchAccounts do
|
7
7
|
|
8
|
-
let!(:
|
8
|
+
let!(:account_1) { FactoryGirl.create :openstax_accounts_account,
|
9
9
|
first_name: 'John',
|
10
10
|
last_name: 'Stravinsky',
|
11
11
|
username: 'jstrav' }
|
12
|
-
let!(:
|
12
|
+
let!(:account_2) { FactoryGirl.create :openstax_accounts_account,
|
13
13
|
first_name: 'Mary',
|
14
14
|
last_name: 'Mighty',
|
15
15
|
full_name: 'Mary Mighty',
|
16
16
|
username: 'mary' }
|
17
|
-
let!(:
|
17
|
+
let!(:account_3) { FactoryGirl.create :openstax_accounts_account,
|
18
18
|
first_name: 'John',
|
19
19
|
last_name: 'Stead',
|
20
20
|
username: 'jstead' }
|
21
21
|
|
22
|
-
let!(:
|
22
|
+
let!(:account_4) { FactoryGirl.create :openstax_accounts_account,
|
23
23
|
first_name: 'Bob',
|
24
24
|
last_name: 'JST',
|
25
25
|
username: 'bigbear' }
|
26
26
|
|
27
27
|
it "should match based on username" do
|
28
|
-
outcome =
|
29
|
-
expect(outcome).to eq [
|
28
|
+
outcome = SearchAccounts.call('username:jstra').outputs.accounts.all
|
29
|
+
expect(outcome).to eq [account_1]
|
30
30
|
end
|
31
31
|
|
32
32
|
it "should ignore leading wildcards on username searches" do
|
33
|
-
outcome =
|
33
|
+
outcome = SearchAccounts.call('username:%rav').outputs.accounts.all
|
34
34
|
expect(outcome).to eq []
|
35
35
|
end
|
36
36
|
|
37
37
|
it "should match based on one first name" do
|
38
|
-
outcome =
|
39
|
-
expect(outcome).to eq [
|
38
|
+
outcome = SearchAccounts.call('first_name:"John"').outputs.accounts.all
|
39
|
+
expect(outcome).to eq [account_3, account_1]
|
40
40
|
end
|
41
41
|
|
42
42
|
it "should match based on one full name" do
|
43
|
-
outcome =
|
44
|
-
expect(outcome).to eq [
|
43
|
+
outcome = SearchAccounts.call('full_name:"Mary Mighty"').outputs.accounts.all
|
44
|
+
expect(outcome).to eq [account_2]
|
45
45
|
end
|
46
46
|
|
47
47
|
it "should return all results if the query is empty" do
|
48
|
-
outcome =
|
49
|
-
expect(outcome).to eq [
|
48
|
+
outcome = SearchAccounts.call("").outputs.accounts.all
|
49
|
+
expect(outcome).to eq [account_4, account_3, account_1, account_2]
|
50
50
|
end
|
51
51
|
|
52
52
|
it "should match any field when no prefix given" do
|
53
|
-
outcome =
|
54
|
-
expect(outcome).to eq [
|
53
|
+
outcome = SearchAccounts.call("jst").outputs.accounts.all
|
54
|
+
expect(outcome).to eq [account_4, account_3, account_1]
|
55
55
|
end
|
56
56
|
|
57
57
|
it "should match any field when no prefix given and intersect when prefix given" do
|
58
|
-
outcome =
|
59
|
-
expect(outcome).to eq [
|
58
|
+
outcome = SearchAccounts.call("jst username:jst").outputs.accounts.all
|
59
|
+
expect(outcome).to eq [account_3, account_1]
|
60
60
|
end
|
61
61
|
|
62
|
-
it "shouldn't allow
|
63
|
-
outcome =
|
62
|
+
it "shouldn't allow accounts to add their own wildcards" do
|
63
|
+
outcome = SearchAccounts.call("username:'%ar'").outputs.accounts.all
|
64
64
|
expect(outcome).to eq []
|
65
65
|
end
|
66
66
|
|
67
67
|
it "should gather space-separated unprefixed search terms" do
|
68
|
-
outcome =
|
69
|
-
expect(outcome).to eq [
|
68
|
+
outcome = SearchAccounts.call("john mighty").outputs.accounts.all
|
69
|
+
expect(outcome).to eq [account_3, account_1, account_2]
|
70
70
|
end
|
71
71
|
|
72
72
|
context "pagination and sorting" do
|
73
73
|
|
74
|
-
let!(:
|
74
|
+
let!(:billy_accounts) {
|
75
75
|
(0..45).to_a.collect{|ii|
|
76
|
-
FactoryGirl.create :
|
76
|
+
FactoryGirl.create :openstax_accounts_account,
|
77
77
|
first_name: "Billy#{ii.to_s.rjust(2, '0')}",
|
78
78
|
last_name: "Bob_#{(45-ii).to_s.rjust(2,'0')}",
|
79
79
|
username: "billy_#{ii.to_s.rjust(2, '0')}"
|
@@ -81,27 +81,27 @@ module OpenStax
|
|
81
81
|
}
|
82
82
|
|
83
83
|
it "should return the first page of values by default in default order" do
|
84
|
-
outcome =
|
84
|
+
outcome = SearchAccounts.call("username:billy").outputs.accounts.all
|
85
85
|
expect(outcome.length).to eq 20
|
86
|
-
expect(outcome[0]).to eq
|
87
|
-
expect(outcome[19]).to eq
|
86
|
+
expect(outcome[0]).to eq Account.where{username.eq "billy_00"}.first
|
87
|
+
expect(outcome[19]).to eq Account.where{username.eq "billy_19"}.first
|
88
88
|
end
|
89
89
|
|
90
90
|
it "should return the 2nd page when requested" do
|
91
|
-
outcome =
|
91
|
+
outcome = SearchAccounts.call("username:billy", page: 1).outputs.accounts.all
|
92
92
|
expect(outcome.length).to eq 20
|
93
|
-
expect(outcome[0]).to eq
|
94
|
-
expect(outcome[19]).to eq
|
93
|
+
expect(outcome[0]).to eq Account.where{username.eq "billy_20"}.first
|
94
|
+
expect(outcome[19]).to eq Account.where{username.eq "billy_39"}.first
|
95
95
|
end
|
96
96
|
|
97
97
|
it "should return the incomplete 3rd page when requested" do
|
98
|
-
outcome =
|
98
|
+
outcome = SearchAccounts.call("username:billy", page: 2).outputs.accounts.all
|
99
99
|
expect(outcome.length).to eq 6
|
100
|
-
expect(outcome[5]).to eq
|
100
|
+
expect(outcome[5]).to eq Account.where{username.eq "billy_45"}.first
|
101
101
|
end
|
102
102
|
|
103
103
|
it "should return no results if the limit is exceeded" do
|
104
|
-
outcome =
|
104
|
+
outcome = SearchAccounts.call("").outputs.accounts.all
|
105
105
|
expect(outcome).to be_empty
|
106
106
|
end
|
107
107
|
|
@@ -109,15 +109,15 @@ module OpenStax
|
|
109
109
|
|
110
110
|
context "sorting" do
|
111
111
|
|
112
|
-
let!(:bob_brown) { FactoryGirl.create :
|
113
|
-
let!(:bob_jones) { FactoryGirl.create :
|
114
|
-
let!(:tim_jones) { FactoryGirl.create :
|
112
|
+
let!(:bob_brown) { FactoryGirl.create :openstax_accounts_account, first_name: "Bob", last_name: "Brown", username: "foo_bb" }
|
113
|
+
let!(:bob_jones) { FactoryGirl.create :openstax_accounts_account, first_name: "Bob", last_name: "Jones", username: "foo_bj" }
|
114
|
+
let!(:tim_jones) { FactoryGirl.create :openstax_accounts_account, first_name: "Tim", last_name: "Jones", username: "foo_tj" }
|
115
115
|
|
116
116
|
it "should allow sort by multiple fields in different directions" do
|
117
|
-
outcome =
|
117
|
+
outcome = SearchAccounts.call("username:foo", order_by: "first_name, last_name DESC").outputs.accounts.all
|
118
118
|
expect(outcome).to eq [bob_jones, bob_brown, tim_jones]
|
119
119
|
|
120
|
-
outcome =
|
120
|
+
outcome = SearchAccounts.call("username:foo", order_by: "first_name, last_name ASC").outputs.accounts.all
|
121
121
|
expect(outcome).to eq [bob_brown, bob_jones, tim_jones]
|
122
122
|
end
|
123
123
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openstax_accounts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JP Slavinsky
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -16,14 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ! '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '3.
|
19
|
+
version: '3.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.1'
|
20
34
|
type: :runtime
|
21
35
|
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
38
|
- - ! '>='
|
25
39
|
- !ruby/object:Gem::Version
|
26
|
-
version: '3.
|
40
|
+
version: '3.1'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: omniauth
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,14 +114,14 @@ dependencies:
|
|
100
114
|
requirements:
|
101
115
|
- - ! '>='
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
117
|
+
version: 2.1.1
|
104
118
|
type: :runtime
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
122
|
- - ! '>='
|
109
123
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
124
|
+
version: 2.1.1
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: sass-rails
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,34 +150,48 @@ dependencies:
|
|
136
150
|
- - ! '>='
|
137
151
|
- !ruby/object:Gem::Version
|
138
152
|
version: '1.0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: keyword_search
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ! '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 1.0.0
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ! '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 1.0.0
|
139
167
|
- !ruby/object:Gem::Dependency
|
140
168
|
name: openstax_utilities
|
141
169
|
requirement: !ruby/object:Gem::Requirement
|
142
170
|
requirements:
|
143
171
|
- - ! '>='
|
144
172
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
173
|
+
version: 2.2.3
|
146
174
|
type: :runtime
|
147
175
|
prerelease: false
|
148
176
|
version_requirements: !ruby/object:Gem::Requirement
|
149
177
|
requirements:
|
150
178
|
- - ! '>='
|
151
179
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
180
|
+
version: 2.2.3
|
153
181
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
182
|
+
name: action_interceptor
|
155
183
|
requirement: !ruby/object:Gem::Requirement
|
156
184
|
requirements:
|
157
185
|
- - ! '>='
|
158
186
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
187
|
+
version: '0.1'
|
160
188
|
type: :runtime
|
161
189
|
prerelease: false
|
162
190
|
version_requirements: !ruby/object:Gem::Requirement
|
163
191
|
requirements:
|
164
192
|
- - ! '>='
|
165
193
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
194
|
+
version: '0.1'
|
167
195
|
- !ruby/object:Gem::Dependency
|
168
196
|
name: sqlite3
|
169
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -182,16 +210,16 @@ dependencies:
|
|
182
210
|
name: rspec-rails
|
183
211
|
requirement: !ruby/object:Gem::Requirement
|
184
212
|
requirements:
|
185
|
-
- -
|
213
|
+
- - <
|
186
214
|
- !ruby/object:Gem::Version
|
187
|
-
version: '0'
|
215
|
+
version: '3.0'
|
188
216
|
type: :development
|
189
217
|
prerelease: false
|
190
218
|
version_requirements: !ruby/object:Gem::Requirement
|
191
219
|
requirements:
|
192
|
-
- -
|
220
|
+
- - <
|
193
221
|
- !ruby/object:Gem::Version
|
194
|
-
version: '0'
|
222
|
+
version: '3.0'
|
195
223
|
- !ruby/object:Gem::Dependency
|
196
224
|
name: capybara
|
197
225
|
requirement: !ruby/object:Gem::Requirement
|
@@ -248,7 +276,7 @@ dependencies:
|
|
248
276
|
- - ! '>='
|
249
277
|
- !ruby/object:Gem::Version
|
250
278
|
version: '0'
|
251
|
-
description: Rails common code and bindings and for 'accounts' API
|
279
|
+
description: Rails common code and bindings and for the 'accounts' API
|
252
280
|
email:
|
253
281
|
- jps@kindlinglabs.com
|
254
282
|
executables: []
|
@@ -262,44 +290,43 @@ files:
|
|
262
290
|
- app/assets/stylesheets/openstax/accounts/application.css
|
263
291
|
- app/assets/stylesheets/openstax/accounts/dev.css.scss
|
264
292
|
- app/controllers/openstax/accounts/application_controller.rb
|
293
|
+
- app/controllers/openstax/accounts/dev/accounts_controller.rb
|
265
294
|
- app/controllers/openstax/accounts/dev/base_controller.rb
|
266
|
-
- app/controllers/openstax/accounts/dev/users_controller.rb
|
267
295
|
- app/controllers/openstax/accounts/sessions_controller.rb
|
268
|
-
- app/handlers/openstax/accounts/dev/
|
269
|
-
- app/handlers/openstax/accounts/
|
296
|
+
- app/handlers/openstax/accounts/dev/accounts_index.rb
|
297
|
+
- app/handlers/openstax/accounts/sessions_callback.rb
|
270
298
|
- app/helpers/openstax/accounts/application_helper.rb
|
271
|
-
- app/models/openstax/accounts/
|
272
|
-
- app/models/openstax/accounts/
|
273
|
-
- app/
|
274
|
-
- app/representers/openstax/accounts/api/v1/
|
275
|
-
- app/representers/openstax/accounts/api/v1/
|
276
|
-
- app/representers/openstax/accounts/api/v1/
|
277
|
-
- app/representers/openstax/accounts/api/v1/
|
278
|
-
- app/
|
279
|
-
- app/routines/openstax/accounts/dev/
|
280
|
-
- app/routines/openstax/accounts/
|
281
|
-
- app/routines/openstax/accounts/
|
299
|
+
- app/models/openstax/accounts/account.rb
|
300
|
+
- app/models/openstax/accounts/anonymous_account.rb
|
301
|
+
- app/models/openstax/accounts/application_account.rb
|
302
|
+
- app/representers/openstax/accounts/api/v1/account_representer.rb
|
303
|
+
- app/representers/openstax/accounts/api/v1/account_search_representer.rb
|
304
|
+
- app/representers/openstax/accounts/api/v1/application_account_representer.rb
|
305
|
+
- app/representers/openstax/accounts/api/v1/application_account_search_representer.rb
|
306
|
+
- app/representers/openstax/accounts/api/v1/application_accounts_representer.rb
|
307
|
+
- app/routines/openstax/accounts/dev/search_accounts.rb
|
308
|
+
- app/routines/openstax/accounts/search_accounts.rb
|
309
|
+
- app/routines/openstax/accounts/sync_accounts.rb
|
282
310
|
- app/views/layouts/openstax/accounts/application.html.erb
|
283
|
-
- app/views/openstax/accounts/dev/
|
284
|
-
- app/views/openstax/accounts/dev/
|
285
|
-
- app/views/openstax/accounts/dev/
|
311
|
+
- app/views/openstax/accounts/dev/accounts/_search_results.html.erb
|
312
|
+
- app/views/openstax/accounts/dev/accounts/index.html.erb
|
313
|
+
- app/views/openstax/accounts/dev/accounts/index.js.erb
|
286
314
|
- app/views/openstax/accounts/shared/_attention.html.erb
|
287
|
-
- app/views/openstax/accounts/shared/
|
288
|
-
- config/initializers/
|
315
|
+
- app/views/openstax/accounts/shared/accounts/_index.html.erb
|
316
|
+
- config/initializers/action_interceptor.rb
|
289
317
|
- config/routes.rb
|
290
|
-
- db/migrate/
|
318
|
+
- db/migrate/0_create_openstax_accounts_accounts.rb
|
291
319
|
- lib/generators/openstax/accounts/schedule/USAGE
|
292
320
|
- lib/generators/openstax/accounts/schedule/schedule_generator.rb
|
293
321
|
- lib/generators/openstax/accounts/schedule/templates/schedule.rb
|
294
322
|
- lib/omniauth/strategies/openstax.rb
|
295
|
-
- lib/openstax/accounts/action_list.rb
|
296
323
|
- lib/openstax/accounts/current_user_manager.rb
|
324
|
+
- lib/openstax/accounts/default_account_user_mapper.rb
|
297
325
|
- lib/openstax/accounts/engine.rb
|
298
|
-
- lib/openstax/accounts/
|
299
|
-
- lib/openstax/accounts/user_provider.rb
|
326
|
+
- lib/openstax/accounts/extend_builtins.rb
|
300
327
|
- lib/openstax/accounts/version.rb
|
301
328
|
- lib/openstax_accounts.rb
|
302
|
-
- spec/controllers/openstax/accounts/dev/
|
329
|
+
- spec/controllers/openstax/accounts/dev/accounts_controller_spec.rb
|
303
330
|
- spec/controllers/openstax/accounts/sessions_controller_spec.rb
|
304
331
|
- spec/dummy/README.md
|
305
332
|
- spec/dummy/Rakefile
|
@@ -307,9 +334,12 @@ files:
|
|
307
334
|
- spec/dummy/app/assets/stylesheets/application.css
|
308
335
|
- spec/dummy/app/controllers/api/application_users_controller.rb
|
309
336
|
- spec/dummy/app/controllers/api/dummy_controller.rb
|
337
|
+
- spec/dummy/app/controllers/api/users_controller.rb
|
310
338
|
- spec/dummy/app/controllers/application_controller.rb
|
311
339
|
- spec/dummy/app/controllers/oauth_controller.rb
|
312
340
|
- spec/dummy/app/helpers/application_helper.rb
|
341
|
+
- spec/dummy/app/models/anonymous_user.rb
|
342
|
+
- spec/dummy/app/models/user.rb
|
313
343
|
- spec/dummy/config.ru
|
314
344
|
- spec/dummy/config/application.rb
|
315
345
|
- spec/dummy/config/boot.rb
|
@@ -327,17 +357,19 @@ files:
|
|
327
357
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
328
358
|
- spec/dummy/config/locales/en.yml
|
329
359
|
- spec/dummy/config/routes.rb
|
360
|
+
- spec/dummy/db/migrate/1_create_users.rb
|
330
361
|
- spec/dummy/db/schema.rb
|
331
362
|
- spec/dummy/public/404.html
|
332
363
|
- spec/dummy/public/422.html
|
333
364
|
- spec/dummy/public/500.html
|
334
365
|
- spec/dummy/public/favicon.ico
|
335
366
|
- spec/dummy/script/rails
|
336
|
-
- spec/factories/
|
367
|
+
- spec/factories/openstax_accounts_account.rb
|
368
|
+
- spec/lib/openstax/accounts/current_user_manager_spec.rb
|
337
369
|
- spec/lib/openstax_accounts_spec.rb
|
338
|
-
- spec/models/openstax/accounts/
|
339
|
-
- spec/
|
340
|
-
- spec/routines/openstax/accounts/
|
370
|
+
- spec/models/openstax/accounts/account_spec.rb
|
371
|
+
- spec/models/openstax/accounts/anonymous_account_spec.rb
|
372
|
+
- spec/routines/openstax/accounts/search_accounts_spec.rb
|
341
373
|
- spec/spec_helper.rb
|
342
374
|
homepage: http://github.com/openstax/accounts-rails
|
343
375
|
licenses: []
|
@@ -361,17 +393,20 @@ rubyforge_project:
|
|
361
393
|
rubygems_version: 2.2.2
|
362
394
|
signing_key:
|
363
395
|
specification_version: 4
|
364
|
-
summary: Rails common code and bindings and for 'accounts' API
|
396
|
+
summary: Rails common code and bindings and for the 'accounts' API
|
365
397
|
test_files:
|
366
|
-
- spec/controllers/openstax/accounts/dev/
|
398
|
+
- spec/controllers/openstax/accounts/dev/accounts_controller_spec.rb
|
367
399
|
- spec/controllers/openstax/accounts/sessions_controller_spec.rb
|
368
400
|
- spec/dummy/app/assets/javascripts/application.js
|
369
401
|
- spec/dummy/app/assets/stylesheets/application.css
|
370
402
|
- spec/dummy/app/controllers/api/application_users_controller.rb
|
371
403
|
- spec/dummy/app/controllers/api/dummy_controller.rb
|
404
|
+
- spec/dummy/app/controllers/api/users_controller.rb
|
372
405
|
- spec/dummy/app/controllers/application_controller.rb
|
373
406
|
- spec/dummy/app/controllers/oauth_controller.rb
|
374
407
|
- spec/dummy/app/helpers/application_helper.rb
|
408
|
+
- spec/dummy/app/models/anonymous_user.rb
|
409
|
+
- spec/dummy/app/models/user.rb
|
375
410
|
- spec/dummy/config/application.rb
|
376
411
|
- spec/dummy/config/boot.rb
|
377
412
|
- spec/dummy/config/database.yml
|
@@ -389,6 +424,7 @@ test_files:
|
|
389
424
|
- spec/dummy/config/locales/en.yml
|
390
425
|
- spec/dummy/config/routes.rb
|
391
426
|
- spec/dummy/config.ru
|
427
|
+
- spec/dummy/db/migrate/1_create_users.rb
|
392
428
|
- spec/dummy/db/schema.rb
|
393
429
|
- spec/dummy/public/404.html
|
394
430
|
- spec/dummy/public/422.html
|
@@ -397,9 +433,10 @@ test_files:
|
|
397
433
|
- spec/dummy/Rakefile
|
398
434
|
- spec/dummy/README.md
|
399
435
|
- spec/dummy/script/rails
|
400
|
-
- spec/factories/
|
436
|
+
- spec/factories/openstax_accounts_account.rb
|
437
|
+
- spec/lib/openstax/accounts/current_user_manager_spec.rb
|
401
438
|
- spec/lib/openstax_accounts_spec.rb
|
402
|
-
- spec/models/openstax/accounts/
|
403
|
-
- spec/
|
404
|
-
- spec/routines/openstax/accounts/
|
439
|
+
- spec/models/openstax/accounts/account_spec.rb
|
440
|
+
- spec/models/openstax/accounts/anonymous_account_spec.rb
|
441
|
+
- spec/routines/openstax/accounts/search_accounts_spec.rb
|
405
442
|
- spec/spec_helper.rb
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module OpenStax
|
2
|
-
module Accounts
|
3
|
-
module Dev
|
4
|
-
class UsersController < OpenStax::Accounts::Dev::BaseController
|
5
|
-
|
6
|
-
def index
|
7
|
-
handle_with(UsersIndex,
|
8
|
-
complete: lambda { render 'index' })
|
9
|
-
end
|
10
|
-
|
11
|
-
def login; end
|
12
|
-
|
13
|
-
def become
|
14
|
-
@user = User.find(params[:id])
|
15
|
-
sign_in(@user)
|
16
|
-
redirect_to return_url
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
module OpenStax
|
2
|
-
module Accounts
|
3
|
-
|
4
|
-
class SessionsOmniauthAuthenticated
|
5
|
-
|
6
|
-
lev_handler
|
7
|
-
|
8
|
-
protected
|
9
|
-
|
10
|
-
def setup
|
11
|
-
@auth_data = request.env['omniauth.auth']
|
12
|
-
end
|
13
|
-
|
14
|
-
def authorized?
|
15
|
-
@auth_data.provider == "openstax"
|
16
|
-
end
|
17
|
-
|
18
|
-
def handle
|
19
|
-
outputs[:accounts_user_to_sign_in] = user_to_sign_in
|
20
|
-
end
|
21
|
-
|
22
|
-
def user_to_sign_in
|
23
|
-
return caller if
|
24
|
-
!caller.nil? &&
|
25
|
-
!caller.is_anonymous? &&
|
26
|
-
caller.openstax_uid == @auth_data.uid
|
27
|
-
|
28
|
-
existing_user = User.where(openstax_uid: @auth_data.uid).first
|
29
|
-
return existing_user if !existing_user.nil?
|
30
|
-
|
31
|
-
new_user = User.create do |user|
|
32
|
-
user.openstax_uid = @auth_data.uid
|
33
|
-
user.username = @auth_data.info.nickname
|
34
|
-
user.first_name = @auth_data.info.first_name
|
35
|
-
user.last_name = @auth_data.info.last_name
|
36
|
-
user.full_name = @auth_data.info.name
|
37
|
-
user.title = @auth_data.info.title
|
38
|
-
user.access_token = @auth_data.credentials.token
|
39
|
-
end
|
40
|
-
|
41
|
-
transfer_errors_from(new_user, {type: :verbatim})
|
42
|
-
|
43
|
-
new_user
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module OpenStax
|
2
|
-
module Accounts
|
3
|
-
module Api
|
4
|
-
module V1
|
5
|
-
class ApplicationUserSearchRepresenter < UserSearchRepresenter
|
6
|
-
|
7
|
-
collection :application_users,
|
8
|
-
class: OpenStax::Accounts::ApplicationUser,
|
9
|
-
decorator: ApplicationUserRepresenter,
|
10
|
-
schema_info: {
|
11
|
-
description: "The ApplicationUsers associated with the matching Users",
|
12
|
-
minItems: 0
|
13
|
-
}
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
module OpenStax
|
2
|
-
module Accounts
|
3
|
-
module Dev
|
4
|
-
class CreateUser
|
5
|
-
lev_routine
|
6
|
-
|
7
|
-
protected
|
8
|
-
|
9
|
-
def exec(inputs={})
|
10
|
-
|
11
|
-
username = inputs[:username]
|
12
|
-
|
13
|
-
if username.nil? || inputs[:ensure_no_errors]
|
14
|
-
loop do
|
15
|
-
break if !username.nil? && OpenStax::Accounts::User.where(username: username).none?
|
16
|
-
username = "#{inputs[:username] || 'user'}#{rand(1000000)}"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
outputs[:user] = OpenStax::Accounts::User.create do |user|
|
21
|
-
user.first_name = inputs[:first_name]
|
22
|
-
user.last_name = inputs[:last_name]
|
23
|
-
user.username = username
|
24
|
-
user.openstax_uid = available_negative_openstax_uid
|
25
|
-
end
|
26
|
-
|
27
|
-
transfer_errors_from(outputs[:user], {type: :verbatim})
|
28
|
-
end
|
29
|
-
|
30
|
-
def available_negative_openstax_uid
|
31
|
-
(OpenStax::Accounts::User.order("openstax_uid DESC").last.try(:openstax_uid) || 0) - 1
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
# Routine for getting user updates from Accounts
|
2
|
-
#
|
3
|
-
# Should be scheduled to run regularly
|
4
|
-
|
5
|
-
module OpenStax
|
6
|
-
module Accounts
|
7
|
-
|
8
|
-
class SyncUsers
|
9
|
-
|
10
|
-
SYNC_ATTRIBUTES = ['username', 'first_name', 'last_name',
|
11
|
-
'full_name', 'title']
|
12
|
-
|
13
|
-
lev_routine transaction: :no_transaction
|
14
|
-
|
15
|
-
protected
|
16
|
-
|
17
|
-
def exec(options={})
|
18
|
-
|
19
|
-
return if OpenStax::Accounts.configuration.enable_stubbing?
|
20
|
-
|
21
|
-
response = OpenStax::Accounts.application_users_updates
|
22
|
-
|
23
|
-
app_users = []
|
24
|
-
app_users_rep = OpenStax::Accounts::Api::V1::ApplicationUsersRepresenter.new(app_users)
|
25
|
-
app_users_rep.from_json(response.body)
|
26
|
-
|
27
|
-
return if app_users.empty?
|
28
|
-
|
29
|
-
app_users_hash = {}
|
30
|
-
app_users.each do |app_user|
|
31
|
-
user = OpenStax::Accounts::User.where(:openstax_uid => app_user.user.openstax_uid).first
|
32
|
-
user.updating_from_accounts = true
|
33
|
-
next unless user.update_attributes(app_user.user.attributes.slice(*SYNC_ATTRIBUTES))
|
34
|
-
app_users_hash[app_user.id] = app_user.unread_updates
|
35
|
-
end
|
36
|
-
|
37
|
-
OpenStax::Accounts.application_users_updated(app_users_hash)
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
end
|