maestrano-rails 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/maestrano/rails/saml_base_controller.rb +10 -5
- data/lib/generators/active_record/templates/migration.rb +1 -0
- data/lib/generators/maestrano/templates/maestrano.rb +1 -1
- data/lib/maestrano/rails/models/maestrano_auth_resource.rb +15 -1
- data/lib/maestrano/rails/version.rb +1 -1
- metadata +2 -2
@@ -1,5 +1,6 @@
|
|
1
1
|
class Maestrano::Rails::SamlBaseController < ApplicationController
|
2
2
|
attr_reader :saml_response, :user_auth_hash, :group_auth_hash, :user_group_rel_hash
|
3
|
+
protect_from_forgery :except => [:consume]
|
3
4
|
around_filter :saml_response_transaction, only: [:consume]
|
4
5
|
|
5
6
|
# Initialize the SAML request and redirects the
|
@@ -17,8 +18,12 @@ class Maestrano::Rails::SamlBaseController < ApplicationController
|
|
17
18
|
yield
|
18
19
|
Maestrano::SSO.set_session(session,@user_auth_hash)
|
19
20
|
rescue Exception => e
|
20
|
-
|
21
|
-
|
21
|
+
if Rails.env.development?
|
22
|
+
raise
|
23
|
+
else
|
24
|
+
logger.error e
|
25
|
+
redirect_to "#{Maestrano::SSO.unauthorized_url}?err=internal"
|
26
|
+
end
|
22
27
|
end
|
23
28
|
end
|
24
29
|
|
@@ -29,9 +34,9 @@ class Maestrano::Rails::SamlBaseController < ApplicationController
|
|
29
34
|
@user_auth_hash = Maestrano::SSO::BaseUser.new(@saml_response).to_hash
|
30
35
|
@group_auth_hash = Maestrano::SSO::BaseGroup.new(@saml_response).to_hash
|
31
36
|
@user_group_rel_hash = {
|
32
|
-
user_uid: @
|
33
|
-
group_uid: @
|
34
|
-
role: @
|
37
|
+
user_uid: @user_auth_hash[:uid],
|
38
|
+
group_uid: @group_auth_hash[:uid],
|
39
|
+
role: @user_auth_hash[:extra][:group][:role]
|
35
40
|
}
|
36
41
|
end
|
37
42
|
end
|
@@ -26,7 +26,7 @@ Maestrano.configure do |config|
|
|
26
26
|
# ==> Application host
|
27
27
|
# This is your application host (e.g: mysuperapp.com) which is ultimately
|
28
28
|
# used to redirect users to the right SAML url during SSO handshake.
|
29
|
-
config.app_host = Rails.env.production? ? 'https://my-production-app.com' : 'http://localhost
|
29
|
+
config.app_host = Rails.env.production? ? 'https://my-production-app.com' : 'http://localhost:3000'
|
30
30
|
|
31
31
|
# ==> SSO Initialization endpoint
|
32
32
|
# This is your application path to the SAML endpoint that allows users to
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'digest/sha1'
|
2
|
+
|
1
3
|
module Maestrano
|
2
4
|
module Rails
|
3
5
|
module MaestranoAuthResource
|
@@ -62,8 +64,20 @@ module Maestrano
|
|
62
64
|
info = OpenStruct.new(auth_hash[:info])
|
63
65
|
extra = OpenStruct.new(auth_hash[:extra])
|
64
66
|
|
65
|
-
# Create entity
|
67
|
+
# Create entity
|
66
68
|
entity = self.new
|
69
|
+
|
70
|
+
# Set password on entity in case this is required
|
71
|
+
# This is done before the mapping block in case
|
72
|
+
# password has been taken care of by the developer
|
73
|
+
password = Digest::SHA1.hexdigest("#{Time.now.utc}-#{rand(100)}")[0..20]
|
74
|
+
begin
|
75
|
+
entity.password = password if entity.respond_to?(:password)
|
76
|
+
entity.password_confirmation = password if entity.respond_to?(:password_confirmation)
|
77
|
+
rescue Exception => e
|
78
|
+
end
|
79
|
+
|
80
|
+
# Call mapping block
|
67
81
|
self.maestrano_options[:mapping].call(entity,info,extra)
|
68
82
|
|
69
83
|
# Finally set provider and uid then save
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: maestrano-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.2.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Arnaud Lachaume
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - ~>
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: "0.
|
34
|
+
version: "0.2"
|
35
35
|
type: :runtime
|
36
36
|
version_requirements: *id002
|
37
37
|
- !ruby/object:Gem::Dependency
|