openstax_connect 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/openstax/connect/application_controller.rb +1 -1
- data/app/controllers/openstax/connect/sessions_controller.rb +10 -6
- data/app/handlers/openstax/connect/dev/users_create.rb +3 -1
- data/app/routines/openstax/connect/dev/create_user.rb +33 -0
- data/lib/openstax/connect/current_user_manager.rb +24 -29
- data/lib/openstax/connect/version.rb +1 -1
- metadata +5 -5
- data/app/views/openstax/connect/sessions/create.html.erb +0 -10
@@ -15,30 +15,34 @@ module OpenStax
|
|
15
15
|
handle_with(SessionsOmniauthAuthenticated,
|
16
16
|
complete: lambda {
|
17
17
|
sign_in(@handler_result.outputs[:connect_user_to_sign_in])
|
18
|
-
redirect_to
|
18
|
+
redirect_to return_url(true)
|
19
19
|
})
|
20
20
|
end
|
21
21
|
|
22
22
|
def destroy
|
23
23
|
sign_out!
|
24
|
-
|
24
|
+
# Need to sign out on the services site so can't log back in automagically
|
25
|
+
redirect_to OpenStax::Utilities.generate_url(
|
26
|
+
OpenStax::Connect.configuration.openstax_services_url + "/logout",
|
27
|
+
return_to: return_url
|
28
|
+
)
|
25
29
|
end
|
26
30
|
|
27
31
|
def failure
|
28
|
-
redirect_to
|
32
|
+
redirect_to return_url, alert: "Authentication failed, please try again."
|
29
33
|
end
|
30
34
|
|
31
35
|
def become
|
32
36
|
raise SecurityTransgression unless !Rails.env.production? || current_user.is_administrator?
|
33
37
|
sign_in(User.find(params[:user_id]))
|
34
|
-
redirect_to
|
38
|
+
redirect_to return_url(true)
|
35
39
|
end
|
36
40
|
|
37
41
|
protected
|
38
42
|
|
39
|
-
def
|
43
|
+
def return_url(include_referrer=false)
|
40
44
|
referrer = include_referrer ? request.referrer : nil
|
41
|
-
params[:return_to] || session.delete(:return_to) || referrer || main_app.
|
45
|
+
params[:return_to] || session.delete(:return_to) || referrer || main_app.root_url
|
42
46
|
end
|
43
47
|
|
44
48
|
end
|
@@ -2,6 +2,8 @@ module OpenStax::Connect::Dev
|
|
2
2
|
class UsersCreate
|
3
3
|
lev_handler
|
4
4
|
|
5
|
+
# this code might be OBE
|
6
|
+
|
5
7
|
protected
|
6
8
|
|
7
9
|
def authorized?
|
@@ -13,7 +15,7 @@ module OpenStax::Connect::Dev
|
|
13
15
|
user.first_name = params[:register][:first_name]
|
14
16
|
user.last_name = params[:register][:last_name]
|
15
17
|
user.username = params[:register][:username]
|
16
|
-
user.is_administrator = params[:register][:is_administrator]
|
18
|
+
# user.is_administrator = params[:register][:is_administrator]
|
17
19
|
user.openstax_uid = available_openstax_uid
|
18
20
|
end
|
19
21
|
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module OpenStax::Connect::Dev
|
2
|
+
class CreateUser
|
3
|
+
lev_routine
|
4
|
+
|
5
|
+
protected
|
6
|
+
|
7
|
+
def exec(inputs={})
|
8
|
+
|
9
|
+
username = inputs[:username]
|
10
|
+
|
11
|
+
if username.nil? || inputs[:ensure_no_errors]
|
12
|
+
loop do
|
13
|
+
break if !username.nil? && OpenStax::Connect::User.where(username: username).none?
|
14
|
+
username = "#{inputs[:username] || 'user'}#{rand(1000000)}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
outputs[:user] = OpenStax::Connect::User.create do |user|
|
19
|
+
user.first_name = inputs[:first_name]
|
20
|
+
user.last_name = inputs[:last_name]
|
21
|
+
user.username = username
|
22
|
+
user.openstax_uid = available_negative_openstax_uid
|
23
|
+
end
|
24
|
+
|
25
|
+
transfer_errors_from(outputs[:user], {type: :verbatim})
|
26
|
+
end
|
27
|
+
|
28
|
+
def available_negative_openstax_uid
|
29
|
+
(OpenStax::Connect::User.order("openstax_uid DESC").last.try(:openstax_uid) || 0) - 1
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
@@ -12,8 +12,8 @@ module OpenStax::Connect
|
|
12
12
|
|
13
13
|
# Returns the current app user
|
14
14
|
def current_user
|
15
|
-
|
16
|
-
@
|
15
|
+
load_current_users
|
16
|
+
@app_current_user
|
17
17
|
end
|
18
18
|
|
19
19
|
# Signs in the given user; the argument can be either a connect user or
|
@@ -36,51 +36,46 @@ module OpenStax::Connect
|
|
36
36
|
|
37
37
|
protected
|
38
38
|
|
39
|
-
#
|
39
|
+
# Returns the current connect user
|
40
40
|
def connect_current_user
|
41
|
-
|
41
|
+
load_current_users
|
42
42
|
@connect_current_user
|
43
43
|
end
|
44
44
|
|
45
|
-
|
45
|
+
# If they are nil (unset), sets the current users based on the session state
|
46
|
+
def load_current_users
|
47
|
+
return if !@connect_current_user.nil?
|
48
|
+
|
46
49
|
if @request.ssl? && @cookies.signed[:secure_user_id] != "secure#{@session[:user_id]}"
|
47
50
|
sign_out! # hijacked
|
48
51
|
else
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
# changes both current and app user
|
54
|
-
self.connect_current_user = new_connect_current_user
|
52
|
+
@connect_current_user = @session[:user_id] ?
|
53
|
+
User.where(id: @session[:user_id]).first :
|
54
|
+
User.anonymous
|
55
|
+
@app_current_user = user_provider.connect_user_to_app_user(@connect_current_user)
|
55
56
|
end
|
56
57
|
end
|
57
58
|
|
58
59
|
# Sets (signs in) the provided app user.
|
59
60
|
def current_user=(user)
|
60
61
|
self.connect_current_user = user_provider.app_user_to_connect_user(user)
|
61
|
-
@
|
62
|
+
@app_current_user
|
62
63
|
end
|
63
64
|
|
64
|
-
# Sets the current connect user,
|
65
|
-
#
|
65
|
+
# Sets the current connect user, updates the app user, and also updates the
|
66
|
+
# session and cookie state.
|
66
67
|
def connect_current_user=(user)
|
67
|
-
user
|
68
|
-
@
|
69
|
-
|
70
|
-
if
|
71
|
-
@
|
72
|
-
@
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
@cookies.delete(:secure_user_id)
|
77
|
-
else
|
78
|
-
@session[:user_id] = @connect_current_user.id
|
79
|
-
@cookies.signed[:secure_user_id] = {secure: true, value: "secure#{@connect_current_user.id}"}
|
80
|
-
end
|
68
|
+
@connect_current_user = user || User.anonymous
|
69
|
+
@app_current_user = user_provider.connect_user_to_app_user(@connect_current_user)
|
70
|
+
|
71
|
+
if @connect_current_user.is_anonymous?
|
72
|
+
@session[:user_id] = nil
|
73
|
+
@cookies.delete(:secure_user_id)
|
74
|
+
else
|
75
|
+
@session[:user_id] = @connect_current_user.id
|
76
|
+
@cookies.signed[:secure_user_id] = {secure: true, value: "secure#{@connect_current_user.id}"}
|
81
77
|
end
|
82
78
|
|
83
|
-
@current_app_user ||= user_provider.connect_user_to_app_user(@connect_current_user)
|
84
79
|
@connect_current_user
|
85
80
|
end
|
86
81
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openstax_connect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
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: 2013-10-
|
12
|
+
date: 2013-10-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -146,11 +146,11 @@ files:
|
|
146
146
|
- app/helpers/openstax/connect/application_helper.rb
|
147
147
|
- app/helpers/openstax/connect/sessions_helper.rb
|
148
148
|
- app/models/openstax/connect/user.rb
|
149
|
+
- app/routines/openstax/connect/dev/create_user.rb
|
149
150
|
- app/routines/openstax/connect/search_users.rb
|
150
151
|
- app/views/layouts/openstax/connect/application.html.erb
|
151
152
|
- app/views/openstax/connect/dev/users/index.html.erb
|
152
153
|
- app/views/openstax/connect/dev/users/search.js.erb
|
153
|
-
- app/views/openstax/connect/sessions/create.html.erb
|
154
154
|
- app/views/openstax/connect/shared/_attention.html.erb
|
155
155
|
- app/views/openstax/connect/users/_action_create_form.html.erb
|
156
156
|
- app/views/openstax/connect/users/_action_dialog.html.erb
|
@@ -189,7 +189,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
189
189
|
version: '0'
|
190
190
|
segments:
|
191
191
|
- 0
|
192
|
-
hash:
|
192
|
+
hash: 1060826092135377802
|
193
193
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
194
194
|
none: false
|
195
195
|
requirements:
|
@@ -198,7 +198,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
198
198
|
version: '0'
|
199
199
|
segments:
|
200
200
|
- 0
|
201
|
-
hash:
|
201
|
+
hash: 1060826092135377802
|
202
202
|
requirements: []
|
203
203
|
rubyforge_project:
|
204
204
|
rubygems_version: 1.8.25
|