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.
Files changed (66) hide show
  1. checksums.yaml +8 -8
  2. data/README.md +89 -58
  3. data/app/controllers/openstax/accounts/application_controller.rb +3 -12
  4. data/app/controllers/openstax/accounts/dev/accounts_controller.rb +19 -0
  5. data/app/controllers/openstax/accounts/dev/base_controller.rb +2 -8
  6. data/app/controllers/openstax/accounts/sessions_controller.rb +31 -19
  7. data/app/handlers/openstax/accounts/dev/{users_index.rb → accounts_index.rb} +4 -4
  8. data/app/handlers/openstax/accounts/sessions_callback.rb +43 -0
  9. data/app/models/openstax/accounts/{user.rb → account.rb} +7 -22
  10. data/app/models/openstax/accounts/anonymous_account.rb +24 -0
  11. data/app/models/openstax/accounts/application_account.rb +7 -0
  12. data/app/representers/openstax/accounts/api/v1/{user_representer.rb → account_representer.rb} +1 -1
  13. data/app/representers/openstax/accounts/api/v1/{user_search_representer.rb → account_search_representer.rb} +7 -6
  14. data/app/representers/openstax/accounts/api/v1/{application_user_representer.rb → application_account_representer.rb} +5 -4
  15. data/app/representers/openstax/accounts/api/v1/application_account_search_representer.rb +20 -0
  16. data/app/representers/openstax/accounts/api/v1/{application_users_representer.rb → application_accounts_representer.rb} +3 -3
  17. data/app/routines/openstax/accounts/dev/{search_users.rb → search_accounts.rb} +5 -5
  18. data/app/routines/openstax/accounts/{search_users.rb → search_accounts.rb} +55 -46
  19. data/app/routines/openstax/accounts/sync_accounts.rb +47 -0
  20. data/app/views/openstax/accounts/dev/{users → accounts}/_search_results.html.erb +13 -13
  21. data/app/views/openstax/accounts/dev/{users/login.html.erb → accounts/index.html.erb} +3 -3
  22. data/app/views/openstax/accounts/dev/{users → accounts}/index.js.erb +1 -1
  23. data/app/views/openstax/accounts/shared/{users → accounts}/_index.html.erb +4 -1
  24. data/config/initializers/action_interceptor.rb +14 -0
  25. data/config/routes.rb +18 -15
  26. data/db/migrate/0_create_openstax_accounts_accounts.rb +22 -0
  27. data/lib/generators/openstax/accounts/schedule/USAGE +1 -1
  28. data/lib/generators/openstax/accounts/schedule/templates/schedule.rb +1 -1
  29. data/lib/openstax/accounts/current_user_manager.rb +74 -65
  30. data/lib/openstax/accounts/default_account_user_mapper.rb +15 -0
  31. data/lib/openstax/accounts/engine.rb +2 -0
  32. data/lib/openstax/accounts/extend_builtins.rb +37 -0
  33. data/lib/openstax/accounts/version.rb +1 -1
  34. data/lib/openstax_accounts.rb +46 -25
  35. data/spec/controllers/openstax/accounts/dev/accounts_controller_spec.rb +21 -0
  36. data/spec/controllers/openstax/accounts/sessions_controller_spec.rb +12 -9
  37. data/spec/dummy/app/controllers/api/application_users_controller.rb +0 -4
  38. data/spec/dummy/app/controllers/api/users_controller.rb +7 -0
  39. data/spec/dummy/app/models/anonymous_user.rb +48 -0
  40. data/spec/dummy/app/models/user.rb +26 -0
  41. data/spec/dummy/config/initializers/openstax_accounts.rb +3 -2
  42. data/spec/dummy/config/routes.rb +5 -3
  43. data/spec/dummy/db/migrate/1_create_users.rb +11 -0
  44. data/spec/dummy/db/schema.rb +18 -6
  45. data/spec/factories/openstax_accounts_account.rb +6 -0
  46. data/spec/lib/openstax/accounts/current_user_manager_spec.rb +151 -0
  47. data/spec/lib/openstax_accounts_spec.rb +16 -9
  48. data/spec/models/openstax/accounts/account_spec.rb +9 -0
  49. data/spec/models/openstax/accounts/anonymous_account_spec.rb +9 -0
  50. data/spec/routines/openstax/accounts/{search_users_spec.rb → search_accounts_spec.rb} +38 -38
  51. metadata +87 -50
  52. data/app/controllers/openstax/accounts/dev/users_controller.rb +0 -22
  53. data/app/handlers/openstax/accounts/sessions_omniauth_authenticated.rb +0 -48
  54. data/app/models/openstax/accounts/application_user.rb +0 -7
  55. data/app/representers/openstax/accounts/api/v1/application_user_search_representer.rb +0 -19
  56. data/app/routines/openstax/accounts/dev/create_user.rb +0 -37
  57. data/app/routines/openstax/accounts/sync_users.rb +0 -44
  58. data/config/initializers/extend_builtins.rb +0 -42
  59. data/db/migrate/0_create_openstax_accounts_users.rb +0 -18
  60. data/lib/openstax/accounts/action_list.rb +0 -42
  61. data/lib/openstax/accounts/route_helper.rb +0 -34
  62. data/lib/openstax/accounts/user_provider.rb +0 -15
  63. data/spec/controllers/openstax/accounts/dev/users_controller_spec.rb +0 -21
  64. data/spec/factories/openstax_accounts_user.rb +0 -6
  65. data/spec/models/openstax/accounts/user_spec.rb +0 -13
  66. data/spec/routines/openstax/accounts/dev/create_user_spec.rb +0 -26
