user_mgmt 0.0.522 → 0.0.611
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/user_mgmt/application_controller.rb +97 -0
- data/app/controllers/user_mgmt/registrations_controller.rb +9 -0
- data/app/controllers/user_mgmt/sessions_controller.rb +44 -3
- data/app/helpers/user_mgmt/application_helper.rb +9 -0
- data/app/models/user_mgmt/user.rb +15 -0
- data/app/views/layouts/user_mgmt/application.html.haml +6 -0
- data/app/views/user_mgmt/registrations/_user_form.html.haml +2 -2
- data/app/views/user_mgmt/registrations/new.html.haml +6 -1
- data/app/views/user_mgmt/sessions/new.html.haml +17 -1
- data/app/views/user_mgmt/sessions/oauth_email.html.haml +11 -0
- data/config/routes.rb +6 -1
- data/lib/generators/templates/README +17 -1
- data/lib/generators/templates/user_mgmt.rb +20 -0
- data/lib/user_mgmt/engine.rb +13 -0
- data/lib/user_mgmt/version.rb +1 -1
- data/lib/user_mgmt.rb +4 -0
- data/test/controllers/user_mgmt/registrations_controller_test.rb +16 -0
- data/test/controllers/user_mgmt/sessions_controller_test.rb +21 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/javascripts/simulate.js +2 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/assets/stylesheets/simulate.css +4 -0
- data/test/dummy/app/controllers/application_controller.rb +8 -0
- data/test/dummy/app/controllers/simulate_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/helpers/simulate_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.haml +17 -0
- data/test/dummy/app/views/simulate/index.html.haml +15 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +29 -0
- data/test/dummy/config/environments/production.rb +80 -0
- data/test/dummy/config/environments/test.rb +36 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +12 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/user_mgmt.rb +30 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +7 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +21894 -0
- data/test/dummy/log/test.log +30 -0
- data/test/dummy/public/404.html +58 -0
- data/test/dummy/public/422.html +58 -0
- data/test/dummy/public/500.html +57 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/test/controllers/simulate_controller_test.rb +9 -0
- data/test/dummy/test/helpers/simulate_helper_test.rb +4 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_accordion.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_alerts.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_breadcrumbs.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_button-groups.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_buttons.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_carousel.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_close.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_code.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_component-animations.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_dropdowns.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_forms.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_grid.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_hero-unit.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_labels-badges.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_layouts.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_media.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_mixins.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_modals.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_navbar.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_navs.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_pager.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_pagination.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_popovers.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_progress-bars.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_reset.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_scaffolding.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_sprites.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_tables.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_thumbnails.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_tooltip.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_type.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_utilities.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_variables.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/_wells.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/0565465174accc9e5f0a8b0cca8d51019e5d5dcd/bootstrap.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/08baa9190ae62c5825550f45deea7e16b5510676/application.css.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sass/a3ac9b1bfb4134782c1d12f62ef348f552630183/bootstrap.scssc +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/022f999a319cf56fc1b74e08c183f9ed +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/07a0d9a230805c18391fb1fa9ad89f4d +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/0c86f94d4cfadfd0d7faf85933499f7e +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/11cd415976f0f9503651e5bf3dcffe55 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/182256f2cdfcb7f65cad1a6556736742 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/1a2ab1c1d743ebe16dbc65177bd4aeb5 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/1d2a2e9172d1f187f17da4c56686b396 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/2734674f08a0218f05aa1c1220b78902 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/322652c3fe53e3c12be9cdbf81f97103 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/32839c4373cf90b1de445a2c0d3dcbdc +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/3ac898a768e6c22e5fc9e1d62f64b13b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4d6b3c4d39931ed121044e1b76b67c66 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4e334d8a78cce254ce765049c5d2ef2b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/5457651f4fd5c456bcf875b4aa72149e +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/5bf88d72b841c26d7feb74250bae80f4 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/685244533311db6b641af2aa200c650f +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/7a050aee25e0e30c5f640bb856d3db08 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/8e254fa9d715c6e5250bab91023a2eb1 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/a3ed9b085aa940ee68a2ac75caf6118d +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/a94356ecde652bbdfbe926f4b20bbc62 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/b0ca28d54b5fd6ab0647874da233bcea +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/c0eaef738b6bdad0afd285c3866dc00b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/c400393e6ee751e159c636d2f1b4ece1 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/cf9c898477d0d114419affee8fe5e94a +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/d04a23ab8f76f67d5f032307a809446d +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/d6491478c63d922c855dd1f7ae86405b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/d850023c29aab778ee0cc7fedf82e69d +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f9fc91e06d98e04ba3cb00620d0bac5e +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/fd1e5d1f7e9d675209dbf864cbc607fc +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/fdc85097d4de3566cb0f9b8f424bb8b3 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/ff73f764c8df44829310dc9e5587025a +0 -0
- data/test/helpers/user_mgmt/registrations_helper_test.rb +6 -0
- data/test/helpers/user_mgmt/sessions_helper_test.rb +6 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/test_helper.rb +15 -0
- data/test/user_mgmt_test.rb +7 -0
- metadata +337 -4
- data/app/controllers/user_mgmt_controller.rb +0 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 908f5cbf67a73b29d0dc6bae42c6e86fff4f531a
|
|
4
|
+
data.tar.gz: f0858ed4cf791dbcb3b551e88bf000593ef123d7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8c9a518ad356755b33a91128b2835e295696a243a62224530433c98b6e5e59f018f2fb4f19517a6b0a0e1ac91b243978febe0138d3e4d16242b031316142ed5e
|
|
7
|
+
data.tar.gz: dfb72140942e96e9c0f12afb9873cd058a5301012c22ecfefecda9145616500fde30823f7ade270585c9205b0714b6fce07272fbb0306f728ce254b578870bc3
|
|
@@ -1,4 +1,101 @@
|
|
|
1
1
|
module UserMgmt
|
|
2
2
|
class ApplicationController < ActionController::Base
|
|
3
|
+
require "net/http"
|
|
4
|
+
require "uri"
|
|
5
|
+
|
|
6
|
+
def main_page
|
|
7
|
+
redirect_to main_app.root_path
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
def current_user
|
|
12
|
+
@current_user ||= nil#User.find(session[:user_session_id]) if session[:user_session_id]
|
|
13
|
+
end
|
|
14
|
+
helper_method :current_user
|
|
15
|
+
|
|
16
|
+
def sign_up email, password, password_confirmation, host= UserMgmt.external_database_URI
|
|
17
|
+
send_request :post, :users, { user: { email: email, password: password,
|
|
18
|
+
password_confirmation: password_confirmation }, method: :simple }, host
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def sign_up_oauth uid, strategy, email, host= UserMgmt.external_database_URI
|
|
22
|
+
send_request :post, :users, { user: { uid: uid, strategy: strategy, email: email }, method: :oauth }, host
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def log_in email, password, host= UserMgmt.external_database_URI
|
|
26
|
+
send_request :get, :login, { user: { email: email, password: password }, method: :simple }, host
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def log_in_oauth uid, strategy, host= UserMgmt.external_database_URI
|
|
30
|
+
send_request :get, :login, { user: { uid: uid, strategy: strategy }, method: :oauth }, host
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def log_out umid, host= UserMgmt.external_database_URI
|
|
34
|
+
send_request :delete, :logout, { user: umid }, host
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def add_strategy uid, strategy, umid, session, host= UserMgmt.external_database_URI
|
|
38
|
+
send_request :post, :add_strategy, { new_strategy: { uid: uid, strategy: strategy },
|
|
39
|
+
user: umid, session_id: session }, host
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def remove_strategy umid, strategy, session, host= UserMgmt.external_database_URI
|
|
43
|
+
send_request :delete, :remove_strategy, { user: umid, strategy: strategy,
|
|
44
|
+
session_id: session }, host
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def delete_user umid, session, host= UserMgmt.external_database_URI
|
|
48
|
+
send_request :delete, :destroy, { user: umid, session_id: session }, host
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def change_password user, password, new_pw, new_pw_confirm, session, host= UserMgmt.external_database_URI
|
|
52
|
+
send_request :put, :change_password, { user: user, password: password,
|
|
53
|
+
new_password: new_pw, new_password_confirmation: new_pw_confirm,
|
|
54
|
+
session: session }, host
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def reset_password reset_token, new_pw, new_pw_confirm, host= UserMgmt.external_database_URI
|
|
58
|
+
send_request :put, :change_password, { reset_token: reset_token, new_password: new_pw,
|
|
59
|
+
new_password_confirmation: new_pw_confirm }, host
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def reset_password_request email, host= UserMgmt.external_database_URI
|
|
63
|
+
send_request :post, :reset_password, { email: email }, host
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def change_email user, password, new_email, new_email_confirm, session, host= UserMgmt.external_database_URI
|
|
67
|
+
send_request :put, :change_email, { email: user, password: password, new_email: new_email,
|
|
68
|
+
new_email_confirmation: new_email_confirm, session: session }, host
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
private
|
|
72
|
+
|
|
73
|
+
def send_request method, path='/', params={}, host= UserMgmt.external_database_URI
|
|
74
|
+
path = path.to_s.downcase
|
|
75
|
+
path = '/' << path unless path.start_with? '/'
|
|
76
|
+
uri = URI.parse(host)
|
|
77
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
|
78
|
+
|
|
79
|
+
case method.to_s.downcase
|
|
80
|
+
when 'get'
|
|
81
|
+
request = Net::HTTP::Get.new(uri.request_uri << path, initheader = {'Content-Type' =>'application/json'})
|
|
82
|
+
when 'post'
|
|
83
|
+
request = Net::HTTP::Post.new(uri.request_uri << path, initheader = {'Content-Type' =>'application/json'})
|
|
84
|
+
when 'put'
|
|
85
|
+
request = Net::HTTP::Put.new(uri.request_uri << path, initheader = {'Content-Type' =>'application/json'})
|
|
86
|
+
when 'delete'
|
|
87
|
+
request = Net::HTTP::Delete.new(uri.request_uri << path, initheader = {'Content-Type' =>'application/json'})
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
request.body = params.to_json
|
|
91
|
+
response = http.request(request)
|
|
92
|
+
begin
|
|
93
|
+
return { body: JSON.parse(response.body), status: response.code }
|
|
94
|
+
rescue
|
|
95
|
+
return { body: response.body, status: response.code }
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
|
|
3
100
|
end
|
|
4
101
|
end
|
|
@@ -11,7 +11,16 @@ module UserMgmt
|
|
|
11
11
|
# POST /user
|
|
12
12
|
def create
|
|
13
13
|
|
|
14
|
+
response = sign_up *params[:user].values
|
|
15
|
+
|
|
16
|
+
if response[:status] == "200"
|
|
17
|
+
flash[:notice] = "User was created succesfully!"
|
|
14
18
|
redirect_to main_app.root_path
|
|
19
|
+
else
|
|
20
|
+
flash[:warning] = response[:body]#"User couldn't be created. Try again."
|
|
21
|
+
redirect_to sign_up_path
|
|
22
|
+
end
|
|
23
|
+
|
|
15
24
|
end
|
|
16
25
|
|
|
17
26
|
# GET /user/edit
|
|
@@ -11,13 +11,54 @@ module UserMgmt
|
|
|
11
11
|
# POST /user/log_in
|
|
12
12
|
def create
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
response = log_in *params[:user].values
|
|
15
|
+
|
|
16
|
+
if response[:status] == "200"
|
|
17
|
+
flash[:notice] = "User logged in!"
|
|
18
|
+
session[:user_session_id] = response[:body]["session"]
|
|
19
|
+
redirect_to main_app.root_path
|
|
20
|
+
else
|
|
21
|
+
flash[:warning] = response[:body]
|
|
22
|
+
redirect_to log_in_path
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# GET 'auth/:provider/callback'
|
|
28
|
+
def oauth_email
|
|
29
|
+
|
|
30
|
+
@uid = env['omniauth.auth']["uid"]
|
|
31
|
+
@provider= env['omniauth.auth']["provider"]
|
|
32
|
+
|
|
33
|
+
response = log_in_oauth @uid, @provider
|
|
34
|
+
|
|
35
|
+
# if user logged in succesfully, just redirect to main page
|
|
36
|
+
if response[:status] == "200"
|
|
37
|
+
session[:user_session_id] = response[:body]["session"]
|
|
38
|
+
redirect_to main_app.root_path, notice: "User logged in!"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# POST '/oauth_log_in'
|
|
44
|
+
def create_oauth
|
|
45
|
+
|
|
46
|
+
sign_up_oauth params["uid"], params["provider"].to_sym, params["user"]["Email"]
|
|
47
|
+
|
|
48
|
+
response = log_in_oauth params["uid"], params["provider"].to_sym
|
|
49
|
+
|
|
50
|
+
session[:user_session_id] = response[:body]["session"]
|
|
51
|
+
|
|
52
|
+
redirect_to main_app.root_path, notice: "User logged in!"
|
|
53
|
+
|
|
15
54
|
end
|
|
16
55
|
|
|
17
|
-
#
|
|
56
|
+
# GET /user/log_out
|
|
18
57
|
def destroy
|
|
19
58
|
|
|
20
|
-
|
|
59
|
+
session[:user_session_id] = nil
|
|
60
|
+
redirect_to main_app.root_path, notice: "Logged out!"
|
|
61
|
+
|
|
21
62
|
end
|
|
22
63
|
|
|
23
64
|
end
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
= text_field :user, 'Email', :class => "input-block-level", :placeholder => 'Email'
|
|
10
10
|
|
|
11
11
|
%div
|
|
12
|
-
= text_field :user, 'Password', :class => "input-block-level", :placeholder => 'Password'
|
|
12
|
+
= text_field :user, 'Password', :class => "input-block-level", :type => "password", :placeholder => 'Password'
|
|
13
13
|
|
|
14
14
|
%div
|
|
15
|
-
= text_field :user, 'Password Confirmation', :class => "input-block-level", :placeholder => 'Password Confirmation'
|
|
15
|
+
= text_field :user, 'Password Confirmation', :class => "input-block-level", :type => "password", :placeholder => 'Password Confirmation'
|
|
@@ -2,4 +2,9 @@
|
|
|
2
2
|
= form_tag user_path, :class => "form-signin", :method => :post do
|
|
3
3
|
%h2 Sign up
|
|
4
4
|
= render :partial => 'user_form'
|
|
5
|
-
= submit_tag 'submit', :class => "btn btn-large btn-primary"
|
|
5
|
+
= submit_tag 'submit', :class => "btn btn-large btn-primary"
|
|
6
|
+
%ul.unstyled
|
|
7
|
+
%li
|
|
8
|
+
= link_to "Sign up with Facebook", "auth/facebook"
|
|
9
|
+
%li
|
|
10
|
+
= link_to "Sign up with Twitter", "auth/twitter"
|
|
@@ -6,9 +6,25 @@
|
|
|
6
6
|
= text_field :user, 'Email', :class => "input-block-level", :placeholder => "Email"
|
|
7
7
|
|
|
8
8
|
%div
|
|
9
|
-
= text_field :user, 'Password', :class => "input-block-level", :placeholder => 'Password'
|
|
9
|
+
= text_field :user, 'Password', :class => "input-block-level", :type => "password", :placeholder => 'Password'
|
|
10
10
|
|
|
11
11
|
= submit_tag 'submit', :class => "btn btn-large btn-primary"
|
|
12
12
|
|
|
13
|
+
%ul.unstyled
|
|
14
|
+
%li
|
|
15
|
+
|
|
16
|
+
= link_to "Log in with Facebook", "auth/facebook"
|
|
17
|
+
%li
|
|
18
|
+
= link_to "Log in with Twitter", "auth/twitter"
|
|
19
|
+
%li
|
|
20
|
+
= link_to "Log in with Outlook", "auth/windowslive"
|
|
21
|
+
%li
|
|
22
|
+
= link_to "Log in with LinkedIn", "auth/linkedin"
|
|
23
|
+
%li
|
|
24
|
+
= link_to "Log in with Yahoo", "auth/yahoo"
|
|
25
|
+
%li
|
|
26
|
+
= link_to "Log in with GMail", "auth/google"
|
|
27
|
+
|
|
28
|
+
|
|
13
29
|
|
|
14
30
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
.container
|
|
2
|
+
|
|
3
|
+
= form_tag oauth_log_in_path(:uid => @uid, :provider => @provider), :class => "form-signin", :method => :post do
|
|
4
|
+
%h2.form-signin-heading Sign up
|
|
5
|
+
|
|
6
|
+
%h4 Tell us your email address please:
|
|
7
|
+
|
|
8
|
+
%div
|
|
9
|
+
= text_field :user, 'Email', :class => "input-block-level", :placeholder => "Email"
|
|
10
|
+
|
|
11
|
+
= submit_tag 'submit', :class => "btn btn-large btn-primary"
|
data/config/routes.rb
CHANGED
|
@@ -2,10 +2,15 @@ UserMgmt::Engine.routes.draw do
|
|
|
2
2
|
|
|
3
3
|
get '/log_in' => "sessions#new", as: 'log_in'
|
|
4
4
|
post '/log_in' => "sessions#create", as: 'user_log_in'
|
|
5
|
-
|
|
5
|
+
get '/log_out' => "sessions#destroy", as: 'log_out'
|
|
6
|
+
post '/oauth_log_in' => "sessions#create_oauth", as: 'oauth_log_in'
|
|
6
7
|
|
|
7
8
|
get '/sign_up' => 'registrations#new', as: 'sign_up'
|
|
8
9
|
get '/edit' => 'registrations#edit', as: 'edit'
|
|
9
10
|
post '/' => 'registrations#create', as: 'user'
|
|
10
11
|
|
|
12
|
+
get 'auth/:provider/callback' => 'sessions#oauth_email', as: 'oauth_email'
|
|
13
|
+
get 'auth/failure' => 'application#main_page'
|
|
14
|
+
|
|
15
|
+
|
|
11
16
|
end
|
|
@@ -3,8 +3,24 @@
|
|
|
3
3
|
Some setup you must do manually if you haven't yet:
|
|
4
4
|
|
|
5
5
|
1. Ensure you have defined your external database URI, in
|
|
6
|
-
config/initializers/user_mgmt.rb
|
|
6
|
+
config/initializers/user_mgmt.rb.
|
|
7
|
+
For example:
|
|
7
8
|
|
|
8
9
|
config.external_database_URI = "http://localhost:3000/"
|
|
9
10
|
|
|
11
|
+
2. Ensure you have defined root_url to *something* in your config/routes.rb.
|
|
12
|
+
For example:
|
|
13
|
+
|
|
14
|
+
root :to => "home#index"
|
|
15
|
+
|
|
16
|
+
3. Ensure you have flash messages in app/views/layouts/application.html.haml.
|
|
17
|
+
For example:
|
|
18
|
+
|
|
19
|
+
%body
|
|
20
|
+
#main
|
|
21
|
+
- if flash[:notice]
|
|
22
|
+
#notice.message= flash[:notice]
|
|
23
|
+
- elsif flash[:warning]
|
|
24
|
+
#warning.message= flash[:warning]
|
|
25
|
+
|
|
10
26
|
===============================================================================
|
|
@@ -6,4 +6,24 @@ UserMgmt.setup do |config|
|
|
|
6
6
|
# authentication won't be possible to happen
|
|
7
7
|
config.external_database_URI = "http://localhost:3000/"
|
|
8
8
|
|
|
9
|
+
# Namespace router name. It is gonna appear in front of every route that the gem generates.
|
|
10
|
+
# If you change this name, you are gonna have to change it as well in your app's routes file:
|
|
11
|
+
# mount UserMgmt::Engine => "/new_name"
|
|
12
|
+
config.router_name = "user/"
|
|
13
|
+
|
|
9
14
|
end
|
|
15
|
+
|
|
16
|
+
# Edit your strategy keys:
|
|
17
|
+
|
|
18
|
+
ENV['TWITTER_KEY'] = ""
|
|
19
|
+
ENV['TWITTER_SECRET'] = ""
|
|
20
|
+
|
|
21
|
+
ENV['FACEBOOK_KEY'] = ""
|
|
22
|
+
ENV['FACEBOOK_SECRET'] = ""
|
|
23
|
+
|
|
24
|
+
# The code below include the view helpers from user_mgmt in the main app.
|
|
25
|
+
# NOTE: Do not change this code.
|
|
26
|
+
ActiveSupport.on_load :action_controller do
|
|
27
|
+
helper UserMgmt::ApplicationHelper
|
|
28
|
+
end
|
|
29
|
+
|
data/lib/user_mgmt/engine.rb
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
module UserMgmt
|
|
2
|
+
|
|
2
3
|
require "rails"
|
|
4
|
+
require 'omniauth'
|
|
5
|
+
require 'omniauth-facebook'
|
|
6
|
+
require 'omniauth-twitter'
|
|
7
|
+
|
|
3
8
|
class Engine < ::Rails::Engine
|
|
4
9
|
isolate_namespace UserMgmt
|
|
10
|
+
|
|
11
|
+
#http://stackoverflow.com/questions/8304225/omniauth-route-issue-related-to-ruby-version
|
|
12
|
+
middleware.use OmniAuth::Builder do
|
|
13
|
+
# provider :developer unless Rails.env.production?
|
|
14
|
+
provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET']
|
|
15
|
+
provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET']
|
|
16
|
+
end
|
|
17
|
+
|
|
5
18
|
end
|
|
6
19
|
end
|
data/lib/user_mgmt/version.rb
CHANGED
data/lib/user_mgmt.rb
CHANGED
|
@@ -8,6 +8,10 @@ module UserMgmt
|
|
|
8
8
|
mattr_accessor :external_database_URI
|
|
9
9
|
@@external_database_URI = "http://localhost:3000/"
|
|
10
10
|
|
|
11
|
+
# Namespace router name. It is gonna appear in front of every route that the gem generates.
|
|
12
|
+
mattr_accessor :router_name
|
|
13
|
+
@@router_name = "user/"
|
|
14
|
+
|
|
11
15
|
# Default way to setup UserMgmt. Run rails generate user_mgmt:install to create
|
|
12
16
|
# a fresh initializer with all configuration values.
|
|
13
17
|
def self.setup
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module UserMgmt
|
|
4
|
+
class RegistrationsControllerTest < ActionController::TestCase
|
|
5
|
+
test "should get new" do
|
|
6
|
+
get :new
|
|
7
|
+
assert_response :success
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
test "should get create" do
|
|
11
|
+
get :create
|
|
12
|
+
assert_response :success
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module UserMgmt
|
|
4
|
+
class SessionsControllerTest < ActionController::TestCase
|
|
5
|
+
test "should get new" do
|
|
6
|
+
get :new
|
|
7
|
+
assert_response :success
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
test "should get create" do
|
|
11
|
+
get :create
|
|
12
|
+
assert_response :success
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
test "should get destroy" do
|
|
16
|
+
get :destroy
|
|
17
|
+
assert_response :success
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
== README
|
|
2
|
+
|
|
3
|
+
This README would normally document whatever steps are necessary to get the
|
|
4
|
+
application up and running.
|
|
5
|
+
|
|
6
|
+
Things you may want to cover:
|
|
7
|
+
|
|
8
|
+
* Ruby version
|
|
9
|
+
|
|
10
|
+
* System dependencies
|
|
11
|
+
|
|
12
|
+
* Configuration
|
|
13
|
+
|
|
14
|
+
* Database creation
|
|
15
|
+
|
|
16
|
+
* Database initialization
|
|
17
|
+
|
|
18
|
+
* How to run the test suite
|
|
19
|
+
|
|
20
|
+
* Services (job queues, cache servers, search engines, etc.)
|
|
21
|
+
|
|
22
|
+
* Deployment instructions
|
|
23
|
+
|
|
24
|
+
* ...
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
Please feel free to use a different markup language if you do not plan to run
|
|
28
|
+
<tt>rake doc:app</tt>.
|
data/test/dummy/Rakefile
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
|
2
|
+
// listed below.
|
|
3
|
+
//
|
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
|
5
|
+
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
|
6
|
+
//
|
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
|
8
|
+
// compiled file.
|
|
9
|
+
//
|
|
10
|
+
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
|
|
11
|
+
// about supported directives.
|
|
12
|
+
//
|
|
13
|
+
//= require_tree .
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
|
3
|
+
* listed below.
|
|
4
|
+
*
|
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
|
6
|
+
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
|
|
7
|
+
*
|
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the top of the
|
|
9
|
+
* compiled file, but it's generally better to create a new file per style scope.
|
|
10
|
+
*
|
|
11
|
+
*= require_self
|
|
12
|
+
*= require_tree .
|
|
13
|
+
*/
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
!!! 5
|
|
2
|
+
%html
|
|
3
|
+
%head
|
|
4
|
+
|
|
5
|
+
%title Dummy
|
|
6
|
+
= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true
|
|
7
|
+
= javascript_include_tag "application", "data-turbolinks-track" => true
|
|
8
|
+
= csrf_meta_tags
|
|
9
|
+
|
|
10
|
+
%body
|
|
11
|
+
#main
|
|
12
|
+
- if flash[:notice]
|
|
13
|
+
#notice.message= flash[:notice]
|
|
14
|
+
- elsif flash[:warning]
|
|
15
|
+
#warning.message= flash[:warning]
|
|
16
|
+
|
|
17
|
+
= yield
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
%h1 Main Page
|
|
2
|
+
=#debug(session[:user_session_id])
|
|
3
|
+
=#debug(session[:user_session_id] != nil)
|
|
4
|
+
=#debug(user_logged_in)
|
|
5
|
+
%br
|
|
6
|
+
- if user_logged_in
|
|
7
|
+
Logged In
|
|
8
|
+
= link_to "Log Out", user_mgmt.log_out_path
|
|
9
|
+
- else
|
|
10
|
+
Logged Out
|
|
11
|
+
%ul
|
|
12
|
+
%li
|
|
13
|
+
= link_to "Sign up", user_mgmt.sign_up_path
|
|
14
|
+
%li
|
|
15
|
+
= link_to "Log in", user_mgmt.log_in_path
|
data/test/dummy/bin/rake
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require File.expand_path('../boot', __FILE__)
|
|
2
|
+
|
|
3
|
+
require 'rails/all'
|
|
4
|
+
|
|
5
|
+
Bundler.require(*Rails.groups)
|
|
6
|
+
require "user_mgmt"
|
|
7
|
+
|
|
8
|
+
module Dummy
|
|
9
|
+
class Application < Rails::Application
|
|
10
|
+
# Settings in config/environments/* take precedence over those specified here.
|
|
11
|
+
# Application configuration should go into files in config/initializers
|
|
12
|
+
# -- all .rb files in that directory are automatically loaded.
|
|
13
|
+
|
|
14
|
+
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
|
15
|
+
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
|
16
|
+
# config.time_zone = 'Central Time (US & Canada)'
|
|
17
|
+
|
|
18
|
+
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
|
19
|
+
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
|
20
|
+
# config.i18n.default_locale = :de
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# SQLite version 3.x
|
|
2
|
+
# gem install sqlite3
|
|
3
|
+
#
|
|
4
|
+
# Ensure the SQLite 3 gem is defined in your Gemfile
|
|
5
|
+
# gem 'sqlite3'
|
|
6
|
+
development:
|
|
7
|
+
adapter: sqlite3
|
|
8
|
+
database: db/development.sqlite3
|
|
9
|
+
pool: 5
|
|
10
|
+
timeout: 5000
|
|
11
|
+
|
|
12
|
+
# Warning: The database defined as "test" will be erased and
|
|
13
|
+
# re-generated from your development database when you run "rake".
|
|
14
|
+
# Do not set this db to the same as development or production.
|
|
15
|
+
test:
|
|
16
|
+
adapter: sqlite3
|
|
17
|
+
database: db/test.sqlite3
|
|
18
|
+
pool: 5
|
|
19
|
+
timeout: 5000
|
|
20
|
+
|
|
21
|
+
production:
|
|
22
|
+
adapter: sqlite3
|
|
23
|
+
database: db/production.sqlite3
|
|
24
|
+
pool: 5
|
|
25
|
+
timeout: 5000
|