openstax_connect 0.0.2 → 0.0.3
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.
- data/README.md +16 -0
- data/app/controllers/openstax/connect/application_controller.rb +7 -3
- data/app/controllers/openstax/connect/dev/dev_controller.rb +2 -0
- data/app/controllers/openstax/connect/sessions_controller.rb +3 -1
- data/app/handlers/openstax/connect/dev/users_create.rb +22 -25
- data/app/handlers/openstax/connect/dev/users_generate.rb +4 -2
- data/app/handlers/openstax/connect/dev/users_search.rb +7 -5
- data/app/handlers/openstax/connect/sessions_omniauth_authenticated.rb +11 -4
- data/app/helpers/openstax/connect/application_helper.rb +1 -1
- data/app/models/openstax/connect/user.rb +40 -0
- data/app/{algorithms → routines}/openstax/connect/search_users.rb +4 -4
- data/app/views/openstax/connect/dev/users/index.html.erb +4 -5
- data/app/views/openstax/connect/dev/users/search.js.erb +1 -1
- data/config/initializers/01_requires.rb +1 -0
- data/config/initializers/02_extend_builtins.rb +43 -17
- data/db/migrate/20130729213800_create_openstax_connect_users.rb +15 -0
- data/lib/omniauth/strategies/openstax.rb +4 -2
- data/lib/openstax/connect/engine.rb +2 -1
- data/lib/openstax/connect/exceptions.rb +3 -0
- data/lib/openstax/connect/user_provider.rb +13 -0
- data/lib/openstax/connect/version.rb +1 -1
- data/lib/openstax_connect.rb +43 -1
- metadata +12 -12
- data/app/controllers/openstax/connect/dev/sessions_controller.rb +0 -21
- data/app/models/anonymous_user.rb +0 -40
- data/app/models/user.rb +0 -21
- data/db/migrate/20130729213800_create_users.rb +0 -9
- data/db/migrate/20130909215452_add_fields_to_user.rb +0 -11
data/README.md
CHANGED
@@ -39,6 +39,22 @@ Make sure to install the engine's migrations:
|
|
39
39
|
|
40
40
|
rake openstax_connect:install:migrations
|
41
41
|
|
42
|
+
You also need to create your own User and AnonymousUser models. Once you do this, include concerns from the connect gem to get their baseline functionality.
|
43
|
+
|
44
|
+
class User < ActiveRecord::Base
|
45
|
+
include OpenStax::Connect::Models::User
|
46
|
+
...
|
47
|
+
end
|
48
|
+
|
49
|
+
and
|
50
|
+
|
51
|
+
class AnonymousUser < ActiveRecord::Base
|
52
|
+
include OpenStax::Connect::Models::AnonymousUser
|
53
|
+
...
|
54
|
+
end
|
55
|
+
|
56
|
+
Check out the engine code in app/concerns to see what this gets you.
|
57
|
+
|
42
58
|
Example Application
|
43
59
|
-------------------
|
44
60
|
|
@@ -1,9 +1,13 @@
|
|
1
1
|
# References:
|
2
2
|
# http://edgeguides.rubyonrails.org/engines.html#using-a-class-provided-by-the-application
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
module OpenStax
|
5
|
+
module Connect
|
6
6
|
|
7
|
-
|
7
|
+
# Inherit from the applications ApplicationController to share some methods
|
8
|
+
class ApplicationController < ::ApplicationController
|
9
|
+
include Lev::HandleWith
|
10
|
+
end
|
8
11
|
|
12
|
+
end
|
9
13
|
end
|
@@ -4,6 +4,8 @@ module OpenStax
|
|
4
4
|
module Connect
|
5
5
|
class SessionsController < ApplicationController
|
6
6
|
|
7
|
+
skip_before_filter :authenticate_user!
|
8
|
+
|
7
9
|
def new
|
8
10
|
session[:return_to] = request.referrer
|
9
11
|
redirect_to RouteHelper.get_path(:login)
|
@@ -12,7 +14,7 @@ module OpenStax
|
|
12
14
|
def omniauth_authenticated
|
13
15
|
handle_with(SessionsOmniauthAuthenticated,
|
14
16
|
complete: lambda {
|
15
|
-
|
17
|
+
connect_sign_in(@handler_result.outputs[:connect_user_to_sign_in])
|
16
18
|
redirect_to return_path(true)
|
17
19
|
})
|
18
20
|
end
|
@@ -1,31 +1,28 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module OpenStax::Connect::Dev
|
2
|
+
class UsersCreate
|
3
|
+
lev_handler
|
3
4
|
|
4
|
-
protected
|
5
|
+
protected
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
def authorized?
|
10
|
-
!Rails.env.production?
|
11
|
-
end
|
12
|
-
|
13
|
-
def exec
|
14
|
-
u = User.create do |user|
|
15
|
-
user.first_name = params[:register][:first_name]
|
16
|
-
user.last_name = params[:register][:last_name]
|
17
|
-
user.username = params[:register][:username]
|
18
|
-
user.is_administrator = params[:register][:is_administrator]
|
19
|
-
user.openstax_uid = available_openstax_uid
|
7
|
+
def authorized?
|
8
|
+
!Rails.env.production?
|
20
9
|
end
|
21
|
-
|
22
|
-
transfer_errors_from(u, :register)
|
23
10
|
|
24
|
-
|
25
|
-
|
11
|
+
def handle
|
12
|
+
outputs[:user] = User.create do |user|
|
13
|
+
user.first_name = params[:register][:first_name]
|
14
|
+
user.last_name = params[:register][:last_name]
|
15
|
+
user.username = params[:register][:username]
|
16
|
+
user.is_administrator = params[:register][:is_administrator]
|
17
|
+
user.openstax_uid = available_openstax_uid
|
18
|
+
end
|
19
|
+
|
20
|
+
transfer_errors_from(outputs[:user], {scope: :register})
|
21
|
+
end
|
26
22
|
|
27
|
-
|
28
|
-
|
29
|
-
|
23
|
+
def available_openstax_uid
|
24
|
+
(User.order("openstax_uid DESC").first.try(:openstax_uid) || 0) + 1
|
25
|
+
end
|
30
26
|
|
31
|
-
end
|
27
|
+
end
|
28
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module OpenStax::Connect::Dev
|
2
2
|
class UsersGenerate
|
3
|
-
|
3
|
+
lev_handler
|
4
4
|
|
5
5
|
protected
|
6
6
|
|
@@ -14,7 +14,7 @@ module OpenStax::Connect::Dev
|
|
14
14
|
!Rails.env.production?
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
17
|
+
def handle
|
18
18
|
generate_params.count.times do
|
19
19
|
while !(User.where(:username => (username = SecureRandom.hex(4))).empty?) do; end
|
20
20
|
|
@@ -25,6 +25,8 @@ module OpenStax::Connect::Dev
|
|
25
25
|
user.is_administrator = false
|
26
26
|
user.openstax_uid = available_openstax_uid
|
27
27
|
end
|
28
|
+
|
29
|
+
result.outputs.add(:users, u)
|
28
30
|
end
|
29
31
|
end
|
30
32
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module OpenStax::Connect::Dev
|
2
2
|
class UsersSearch
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
lev_handler transaction: :no_transaction
|
5
|
+
|
6
6
|
paramify :search do
|
7
7
|
attribute :search_type, type: String
|
8
8
|
validates :search_type, presence: true,
|
@@ -13,7 +13,9 @@ module OpenStax::Connect::Dev
|
|
13
13
|
validates :search_terms, presence: true
|
14
14
|
end
|
15
15
|
|
16
|
-
uses_routine OpenStax::Connect::SearchUsers,
|
16
|
+
uses_routine OpenStax::Connect::SearchUsers,
|
17
|
+
as: :search_users,
|
18
|
+
translations: { outputs: {type: :verbatim} }
|
17
19
|
|
18
20
|
protected
|
19
21
|
|
@@ -21,11 +23,11 @@ module OpenStax::Connect::Dev
|
|
21
23
|
!Rails.env.production? || caller.is_administrator?
|
22
24
|
end
|
23
25
|
|
24
|
-
def
|
26
|
+
def handle
|
25
27
|
terms = search_params.search_terms
|
26
28
|
type = search_params.search_type
|
27
29
|
|
28
|
-
|
30
|
+
run(:search_users, terms, type.downcase.to_sym)
|
29
31
|
end
|
30
32
|
|
31
33
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module OpenStax::Connect
|
2
2
|
|
3
3
|
class SessionsOmniauthAuthenticated
|
4
|
-
|
4
|
+
lev_handler
|
5
5
|
|
6
6
|
protected
|
7
7
|
|
@@ -13,8 +13,8 @@ module OpenStax::Connect
|
|
13
13
|
@auth_data.provider == "openstax"
|
14
14
|
end
|
15
15
|
|
16
|
-
def
|
17
|
-
|
16
|
+
def handle
|
17
|
+
outputs[:connect_user_to_sign_in] = user_to_sign_in
|
18
18
|
end
|
19
19
|
|
20
20
|
def user_to_sign_in
|
@@ -26,9 +26,16 @@ module OpenStax::Connect
|
|
26
26
|
existing_user = User.where(openstax_uid: @auth_data.uid).first
|
27
27
|
return existing_user if !existing_user.nil?
|
28
28
|
|
29
|
-
|
29
|
+
new_user = User.create do |user|
|
30
30
|
user.openstax_uid = @auth_data.uid
|
31
|
+
user.username = @auth_data.info.username
|
32
|
+
user.first_name = @auth_data.info.first_name
|
33
|
+
user.last_name = @auth_data.info.last_name
|
31
34
|
end
|
35
|
+
|
36
|
+
transfer_errors_from(new_user, {type: :verbatim})
|
37
|
+
|
38
|
+
new_user
|
32
39
|
end
|
33
40
|
end
|
34
41
|
|
@@ -3,7 +3,7 @@ module OpenStax
|
|
3
3
|
module ApplicationHelper
|
4
4
|
|
5
5
|
def unless_errors(options={}, &block)
|
6
|
-
options[:errors] ||= @errors
|
6
|
+
options[:errors] ||= @handler_result.errors
|
7
7
|
options[:errors_html_id] ||= OpenStax::Connect.configuration.default_errors_html_id
|
8
8
|
options[:errors_partial] ||= OpenStax::Connect.configuration.default_errors_partial
|
9
9
|
options[:trigger] ||= OpenStax::Connect.configuration.default_errors_added_trigger
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module OpenStax::Connect
|
2
|
+
class User < ActiveRecord::Base
|
3
|
+
|
4
|
+
validates :username, uniqueness: true
|
5
|
+
validates :username, presence: true
|
6
|
+
validates :openstax_uid, presence: true
|
7
|
+
|
8
|
+
# first and last names are not required
|
9
|
+
|
10
|
+
def name
|
11
|
+
(first_name || last_name) ? [first_name, last_name].compact.join(" ") : username
|
12
|
+
end
|
13
|
+
|
14
|
+
def casual_name
|
15
|
+
first_name || username
|
16
|
+
end
|
17
|
+
|
18
|
+
def is_anonymous?
|
19
|
+
is_anonymous == true
|
20
|
+
end
|
21
|
+
|
22
|
+
attr_accessor :is_anonymous
|
23
|
+
|
24
|
+
def self.anonymous
|
25
|
+
@@anonymous ||= AnonymousUser.new
|
26
|
+
end
|
27
|
+
|
28
|
+
class AnonymousUser < User
|
29
|
+
before_save { false }
|
30
|
+
def initialize(attributes=nil)
|
31
|
+
super
|
32
|
+
self.is_anonymous = true
|
33
|
+
self.first_name = 'Guest'
|
34
|
+
self.last_name = 'User'
|
35
|
+
self.openstax_uid = nil
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module OpenStax::Connect
|
2
2
|
|
3
3
|
class SearchUsers
|
4
|
-
|
4
|
+
lev_routine transaction: :no_transaction
|
5
5
|
|
6
6
|
protected
|
7
7
|
|
@@ -21,7 +21,7 @@ module OpenStax::Connect
|
|
21
21
|
end
|
22
22
|
when :username
|
23
23
|
query = terms.gsub('%', '') + '%'
|
24
|
-
users = where{username =~ query}
|
24
|
+
users = User.where{username =~ query}
|
25
25
|
when :any
|
26
26
|
users = User.scoped
|
27
27
|
terms.gsub(/[%,]/, '').split.each do |t|
|
@@ -32,10 +32,10 @@ module OpenStax::Connect
|
|
32
32
|
(username =~ query)}
|
33
33
|
end
|
34
34
|
else
|
35
|
-
|
35
|
+
fatal_error(:unknown_user_search_type, data: type)
|
36
36
|
end
|
37
37
|
|
38
|
-
|
38
|
+
outputs[:users] = users
|
39
39
|
end
|
40
40
|
|
41
41
|
end
|
@@ -3,8 +3,7 @@
|
|
3
3
|
<%= error.translate %>
|
4
4
|
<% end %>
|
5
5
|
|
6
|
-
<%=
|
7
|
-
|
6
|
+
<%= osu.section_block "Register a new user" do %>
|
8
7
|
|
9
8
|
<%= lev_form_for :register, url: dev_users_create_path do |f| %>
|
10
9
|
|
@@ -18,14 +17,14 @@
|
|
18
17
|
|
19
18
|
<% end %>
|
20
19
|
|
21
|
-
<%=
|
20
|
+
<%= osu.section_block "Generate new users" do %>
|
22
21
|
<%= lev_form_for :generate, url: dev_users_generate_path do |f| %>
|
23
22
|
Generate <%= f.text_field :count, style: 'width:30px' %> user(s) <%= submit_tag 'Do it now!' %>
|
24
23
|
<% end %>
|
25
24
|
<% end %>
|
26
25
|
|
27
|
-
<%=
|
26
|
+
<%= osu.section_block "Login as an existing user" do %>
|
28
27
|
|
29
28
|
<%= render 'openstax/connect/users/action_search', action_search_path: dev_users_search_path %>
|
30
29
|
|
31
|
-
<% end %>
|
30
|
+
<% end %>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
2
|
<%= render template: 'openstax/connect/users/action_search',
|
3
3
|
locals: {
|
4
|
-
users: @
|
4
|
+
users: @handler_result.outputs[:users],
|
5
5
|
list: OpenStax::Connect::ActionList.new(
|
6
6
|
headings: ['First Name', 'Last Name', 'Username', ''],
|
7
7
|
widths: ['25%', '25%', '25%', '25%'],
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'lev'
|
@@ -2,42 +2,68 @@ class ActionController::Base
|
|
2
2
|
# References:
|
3
3
|
# http://railscasts.com/episodes/356-dangers-of-session-hijacking
|
4
4
|
|
5
|
-
#
|
5
|
+
# Returns the current app user
|
6
6
|
def current_user
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
if @current_user.is_anonymous? && session[:user_id]
|
11
|
-
# Use current_user= to clear out bad state if any
|
12
|
-
self.current_user = User.where(id: session[:user_id]).first
|
13
|
-
end
|
7
|
+
current_connect_user
|
8
|
+
@current_app_user
|
9
|
+
end
|
14
10
|
|
15
|
-
|
11
|
+
# Quasi "private" method that returns the current connect user, refreshing it if needed
|
12
|
+
def current_connect_user
|
13
|
+
if request.ssl? && cookies.signed[:secure_user_id] != "secure#{session[:user_id]}"
|
14
|
+
sign_out! # hijacked
|
15
|
+
else
|
16
|
+
@current_connect_user ||= OpenStax::Connect::User.anonymous
|
17
|
+
connect_sign_in(OpenStax::Connect::User.where(id: session[:user_id]).first) \
|
18
|
+
if @current_connect_user.is_anonymous? && session[:user_id]
|
16
19
|
end
|
17
|
-
|
20
|
+
|
21
|
+
@current_connect_user
|
22
|
+
end
|
18
23
|
|
24
|
+
# Sets (signs in) the provided app user.
|
19
25
|
def current_user=(user)
|
20
|
-
|
21
|
-
|
26
|
+
self.current_connect_user = OpenStax::Connect.configuration.user_provider.app_user_to_connect_user(user)
|
27
|
+
@current_app_user
|
28
|
+
end
|
29
|
+
|
30
|
+
# Quasi "private" method that sets the current connect user, also updates the cache
|
31
|
+
# of the current app user.
|
32
|
+
def current_connect_user=(user)
|
33
|
+
@current_connect_user = user || OpenStax::Connect::User.anonymous
|
34
|
+
if @current_connect_user.is_anonymous?
|
22
35
|
session[:user_id] = nil
|
23
36
|
cookies.delete(:secure_user_id)
|
24
37
|
else
|
25
|
-
session[:user_id] =
|
26
|
-
cookies.signed[:secure_user_id] = {secure: true, value: "secure#{
|
38
|
+
session[:user_id] = @current_connect_user.id
|
39
|
+
cookies.signed[:secure_user_id] = {secure: true, value: "secure#{@current_connect_user.id}"}
|
27
40
|
end
|
28
|
-
@
|
41
|
+
@current_app_user = OpenStax::Connect.configuration.user_provider.connect_user_to_app_user(@current_connect_user)
|
42
|
+
@current_connect_user
|
29
43
|
end
|
30
44
|
|
45
|
+
# Signs in the given app user
|
31
46
|
def sign_in(user)
|
32
47
|
self.current_user = user
|
33
48
|
end
|
34
49
|
|
50
|
+
def connect_sign_in(user)
|
51
|
+
self.current_connect_user = user
|
52
|
+
end
|
53
|
+
|
54
|
+
# Signs out the user
|
35
55
|
def sign_out!
|
36
|
-
self.
|
56
|
+
self.current_connect_user = OpenStax::Connect::User.anonymous
|
37
57
|
end
|
38
58
|
|
59
|
+
# Returns true iff there is a user signed in
|
39
60
|
def signed_in?
|
40
|
-
!
|
61
|
+
!current_connect_user.is_anonymous?
|
62
|
+
end
|
63
|
+
|
64
|
+
# Useful in before_filters
|
65
|
+
def authenticate_user!
|
66
|
+
redirect_to openstax_connect.login_path unless signed_in?
|
41
67
|
end
|
42
68
|
|
43
69
|
protected
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateOpenStaxConnectUsers < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :openstax_connect_users do |t|
|
4
|
+
t.integer :openstax_uid
|
5
|
+
t.string :first_name
|
6
|
+
t.string :last_name
|
7
|
+
t.string :username
|
8
|
+
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
|
12
|
+
add_index :openstax_connect_users, :openstax_uid, :unique => true
|
13
|
+
add_index :openstax_connect_users, :username, :unique => true
|
14
|
+
end
|
15
|
+
end
|
@@ -11,11 +11,13 @@ module OmniAuth
|
|
11
11
|
:authorize_url => "/oauth/authorize"
|
12
12
|
}
|
13
13
|
|
14
|
-
uid
|
14
|
+
uid { raw_info["uid"] }
|
15
15
|
|
16
16
|
info do
|
17
17
|
{
|
18
|
-
:
|
18
|
+
username: raw_info["username"],
|
19
|
+
first_name: raw_info["first_name"],
|
20
|
+
last_name: raw_info["last_name"]
|
19
21
|
# and anything else you want to return to your API consumers
|
20
22
|
}
|
21
23
|
end
|
@@ -10,8 +10,9 @@ module OpenStax
|
|
10
10
|
class Engine < ::Rails::Engine
|
11
11
|
isolate_namespace OpenStax::Connect
|
12
12
|
|
13
|
-
config.autoload_paths << File.expand_path("../../../app/
|
13
|
+
config.autoload_paths << File.expand_path("../../../app/routines", __FILE__)
|
14
14
|
config.autoload_paths << File.expand_path("../../../app/handlers", __FILE__)
|
15
|
+
config.autoload_paths << File.expand_path("../../../app/concerns", __FILE__)
|
15
16
|
|
16
17
|
config.generators do |g|
|
17
18
|
g.test_framework :rspec, :view_specs => false
|
data/lib/openstax_connect.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
require "openstax/connect/engine"
|
2
1
|
require "openstax/connect/version"
|
2
|
+
require "openstax/connect/exceptions"
|
3
|
+
require "openstax/connect/engine"
|
3
4
|
require "openstax/connect/utilities"
|
4
5
|
require "openstax/connect/route_helper"
|
5
6
|
require "openstax/connect/action_list"
|
7
|
+
require "openstax/connect/user_provider"
|
6
8
|
|
7
9
|
module OpenStax
|
8
10
|
module Connect
|
@@ -42,6 +44,44 @@ module OpenStax
|
|
42
44
|
attr_accessor :default_errors_partial
|
43
45
|
attr_accessor :default_errors_html_id
|
44
46
|
attr_accessor :default_errors_added_trigger
|
47
|
+
attr_accessor :security_transgression_exception
|
48
|
+
|
49
|
+
# OpenStax Connect provides you with an OpenStax::Connect::User object. You can
|
50
|
+
# use this as your app's User object without modification, you can modify it to suit
|
51
|
+
# your app's needs (not recommended), or you can provide your own custom User object
|
52
|
+
# that references the OpenStax Connect User object.
|
53
|
+
#
|
54
|
+
# OpenStax Connect also provides you methods for getting and setting the current
|
55
|
+
# signed in user (current_user and current_user= methods). If you choose to create
|
56
|
+
# your own custom User object that references the User object provide by Connect,
|
57
|
+
# you can teach OpenStax Connect how to translate between your app's custom User
|
58
|
+
# object and OpenStax Connect's built-in User object.
|
59
|
+
#
|
60
|
+
# To do this, you need to set a "user_provider" in this configuration.
|
61
|
+
#
|
62
|
+
# config.user_provider = MyUserProvider
|
63
|
+
#
|
64
|
+
# The user_provider is a class that provides two class methods:
|
65
|
+
#
|
66
|
+
# def self.connect_user_to_app_user(connect_user)
|
67
|
+
# # converts the given connect user to an app user
|
68
|
+
# # if you want to cache the connect_user in the app user
|
69
|
+
# # this is the place to do it.
|
70
|
+
# # If no app user exists for this connect user, one should
|
71
|
+
# # be created.
|
72
|
+
# end
|
73
|
+
#
|
74
|
+
# def self.app_user_to_connect_user(app_user)
|
75
|
+
# # converts the given app user to a connect user
|
76
|
+
# end
|
77
|
+
#
|
78
|
+
# Connect users are never nil. When a user is signed out, the current connect user
|
79
|
+
# is an anonymous user (responding true is "is_anonymous?"). You can follow the same
|
80
|
+
# pattern in your app or you can use nil for the current user. Just remember to check
|
81
|
+
# the anonymous status of connect users when doing your connect <-> app translations.
|
82
|
+
#
|
83
|
+
# The default user_provider just uses OpenStax::Connect::User as the app user.
|
84
|
+
attr_accessor :user_provider
|
45
85
|
|
46
86
|
def openstax_services_url=(url)
|
47
87
|
url.gsub!(/https|http/,'https') if !(url =~ /localhost/)
|
@@ -58,6 +98,8 @@ module OpenStax
|
|
58
98
|
@default_errors_partial = 'openstax/connect/shared/attention'
|
59
99
|
@default_errors_html_id = 'openstax-connect-attention'
|
60
100
|
@default_errors_added_trigger = 'openstax-connect-errors-added'
|
101
|
+
@security_transgression_exception = OpenStax::Connect::SecurityTransgression
|
102
|
+
@user_provider = OpenStax::Connect::UserProvider
|
61
103
|
super
|
62
104
|
end
|
63
105
|
|
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.3
|
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-
|
12
|
+
date: 2013-10-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -82,7 +82,7 @@ dependencies:
|
|
82
82
|
requirements:
|
83
83
|
- - ~>
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version:
|
85
|
+
version: 2.0.1
|
86
86
|
type: :runtime
|
87
87
|
prerelease: false
|
88
88
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -90,7 +90,7 @@ dependencies:
|
|
90
90
|
requirements:
|
91
91
|
- - ~>
|
92
92
|
- !ruby/object:Gem::Version
|
93
|
-
version:
|
93
|
+
version: 2.0.1
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
95
|
name: sqlite3
|
96
96
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,7 +130,6 @@ executables: []
|
|
130
130
|
extensions: []
|
131
131
|
extra_rdoc_files: []
|
132
132
|
files:
|
133
|
-
- app/algorithms/openstax/connect/search_users.rb
|
134
133
|
- app/assets/javascripts/openstax/connect/application.js
|
135
134
|
- app/assets/javascripts/openstax/connect/sessions.js
|
136
135
|
- app/assets/stylesheets/openstax/connect/application.css
|
@@ -138,7 +137,6 @@ files:
|
|
138
137
|
- app/assets/stylesheets/openstax/connect/sessions.css
|
139
138
|
- app/controllers/openstax/connect/application_controller.rb
|
140
139
|
- app/controllers/openstax/connect/dev/dev_controller.rb
|
141
|
-
- app/controllers/openstax/connect/dev/sessions_controller.rb
|
142
140
|
- app/controllers/openstax/connect/dev/users_controller.rb
|
143
141
|
- app/controllers/openstax/connect/sessions_controller.rb
|
144
142
|
- app/handlers/openstax/connect/dev/users_create.rb
|
@@ -147,8 +145,8 @@ files:
|
|
147
145
|
- app/handlers/openstax/connect/sessions_omniauth_authenticated.rb
|
148
146
|
- app/helpers/openstax/connect/application_helper.rb
|
149
147
|
- app/helpers/openstax/connect/sessions_helper.rb
|
150
|
-
- app/models/
|
151
|
-
- app/
|
148
|
+
- app/models/openstax/connect/user.rb
|
149
|
+
- app/routines/openstax/connect/search_users.rb
|
152
150
|
- app/views/layouts/openstax/connect/application.html.erb
|
153
151
|
- app/views/openstax/connect/dev/users/index.html.erb
|
154
152
|
- app/views/openstax/connect/dev/users/search.js.erb
|
@@ -159,14 +157,16 @@ files:
|
|
159
157
|
- app/views/openstax/connect/users/_action_list.html.erb
|
160
158
|
- app/views/openstax/connect/users/_action_search.html.erb
|
161
159
|
- app/views/openstax/connect/users/action_search.js.erb
|
160
|
+
- config/initializers/01_requires.rb
|
162
161
|
- config/initializers/02_extend_builtins.rb
|
163
162
|
- config/routes.rb
|
164
|
-
- db/migrate/
|
165
|
-
- db/migrate/20130909215452_add_fields_to_user.rb
|
163
|
+
- db/migrate/20130729213800_create_openstax_connect_users.rb
|
166
164
|
- lib/omniauth/strategies/openstax.rb
|
167
165
|
- lib/openstax/connect/action_list.rb
|
168
166
|
- lib/openstax/connect/engine.rb
|
167
|
+
- lib/openstax/connect/exceptions.rb
|
169
168
|
- lib/openstax/connect/route_helper.rb
|
169
|
+
- lib/openstax/connect/user_provider.rb
|
170
170
|
- lib/openstax/connect/utilities.rb
|
171
171
|
- lib/openstax/connect/version.rb
|
172
172
|
- lib/openstax_connect.rb
|
@@ -188,7 +188,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
188
188
|
version: '0'
|
189
189
|
segments:
|
190
190
|
- 0
|
191
|
-
hash:
|
191
|
+
hash: 2014906712606740384
|
192
192
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
193
193
|
none: false
|
194
194
|
requirements:
|
@@ -197,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
197
197
|
version: '0'
|
198
198
|
segments:
|
199
199
|
- 0
|
200
|
-
hash:
|
200
|
+
hash: 2014906712606740384
|
201
201
|
requirements: []
|
202
202
|
rubyforge_project:
|
203
203
|
rubygems_version: 1.8.25
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module OpenStax
|
2
|
-
module Connect
|
3
|
-
module Dev
|
4
|
-
class SessionsController < DevController
|
5
|
-
|
6
|
-
# def new
|
7
|
-
|
8
|
-
# end
|
9
|
-
|
10
|
-
# def create; end
|
11
|
-
|
12
|
-
# def search
|
13
|
-
# handle_with(Dev::SessionsUserSearch,
|
14
|
-
# params: params,
|
15
|
-
# complete: lambda { render 'search' })
|
16
|
-
# end
|
17
|
-
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'singleton'
|
2
|
-
|
3
|
-
class AnonymousUser
|
4
|
-
include Singleton
|
5
|
-
|
6
|
-
def is_administrator?
|
7
|
-
false
|
8
|
-
end
|
9
|
-
|
10
|
-
def is_anonymous?
|
11
|
-
true
|
12
|
-
end
|
13
|
-
|
14
|
-
def id
|
15
|
-
nil
|
16
|
-
end
|
17
|
-
|
18
|
-
# Necessary if an anonymous user ever runs into an Exception
|
19
|
-
# or else the developer email doesn't work
|
20
|
-
def username
|
21
|
-
'anonymous'
|
22
|
-
end
|
23
|
-
|
24
|
-
def first_name
|
25
|
-
'Guest User'
|
26
|
-
end
|
27
|
-
|
28
|
-
def last_name
|
29
|
-
'Guest User'
|
30
|
-
end
|
31
|
-
|
32
|
-
def name
|
33
|
-
'Guest User'
|
34
|
-
end
|
35
|
-
|
36
|
-
def openstax_uid
|
37
|
-
nil
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
data/app/models/user.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
class User < ActiveRecord::Base
|
2
|
-
|
3
|
-
validates :username, uniqueness: true
|
4
|
-
validates :username, presence: true
|
5
|
-
validates :openstax_uid, presence: true
|
6
|
-
validates :first_name, presence: true
|
7
|
-
validates :last_name, presence: true
|
8
|
-
|
9
|
-
def is_administrator?
|
10
|
-
self.is_administrator
|
11
|
-
end
|
12
|
-
|
13
|
-
def is_anonymous?
|
14
|
-
false
|
15
|
-
end
|
16
|
-
|
17
|
-
def name
|
18
|
-
"#{first_name} #{last_name}"
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
class AddFieldsToUser < ActiveRecord::Migration
|
2
|
-
def change
|
3
|
-
add_column :users, :first_name, :string
|
4
|
-
add_column :users, :last_name, :string
|
5
|
-
add_column :users, :username, :string
|
6
|
-
add_column :users, :is_administrator, :boolean, :default => false
|
7
|
-
|
8
|
-
add_index :users, :openstax_uid, :unique => true
|
9
|
-
add_index :users, :username, :unique => true
|
10
|
-
end
|
11
|
-
end
|