Skip to content

Commit 2d23844

Browse files
committed
Adding an admin privilege to node registration, which makes API use possible.
1 parent 89cdc1b commit 2d23844

6 files changed

Lines changed: 25 additions & 2 deletions

File tree

chef-server/lib/controllers/openid_consumer.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,10 @@ def complete
6262
when OpenID::Consumer::SUCCESS
6363
session[:openid] = oidresp.identity_url
6464
if oidresp.display_identifier =~ /openid\/server\/node\/(.+)$/
65-
session[:level] = :node
65+
reg_name = $1
66+
reg = Chef::OpenIDRegistration.load(reg_name)
67+
Chef::Log.error("#{reg_name} is an admin #{reg.admin}")
68+
session[:level] = reg.admin ? :admin : :node
6669
session[:node_name] = $1
6770
else
6871
session[:level] = :admin

chef-server/lib/controllers/openid_register.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,15 @@ def validate
9696
r.save
9797
redirect url(:registrations)
9898
end
99+
100+
def admin
101+
begin
102+
r = Chef::OpenIDRegistration.load(params[:id])
103+
rescue Exception => e
104+
raise BadRequest, "Cannot find the registration for #{params[:id]}"
105+
end
106+
r.admin = r.admin ? false : true
107+
r.save
108+
redirect url(:registrations)
109+
end
99110
end

chef-server/lib/init.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,8 @@
192192

193193
resources :registrations, :controller => "openid_register"
194194
resources :registrations, :controller => "openid_register", :member => { :validate => :post }
195+
resources :registrations, :controller => "openid_register", :member => { :admin => :post }
196+
195197
match("/openid/server").to(:controller => "openid_server", :action => "index").name(:openid_server)
196198
match("/openid/server/server/xrds").
197199
to(:controller => "openid_server", :action => 'idp_xrds').name(:openid_server_xrds)

chef-server/lib/views/openid_register/index.html.haml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
%form{ :method => "post", :action => url(:validate_registration, { :id => node.name })}
1111
- submit_name = node.validated ? "Invalidate" : "Validate"
1212
%input{ :type => "submit", :name => submit_name, :value => submit_name }
13+
%form{ :method => "post", :action => url(:admin_registration, { :id => node.name })}
14+
- submit_name = node.admin ? "Remove Admin Rights" : "Admin"
15+
%input{ :type => "submit", :name => submit_name, :value => submit_name }
1316
%form{ :method => "post", :action => url(:registration, { :id => node.name })}
1417
%input{ :type => "hidden", :name => "_method", :value => "delete" }
1518
%input{ :type => "submit", :name => "Delete", :value => "Delete" }

chef-server/lib/views/openid_register/show.html.haml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33
%li
44
%a{ :href => url(:openid_node , { :id => @registered_node.name.gsub(/\./, "_") }) } OpenID URL
55
%li= "Validated: #{@registered_node.validated}"
6+
%li= "Admin: #{@registered_node.admin}"

chef/lib/chef/openid_registration.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
class Chef
2727
class OpenIDRegistration
2828

29-
attr_accessor :name, :salt, :validated, :password, :couchdb_rev
29+
attr_accessor :name, :salt, :validated, :password, :couchdb_rev, :admin
3030

3131
include Chef::Mixin::ParamsValidate
3232

@@ -83,6 +83,7 @@ def initialize()
8383
@salt = nil
8484
@password = nil
8585
@validated = false
86+
@admin = false
8687
@couchdb_rev = nil
8788
@couchdb = Chef::CouchDB.new
8889
end
@@ -107,6 +108,7 @@ def to_json(*a)
107108
'salt' => @salt,
108109
'password' => @password,
109110
'validated' => @validated,
111+
'admin' => @admin,
110112
'chef_type' => 'openid_registration',
111113
}
112114
result["_rev"] = @couchdb_rev if @couchdb_rev
@@ -120,6 +122,7 @@ def self.json_create(o)
120122
me.salt = o["salt"]
121123
me.password = o["password"]
122124
me.validated = o["validated"]
125+
me.admin = o["admin"]
123126
me.couchdb_rev = o["_rev"] if o.has_key?("_rev")
124127
me
125128
end

0 commit comments

Comments
 (0)