openstax_accounts 9.0.0 → 9.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/openstax/accounts/application_controller.rb +0 -4
- data/app/controllers/openstax/accounts/dev/accounts_controller.rb +15 -8
- data/app/controllers/openstax/accounts/dev/base_controller.rb +1 -5
- data/app/controllers/openstax/accounts/sessions_controller.rb +2 -4
- data/app/handlers/openstax/accounts/accounts_search.rb +3 -5
- data/app/handlers/openstax/accounts/dev/accounts_create.rb +1 -7
- data/app/handlers/openstax/accounts/dev/accounts_search.rb +0 -2
- data/app/handlers/openstax/accounts/sessions_callback.rb +1 -0
- data/app/models/openstax/accounts/account.rb +26 -4
- data/app/representers/openstax/accounts/api/v1/account_representer.rb +19 -6
- data/app/routines/openstax/accounts/dev/create_account.rb +25 -21
- data/app/routines/openstax/accounts/find_or_create_account.rb +11 -16
- data/app/routines/openstax/accounts/sync_accounts.rb +0 -1
- data/app/views/layouts/openstax/accounts/application.html.erb +2 -2
- data/app/views/openstax/accounts/dev/accounts/_search_results.html.erb +6 -7
- data/app/views/openstax/accounts/dev/accounts/index.html.erb +7 -10
- data/app/views/openstax/accounts/dev/accounts/{search.js.erb → index.js.erb} +0 -0
- data/app/views/openstax/accounts/shared/_attention.html.erb +9 -1
- data/app/views/openstax/accounts/shared/accounts/_search.html.erb +12 -8
- data/config/routes.rb +1 -2
- data/db/migrate/16_add_is_kip_to_openstax_accounts_accounts.rb +5 -0
- data/db/migrate/17_add_school_location_to_openstax_accounts_accounts.rb +5 -0
- data/lib/openstax/accounts/version.rb +1 -1
- data/spec/factories/openstax_accounts_account.rb +1 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52c5a3872725bd1198629d59c0660cdcc7f75d7bf09e32640deb56d772922477
|
4
|
+
data.tar.gz: f48649499a41fa83f48ae34274cab542166bb61401d5edb3583c07f38c29c5bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a266e70528d538b2dabf9722ec10e20423e5e7e47e86846019db502e5079276e216d18347985f20b22bbacfdaecd25e6263b0a38b7032289ed25cf2cbbde4ca
|
7
|
+
data.tar.gz: ea546ef8e9fddb0d245ceeb8cbf6c9e4b9e0856eef81976c80b7f70ebac9b6aee3e1fcc56df1e7b9c9f708ca9178898173f5da7a46ce4e2191f25f4708eb960f
|
@@ -1,8 +1,6 @@
|
|
1
1
|
module OpenStax
|
2
2
|
module Accounts
|
3
|
-
|
4
3
|
class ApplicationController < ::ActionController::Base
|
5
|
-
|
6
4
|
include Lev::HandleWith
|
7
5
|
|
8
6
|
skip_before_action :authenticate_user!, raise: false
|
@@ -10,8 +8,6 @@ module OpenStax
|
|
10
8
|
def configuration
|
11
9
|
OpenStax::Accounts.configuration
|
12
10
|
end
|
13
|
-
|
14
11
|
end
|
15
|
-
|
16
12
|
end
|
17
13
|
end
|
@@ -3,23 +3,30 @@ module OpenStax
|
|
3
3
|
module Dev
|
4
4
|
class AccountsController < OpenStax::Accounts::Dev::BaseController
|
5
5
|
# Allow accessing from inside an iframe
|
6
|
-
before_action :allow_iframe_access, only:
|
6
|
+
before_action :allow_iframe_access, only: :index
|
7
7
|
|
8
8
|
def index
|
9
|
-
|
10
|
-
|
11
|
-
def search
|
12
|
-
handle_with(AccountsSearch)
|
9
|
+
handle_with AccountsSearch
|
13
10
|
end
|
14
11
|
|
15
12
|
def create
|
16
|
-
handle_with(
|
17
|
-
|
13
|
+
handle_with(
|
14
|
+
AccountsCreate,
|
15
|
+
success: -> do
|
16
|
+
username = @handler_result.outputs.account.username
|
17
|
+
flash.notice = "Account with username \"#{username}\" created."
|
18
|
+
redirect_to dev_accounts_path(search: { query: username })
|
19
|
+
end,
|
20
|
+
failure: -> do
|
21
|
+
flash.alert = @handler_result.errors.first.translate
|
22
|
+
redirect_to dev_accounts_path(search: { query: params.dig(:create, :username) })
|
23
|
+
end
|
24
|
+
)
|
18
25
|
end
|
19
26
|
|
20
27
|
def become
|
21
28
|
@account = Account.find(params[:id])
|
22
|
-
sign_in
|
29
|
+
sign_in @account
|
23
30
|
redirect_back key: :accounts_return_to, strategies: [:session]
|
24
31
|
end
|
25
32
|
|
@@ -2,11 +2,7 @@ module OpenStax
|
|
2
2
|
module Accounts
|
3
3
|
module Dev
|
4
4
|
class BaseController < OpenStax::Accounts::ApplicationController
|
5
|
-
|
6
|
-
before_action do
|
7
|
-
raise SecurityTransgression if Rails.env.production?
|
8
|
-
end
|
9
|
-
|
5
|
+
before_action { raise SecurityTransgression if Rails.env.production? }
|
10
6
|
end
|
11
7
|
end
|
12
8
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module OpenStax
|
2
2
|
module Accounts
|
3
3
|
class SessionsController < OpenStax::Accounts::ApplicationController
|
4
|
-
|
5
4
|
def new
|
6
5
|
if configuration.is_return_to_url_approved?(params[:return_to])
|
7
6
|
store_url url: params[:return_to], key: :accounts_return_to, strategies: [:session]
|
@@ -40,14 +39,13 @@ module OpenStax
|
|
40
39
|
end
|
41
40
|
|
42
41
|
def failure
|
43
|
-
redirect_back key: :accounts_return_to, alert:
|
42
|
+
redirect_back key: :accounts_return_to, alert: 'Authentication failed, please try again.'
|
44
43
|
end
|
45
44
|
|
46
45
|
def profile
|
47
46
|
# TODO: stub profile if stubbing is enabled
|
48
|
-
redirect_to URI.join(configuration.openstax_accounts_url,
|
47
|
+
redirect_to URI.join(configuration.openstax_accounts_url, '/profile').to_s
|
49
48
|
end
|
50
|
-
|
51
49
|
end
|
52
50
|
end
|
53
51
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module OpenStax
|
2
2
|
module Accounts
|
3
3
|
class AccountsSearch
|
4
|
-
|
5
4
|
lev_handler
|
6
5
|
|
7
6
|
paramify :search do
|
@@ -50,17 +49,16 @@ module OpenStax
|
|
50
49
|
page: search_params.page,
|
51
50
|
per_page: search_params.per_page}
|
52
51
|
out = run(OpenStax::Accounts::SearchAccounts, params).outputs
|
53
|
-
outputs
|
52
|
+
outputs.total_count = out.total_count
|
54
53
|
|
55
|
-
if !@max_items.nil? && outputs
|
54
|
+
if !@max_items.nil? && outputs.total_count > @max_items
|
56
55
|
fatal_error(code: :too_many_items,
|
57
56
|
message: "The number of matches exceeded the allowed limit of #{
|
58
57
|
@max_items} matches. Please refine your query and try again.")
|
59
58
|
end
|
60
59
|
|
61
|
-
outputs
|
60
|
+
outputs.items = out.items.to_a
|
62
61
|
end
|
63
|
-
|
64
62
|
end
|
65
63
|
end
|
66
64
|
end
|
@@ -1,21 +1,17 @@
|
|
1
1
|
module OpenStax
|
2
2
|
module Accounts
|
3
|
-
|
4
3
|
module Dev
|
5
4
|
class AccountsCreate
|
6
|
-
|
7
5
|
lev_handler
|
8
6
|
|
9
7
|
paramify :create do
|
10
8
|
attribute :username, type: String
|
11
|
-
validates :username, presence: true
|
12
9
|
attribute :role, type: String
|
13
10
|
end
|
14
11
|
|
15
12
|
uses_routine OpenStax::Accounts::Dev::CreateAccount,
|
16
13
|
as: :create_account,
|
17
|
-
translations: { inputs: { scope: :create },
|
18
|
-
outputs: { type: :verbatim } }
|
14
|
+
translations: { inputs: { scope: :create }, outputs: { type: :verbatim } }
|
19
15
|
|
20
16
|
protected
|
21
17
|
|
@@ -26,9 +22,7 @@ module OpenStax
|
|
26
22
|
def handle
|
27
23
|
run(:create_account, create_params.as_hash(:username, :role))
|
28
24
|
end
|
29
|
-
|
30
25
|
end
|
31
26
|
end
|
32
|
-
|
33
27
|
end
|
34
28
|
end
|
@@ -2,7 +2,6 @@ module OpenStax
|
|
2
2
|
module Accounts
|
3
3
|
module Dev
|
4
4
|
class AccountsSearch < OpenStax::Accounts::AccountsSearch
|
5
|
-
|
6
5
|
paramify :search do
|
7
6
|
attribute :type, type: String
|
8
7
|
attribute :query, type: String
|
@@ -21,7 +20,6 @@ module OpenStax
|
|
21
20
|
def authorized?
|
22
21
|
!Rails.env.production?
|
23
22
|
end
|
24
|
-
|
25
23
|
end
|
26
24
|
end
|
27
25
|
end
|
@@ -34,6 +34,7 @@ module OpenStax
|
|
34
34
|
account.faculty_status ||= :no_faculty_info
|
35
35
|
account.role ||= :unknown_role
|
36
36
|
account.school_type ||= :unknown_school_type
|
37
|
+
account.school_location ||= :unknown_school_location
|
37
38
|
end
|
38
39
|
|
39
40
|
outputs.account.save if outputs.account.changed?
|
@@ -12,14 +12,22 @@ module OpenStax::Accounts
|
|
12
12
|
:self_reported_role,
|
13
13
|
:faculty_status,
|
14
14
|
:school_type,
|
15
|
+
:school_location,
|
15
16
|
:salesforce_contact_id,
|
16
17
|
:support_identifier,
|
17
|
-
:is_test
|
18
|
+
:is_test,
|
19
|
+
:is_kip
|
18
20
|
]
|
19
21
|
|
20
22
|
attr_accessor :syncing
|
21
23
|
|
22
|
-
enum faculty_status: [
|
24
|
+
enum faculty_status: [
|
25
|
+
:no_faculty_info,
|
26
|
+
:pending_faculty,
|
27
|
+
:confirmed_faculty,
|
28
|
+
:rejected_faculty
|
29
|
+
]
|
30
|
+
|
23
31
|
enum role: [
|
24
32
|
:unknown_role,
|
25
33
|
:student,
|
@@ -31,9 +39,23 @@ module OpenStax::Accounts
|
|
31
39
|
:adjunct,
|
32
40
|
:homeschool
|
33
41
|
]
|
34
|
-
enum school_type: [:unknown_school_type, :other_school_type, :college]
|
35
42
|
|
36
|
-
|
43
|
+
enum school_type: [
|
44
|
+
:unknown_school_type,
|
45
|
+
:other_school_type,
|
46
|
+
:college,
|
47
|
+
:high_school,
|
48
|
+
:k12_school,
|
49
|
+
:home_school
|
50
|
+
]
|
51
|
+
|
52
|
+
enum school_location: [
|
53
|
+
:unknown_school_location,
|
54
|
+
:domestic_school,
|
55
|
+
:foreign_school
|
56
|
+
]
|
57
|
+
|
58
|
+
validates :faculty_status, :role, :school_type, :school_location, presence: true
|
37
59
|
|
38
60
|
validates :uuid, presence: true, uniqueness: true
|
39
61
|
validates :support_identifier, uniqueness: { allow_nil: true }
|
@@ -5,13 +5,13 @@ module OpenStax
|
|
5
5
|
module Api
|
6
6
|
module V1
|
7
7
|
class AccountRepresenter < Roar::Decorator
|
8
|
-
|
9
8
|
# This representer is used to communicate with Accounts
|
10
9
|
# and so must allow read/write on all properties
|
11
10
|
# Do not use it in create/update APIs!
|
12
11
|
|
13
|
-
#
|
14
|
-
#
|
12
|
+
# This representer can be used directly or subclassed for an object that delegates
|
13
|
+
# openstax_uid, username, first_name, last_name, full_name, title, faculty_status,
|
14
|
+
# role, school_type, school_location and salesforce_contact_id to an account
|
15
15
|
|
16
16
|
include Roar::JSON
|
17
17
|
|
@@ -86,24 +86,37 @@ module OpenStax
|
|
86
86
|
}"
|
87
87
|
}
|
88
88
|
|
89
|
+
property :school_location,
|
90
|
+
type: String,
|
91
|
+
schema_info: {
|
92
|
+
description: "One of #{
|
93
|
+
OpenStax::Accounts::Account.school_locations.keys.map(&:to_s).inspect
|
94
|
+
}"
|
95
|
+
}
|
96
|
+
|
89
97
|
property :uuid,
|
90
98
|
type: String,
|
91
99
|
schema_info: {
|
92
|
-
description:
|
100
|
+
description: 'The UUID as set by Accounts'
|
93
101
|
}
|
94
102
|
|
95
103
|
property :support_identifier,
|
96
104
|
type: String,
|
97
105
|
schema_info: {
|
98
|
-
description:
|
106
|
+
description: 'The support_identifier as set by Accounts'
|
99
107
|
}
|
100
108
|
|
101
109
|
property :is_test,
|
102
110
|
type: :boolean,
|
103
111
|
schema_info: {
|
104
|
-
description:
|
112
|
+
description: 'Whether or not this is a test account'
|
105
113
|
}
|
106
114
|
|
115
|
+
property :is_kip,
|
116
|
+
type: :boolean,
|
117
|
+
schema_info: {
|
118
|
+
description: 'Whether or not this is a Key Institutional Partner account'
|
119
|
+
}
|
107
120
|
end
|
108
121
|
end
|
109
122
|
end
|
@@ -1,5 +1,4 @@
|
|
1
|
-
# Routine for creating an account, only for use when stubbing and
|
2
|
-
# not on production.
|
1
|
+
# Routine for creating an account, only for use when stubbing and not on production.
|
3
2
|
|
4
3
|
module OpenStax
|
5
4
|
module Accounts
|
@@ -11,30 +10,35 @@ module OpenStax
|
|
11
10
|
|
12
11
|
def exec(inputs={})
|
13
12
|
fatal_error(code: :cannot_create_account_in_production) if Rails.env.production?
|
14
|
-
fatal_error(code: :can_only_create_account_when_stubbing)
|
13
|
+
fatal_error(code: :can_only_create_account_when_stubbing) \
|
14
|
+
unless OpenStax::Accounts.configuration.enable_stubbing?
|
15
15
|
|
16
16
|
username = inputs[:username]
|
17
|
-
|
18
|
-
username
|
17
|
+
if username.blank?
|
18
|
+
while username.blank? || Account.where(username: username).exists? do
|
19
|
+
username = SecureRandom.hex(3).to_s
|
20
|
+
end
|
21
|
+
else
|
22
|
+
fatal_error(
|
23
|
+
code: :account_already_exists,
|
24
|
+
message: "One or more accounts with username \"#{username}\" already exist."
|
25
|
+
) if Account.where(username: username).exists?
|
19
26
|
end
|
20
27
|
|
21
|
-
account = OpenStax::Accounts::Account.
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
transfer_errors_from(account, {type: :verbatim}, true)
|
34
|
-
|
35
|
-
outputs[:account] = account
|
28
|
+
outputs.account = OpenStax::Accounts::Account.create(
|
29
|
+
openstax_uid: -SecureRandom.hex(4).to_i(16)/2,
|
30
|
+
access_token: SecureRandom.hex.to_s,
|
31
|
+
username: username,
|
32
|
+
role: inputs[:role] || :unknown_role,
|
33
|
+
uuid: SecureRandom.uuid,
|
34
|
+
support_identifier: "cs_#{SecureRandom.hex(4)}",
|
35
|
+
school_type: inputs[:school_type] || :unknown_school_type,
|
36
|
+
school_location: inputs[:school_location] || :unknown_school_location,
|
37
|
+
is_test: true
|
38
|
+
)
|
39
|
+
|
40
|
+
transfer_errors_from(outputs.account, {type: :verbatim}, true)
|
36
41
|
end
|
37
|
-
|
38
42
|
end
|
39
43
|
end
|
40
44
|
end
|
@@ -7,7 +7,7 @@ module OpenStax
|
|
7
7
|
|
8
8
|
def exec(email: nil, username: nil, password: nil, first_name: nil, last_name: nil,
|
9
9
|
full_name: nil, title: nil, salesforce_contact_id: nil, faculty_status: nil,
|
10
|
-
role: nil, school_type: nil, is_test: nil)
|
10
|
+
role: nil, school_type: nil, school_location: nil, is_kip: nil, is_test: nil)
|
11
11
|
raise(
|
12
12
|
ArgumentError,
|
13
13
|
'You must specify either an email address or a username (and an optional password)'
|
@@ -15,16 +15,16 @@ module OpenStax
|
|
15
15
|
|
16
16
|
if OpenStax::Accounts.configuration.enable_stubbing
|
17
17
|
# We can only stub finding by username b/c accounts-rails doesn't persist emails
|
18
|
-
|
19
|
-
|
20
|
-
uuid = SecureRandom.uuid
|
18
|
+
uuid = Account.find_by(username: username)&.uuid || SecureRandom.uuid
|
19
|
+
openstax_uid = -SecureRandom.hex(4).to_i(16)/2
|
21
20
|
support_identifier = "cs_#{SecureRandom.hex(4)}"
|
22
21
|
else
|
23
|
-
response = Api.find_or_create_account(
|
22
|
+
response = OpenStax::Accounts::Api.find_or_create_account(
|
24
23
|
email: email, username: username, password: password,
|
25
24
|
first_name: first_name, last_name: last_name, full_name: full_name,
|
26
25
|
salesforce_contact_id: salesforce_contact_id, faculty_status: faculty_status,
|
27
|
-
role: role, school_type: school_type,
|
26
|
+
role: role, school_type: school_type, school_location: school_location,
|
27
|
+
is_kip: is_kip, is_test: is_test
|
28
28
|
)
|
29
29
|
fatal_error(code: :invalid_inputs) unless (200..202).include?(response.status)
|
30
30
|
|
@@ -35,12 +35,8 @@ module OpenStax
|
|
35
35
|
support_identifier = struct.support_identifier
|
36
36
|
end
|
37
37
|
|
38
|
-
account = Account.
|
39
|
-
|
40
|
-
unless account.persisted?
|
41
|
-
while username.nil? || Account.where(username: username).exists? do
|
42
|
-
username = SecureRandom.hex(3).to_s
|
43
|
-
end
|
38
|
+
outputs.account = Account.find_or_create_by(uuid: uuid) do |account|
|
39
|
+
account.openstax_uid = openstax_uid
|
44
40
|
account.username = username
|
45
41
|
account.first_name = first_name
|
46
42
|
account.last_name = last_name
|
@@ -50,14 +46,13 @@ module OpenStax
|
|
50
46
|
account.faculty_status = faculty_status || :no_faculty_info
|
51
47
|
account.role = role || :unknown_role
|
52
48
|
account.school_type = school_type || :unknown_school_type
|
53
|
-
account.
|
49
|
+
account.school_location = school_location || :unknown_school_location
|
54
50
|
account.support_identifier = support_identifier
|
51
|
+
account.is_kip = is_kip
|
55
52
|
account.is_test = is_test
|
56
|
-
account.save!
|
57
53
|
end
|
58
54
|
|
59
|
-
transfer_errors_from
|
60
|
-
outputs.account = account
|
55
|
+
transfer_errors_from outputs.account, { type: :verbatim }, true
|
61
56
|
end
|
62
57
|
end
|
63
58
|
end
|
@@ -2,8 +2,8 @@
|
|
2
2
|
<html>
|
3
3
|
<head>
|
4
4
|
<title>Accounts</title>
|
5
|
-
<%= stylesheet_link_tag
|
6
|
-
<%= javascript_include_tag
|
5
|
+
<%= stylesheet_link_tag 'openstax/accounts/application', media: 'all' %>
|
6
|
+
<%= javascript_include_tag 'openstax/accounts/application' %>
|
7
7
|
<%= csrf_meta_tags %>
|
8
8
|
</head>
|
9
9
|
<body>
|
@@ -1,5 +1,5 @@
|
|
1
|
-
<% total_count = @handler_result.outputs
|
2
|
-
accounts = @handler_result.outputs[
|
1
|
+
<% total_count = @handler_result.outputs.total_count
|
2
|
+
accounts = @handler_result.outputs.items || [] %>
|
3
3
|
|
4
4
|
<div id='search-results-count'>
|
5
5
|
<%= pluralize(total_count, 'user') %> found.
|
@@ -9,14 +9,13 @@
|
|
9
9
|
<%= osu.action_list(
|
10
10
|
records: accounts,
|
11
11
|
list: {
|
12
|
-
headings: ['UID', 'Username (click to sign in as)', 'Name'],
|
13
|
-
widths: ['20%', '
|
12
|
+
headings: ['UID', 'UUID', 'Username (click to sign in as)', 'Name'],
|
13
|
+
widths: ['20%', '20%', '30%', '30%'],
|
14
14
|
data_procs: [
|
15
15
|
->(account) { account.openstax_uid },
|
16
|
+
->(account) { account.uuid },
|
16
17
|
->(account) {
|
17
|
-
link_to account.username, become_dev_account_path(
|
18
|
-
account.openstax_uid
|
19
|
-
), method: :post
|
18
|
+
link_to account.username, become_dev_account_path(account.id), method: :post
|
20
19
|
},
|
21
20
|
->(account) { account.name || '---' }
|
22
21
|
]
|
@@ -1,5 +1,4 @@
|
|
1
1
|
<div class="openstax-accounts development-login">
|
2
|
-
|
3
2
|
<%= render partial: 'openstax/accounts/shared/attention' %>
|
4
3
|
|
5
4
|
<h3>Create an Account</h3>
|
@@ -11,7 +10,7 @@
|
|
11
10
|
|
12
11
|
|
13
12
|
<div class="form-group">
|
14
|
-
<%= f.text_field :username, placeholder:
|
13
|
+
<%= f.text_field :username, placeholder: 'Username' %>
|
15
14
|
<%= f.select :role, OpenStax::Accounts::Account.roles.keys.map{|rr| [rr, rr]} %>
|
16
15
|
<%= f.submit 'Create', class: 'btn btn-primary' %>
|
17
16
|
</div>
|
@@ -23,15 +22,13 @@
|
|
23
22
|
<p>You need to login, but we're not connected to the Accounts server.<br>
|
24
23
|
Search for a user below and click the sign in link next to him or her.</p>
|
25
24
|
|
26
|
-
<%= render :
|
27
|
-
:
|
28
|
-
:
|
29
|
-
:
|
30
|
-
:
|
25
|
+
<%= render partial: 'openstax/accounts/shared/accounts/search',
|
26
|
+
locals: {
|
27
|
+
search_action_path: openstax_accounts.dev_accounts_path,
|
28
|
+
search_results_partial: 'openstax/accounts/dev/accounts/search_results',
|
29
|
+
remote: true,
|
30
|
+
method: :get
|
31
31
|
} %>
|
32
32
|
|
33
33
|
<br>
|
34
|
-
|
35
|
-
<div id="search-results"></div>
|
36
|
-
|
37
34
|
</div>
|
File without changes
|
@@ -1,3 +1,11 @@
|
|
1
1
|
<% handler_errors.each do |error| %>
|
2
|
-
|
2
|
+
<div class="error"><%= error.translate %></div>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<% if flash.alert %>
|
6
|
+
<div class="alert"><%= flash.alert %></div>
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<% if flash.notice %>
|
10
|
+
<div class="notice"><%= flash.notice %></div>
|
3
11
|
<% end %>
|
@@ -1,12 +1,11 @@
|
|
1
1
|
<%
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
'First Name', 'Last Name', 'Email']
|
2
|
+
# Clients of this partial can override the following variables:
|
3
|
+
search_action_path ||= nil
|
4
|
+
search_results_partial ||= nil
|
5
|
+
method ||= :get
|
6
|
+
remote ||= false
|
7
|
+
form_html ||= {id: 'search-form', class: 'form-inline'}
|
8
|
+
search_types ||= ['Any', 'Username', 'Name', 'First Name', 'Last Name', 'Email']
|
10
9
|
%>
|
11
10
|
|
12
11
|
<%= lev_form_for :search,
|
@@ -26,6 +25,11 @@
|
|
26
25
|
|
27
26
|
<% end %>
|
28
27
|
|
28
|
+
<div id="search-results">
|
29
|
+
<% unless search_results_partial.blank? %>
|
30
|
+
<%= render partial: search_results_partial %>
|
31
|
+
<% end %>
|
32
|
+
</div>
|
29
33
|
|
30
34
|
<script>
|
31
35
|
var input = $('input[name="search[query]"]');
|
data/config/routes.rb
CHANGED
@@ -4,14 +4,13 @@ OpenStax::Accounts::Engine.routes.draw do
|
|
4
4
|
|
5
5
|
# Shortcut to OmniAuth route that redirects to the Accounts server
|
6
6
|
# This is provided by OmniAuth and is not in the SessionsController
|
7
|
-
get '/auth/openstax', as: 'openstax_login'
|
7
|
+
get '/auth/openstax', to: ->(env) { [ 404, {}, [ '' ] ] }, as: 'openstax_login'
|
8
8
|
|
9
9
|
if OpenStax::Accounts.configuration.enable_stubbing?
|
10
10
|
# User profile route
|
11
11
|
namespace :dev do
|
12
12
|
resources :accounts, only: [:index, :create] do
|
13
13
|
post 'become', on: :member
|
14
|
-
get 'search', on: :collection
|
15
14
|
end
|
16
15
|
end
|
17
16
|
end
|
@@ -6,6 +6,7 @@ FactoryBot.define do
|
|
6
6
|
faculty_status { OpenStax::Accounts::Account.faculty_statuses[:no_faculty_info] }
|
7
7
|
role { OpenStax::Accounts::Account.roles[:unknown_role] }
|
8
8
|
school_type { OpenStax::Accounts::Account.school_types[:unknown_school_type] }
|
9
|
+
school_location { OpenStax::Accounts::Account.school_locations[:unknown_school_location] }
|
9
10
|
uuid { SecureRandom.uuid }
|
10
11
|
support_identifier { "cs_#{SecureRandom.hex(4)}" }
|
11
12
|
is_test { true }
|
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: 9.0.
|
4
|
+
version: 9.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JP Slavinsky
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -330,7 +330,7 @@ files:
|
|
330
330
|
- app/views/layouts/openstax/accounts/application.html.erb
|
331
331
|
- app/views/openstax/accounts/dev/accounts/_search_results.html.erb
|
332
332
|
- app/views/openstax/accounts/dev/accounts/index.html.erb
|
333
|
-
- app/views/openstax/accounts/dev/accounts/
|
333
|
+
- app/views/openstax/accounts/dev/accounts/index.js.erb
|
334
334
|
- app/views/openstax/accounts/shared/_attention.html.erb
|
335
335
|
- app/views/openstax/accounts/shared/accounts/_search.html.erb
|
336
336
|
- config/routes.rb
|
@@ -341,6 +341,8 @@ files:
|
|
341
341
|
- db/migrate/13_add_school_type_to_accounts_accounts.rb
|
342
342
|
- db/migrate/14_drop_openstax_uid_and_username_uniqueness.rb
|
343
343
|
- db/migrate/15_drop_accounts_groups.rb
|
344
|
+
- db/migrate/16_add_is_kip_to_openstax_accounts_accounts.rb
|
345
|
+
- db/migrate/17_add_school_location_to_openstax_accounts_accounts.rb
|
344
346
|
- db/migrate/1_create_openstax_accounts_groups.rb
|
345
347
|
- db/migrate/2_create_openstax_accounts_group_members.rb
|
346
348
|
- db/migrate/3_create_openstax_accounts_group_owners.rb
|