@@ -1,42 +0,0 @@
1
- class ActionController::Base
2
-
3
- # Returns the current app user
4
- def current_user
5
- current_user_manager.current_user
6
- end
7
-
8
- # Signs in the given user; the argument can be either an accounts user or
9
- # an app user
10
- def sign_in(user)
11
- current_user_manager.sign_in(user)
12
- end
13
-
14
- # Signs out the current user
15
- def sign_out!
16
- current_user_manager.sign_out!
17
- end
18
-
19
- # Returns true iff there is a user signed in
20
- def signed_in?
21
- current_user_manager.signed_in?
22
- end
23
-
24
- # Useful in before_filters
25
- def authenticate_user!
26
- return if signed_in?
27
- session[:return_to] = "#{request.protocol}#{request.host_with_port}#{request.fullpath}"
28
- redirect_to openstax_accounts.login_path
29
- end
30
-
31
- protected
32
-
33
- helper_method :current_user, :signed_in?
34
-
35
- def current_user_manager
36
- @current_user_manager ||= OpenStax::Accounts::CurrentUserManager.new(request,
37
- session,
38
- cookies)
39
- end
40
-
41
- end
42
-
@@ -1,18 +0,0 @@
1
- class CreateOpenStaxAccountsUsers < ActiveRecord::Migration
2
- def change
3
- create_table :openstax_accounts_users do |t|
4
- t.integer :openstax_uid
5
- t.string :username
6
- t.string :first_name
7
- t.string :last_name
8
- t.string :full_name
9
- t.string :title
10
- t.string :access_token
11
-
12
- t.timestamps
13
- end
14
-
15
- add_index :openstax_accounts_users, :openstax_uid, :unique => true
16
- add_index :openstax_accounts_users, :username, :unique => true
17
- end
18
- end
@@ -1,42 +0,0 @@
1
- module OpenStax
2
- module Accounts
3
- class ActionList
4
-
5
- def initialize(options={})
6
- @options = options
7
-
8
- raise IllegalArgument, "must supply data procs" if options[:data_procs].nil?
9
-
10
- if options[:headings].present? && options[:data_procs].size != options[:headings].size
11
- raise IllegalArgument, "if you supply headings, you must supply one for each column"
12
- end
13
-
14
- if options[:widths].present? && options[:data_procs].size != options[:widths].size
15
- raise IllegalArgument, "if you supply widths, you must supply one for each column"
16
- end
17
-
18
- end
19
-
20
- def num_columns
21
- @options[:data_procs].size
22
- end
23
-
24
- def has_headings?
25
- @options[:headings].present?
26
- end
27
-
28
- def get_heading(column)
29
- @options[:headings].nil? ? nil : @options[:headings][column]
30
- end
31
-
32
- def get_width(column)
33
- @options[:widths].nil? ? nil : @options[:widths][column]
34
- end
35
-
36
- def get_data(column, *args)
37
- @options[:data_procs][column].call(*args)
38
- end
39
-
40
- end
41
- end
42
- end
@@ -1,34 +0,0 @@
1
- require 'singleton'
2
-
3
- module OpenStax
4
- module Accounts
5
- class RouteHelper
6
-
7
- include Singleton
8
-
9
- # Registers a path against a canonical name. An optional
10
- # block can be provided to give the stubbed path
11
- def self.register_path(canonical_name, path, &block)
12
- instance.paths[canonical_name] = path
13
- if block.present? && OpenStax::Accounts.configuration.enable_stubbing?
14
- instance.stubbed_paths[canonical_name] = block.call
15
- end
16
- end
17
-
18
- def self.get_path(canonical_name)
19
- OpenStax::Accounts.configuration.enable_stubbing? ?
20
- instance.stubbed_paths[canonical_name] :
21
- instance.paths[canonical_name]
22
- end
23
-
24
- def initialize
25
- self.paths = {}
26
- self.stubbed_paths = {}
27
- end
28
-
29
- attr_accessor :paths
30
- attr_accessor :stubbed_paths
31
-
32
- end
33
- end
34
- end
@@ -1,15 +0,0 @@
1
- module OpenStax
2
- module Accounts
3
- class UserProvider
4
-
5
- def self.accounts_user_to_app_user(accounts_user)
6
- accounts_user
7
- end
8
-
9
- def self.app_user_to_accounts_user(app_user)
10
- app_user
11
- end
12
-
13
- end
14
- end
15
- end
@@ -1,21 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module OpenStax::Accounts
4
- module Dev
5
- describe UsersController do
6
- routes { OpenStax::Accounts::Engine.routes }
7
-
8
- let!(:user) { user = FactoryGirl.create :openstax_accounts_user,
9
- username: 'some_user',
10
- openstax_uid: 10 }
11
-
12
- it 'should allow users not in production to become other users' do
13
- expect(controller.current_user).to eq(OpenStax::Accounts::User.anonymous)
14
- expect(controller.current_user.is_anonymous?).to eq(true)
15
- post :become, id: user.id
16
- expect(controller.current_user).to eq(user)
17
- expect(controller.current_user.is_anonymous?).to eq(false)
18
- end
19
- end
20
- end
21
- end
@@ -1,6 +0,0 @@
1
- FactoryGirl.define do
2
- factory :openstax_accounts_user, :class => OpenStax::Accounts::User do
3
- sequence(:username){ |n| "Application #{n}" }
4
- sequence(:openstax_uid){ |n| n }
5
- end
6
- end
@@ -1,13 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module OpenStax::Accounts
4
- describe User do
5
- it 'can return an AnonymousUser' do
6
- anon = User.anonymous
7
- expect(anon.is_anonymous?).to eq true
8
- expect(anon.first_name).to eq 'Guest'
9
- expect(anon.last_name).to eq 'User'
10
- expect(anon.openstax_uid).to be_nil
11
- end
12
- end
13
- end
@@ -1,26 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module OpenStax
4
- module Accounts
5
- module Dev
6
-
7
- describe CreateUser do
8
-
9
- it 'creates users' do
10
-
11
- expect(User.where(username: 'bob').first).to be_nil
12
-
13
- outputs = CreateUser.call(username: 'bob', last_name: 'jones').outputs
14
-
15
- expect(outputs[:user]).not_to be_nil
16
- expect(outputs[:user].username).to eq 'bob'
17
- expect(outputs[:user].last_name).to eq 'jones'
18
- expect(User.where(username: 'bob').first).to eq outputs[:user]
19
-
20
- end
21
-
22
- end
23
-
24
- end
25
- end
26
- end