summaryrefslogtreecommitdiff
path: root/packages/chef-server/app/controllers/openid_register.rb
diff options
context:
space:
mode:
authorAdam Jacob <adam@hjksolutions.com>2008-06-09 18:53:32 -0700
committerAdam Jacob <adam@hjksolutions.com>2008-06-09 18:53:32 -0700
commitaf843190f9be71469c4a20ef8f9021b292c05588 (patch)
treea38199db4baeaa3380ed41ec6e5e4c30b54b0685 /packages/chef-server/app/controllers/openid_register.rb
parentd373915a1ac9ea25fcb52ac8468e4670425e3376 (diff)
downloadchef-af843190f9be71469c4a20ef8f9021b292c05588.tar.gz
Huge amount of work, covering openid, clients, and all sorts of server stuff
Diffstat (limited to 'packages/chef-server/app/controllers/openid_register.rb')
-rw-r--r--packages/chef-server/app/controllers/openid_register.rb91
1 files changed, 36 insertions, 55 deletions
diff --git a/packages/chef-server/app/controllers/openid_register.rb b/packages/chef-server/app/controllers/openid_register.rb
index 2636524a2d..a6c30c95c5 100644
--- a/packages/chef-server/app/controllers/openid_register.rb
+++ b/packages/chef-server/app/controllers/openid_register.rb
@@ -6,39 +6,40 @@ require 'openid'
class OpenidRegister < Application
provides :html, :json
+
+ before :fix_up_node_id
def index
- @headers['X-XRDS-Location'] = absolute_url(:controller => "server", :action => "idp_xrds")
- @registered_nodes = Chef::FileStore.list("openid_node")
+ @headers['X-XRDS-Location'] = absolute_url(:controller => "openid_server", :action => "idp_xrds")
+ @registered_nodes = Chef::OpenIDRegistration.list(true)
+ Chef::Log.debug(@registered_nodes.inspect)
display @registered_nodes
end
def show
begin
- @registered_node = Chef::FileStore.load("openid_node", params[:id])
- rescue RuntimeError => e
- raise NotFound, "Cannot load node registration for #{params[:id]}"
- end
+ @registered_node = Chef::OpenIDRegistration.load(params[:id])
+ rescue Net::HTTPServerException => e
+ if e.message =~ /^404/
+ raise NotFound, "Cannot load node registration for #{params[:id]}"
+ else
+ raise e
+ end
+ end
+ Merb.logger.debug(@registered_node.inspect)
display @registered_node
end
def create
params.has_key?(:id) or raise BadRequest, "You must provide an id to register"
params.has_key?(:password) or raise BadRequest, "You must provide a password to register"
- if Chef::FileStore.has_key?("openid_node", params[:id])
+ if Chef::OpenIDRegistration.has_key?(params[:id])
raise BadRequest, "You cannot re-register #{params[:id]}!"
end
- salt = generate_salt
- @registered_node = {
- :id => params[:id],
- :salt => salt,
- :password => encrypt_password(salt, params[:password])
- }
- Chef::FileStore.store(
- "openid_node",
- params[:id],
- @registered_node
- )
+ @registered_node = Chef::OpenIDRegistration.new
+ @registered_node.name = params[:id]
+ @registered_node.set_password(params[:password])
+ @registered_node.save
display @registered_node
end
@@ -47,47 +48,27 @@ class OpenidRegister < Application
end
def destroy
- unless Chef::FileStore.has_key?("openid_node", params[:id])
+ begin
+ r = Chef::OpenIDRegistration.load(params[:id])
+ rescue Exception => e
raise BadRequest, "Cannot find the registration for #{params[:id]}"
end
- Chef::FileStore.delete("openid_node", params[:id])
- display({ :message => "Deleted registration for #{params[:id]}"})
- end
-
- def submit
- user = params[:username]
-
- # if we get a user, log them in by putting their username in
- # the session hash.
- unless user.nil?
- session[:username] = user unless user.nil?
- session[:approvals] = []
- session[:notice] = "Your OpenID URL is <b>
- #{url(:controller => "openid_server", :action => "user_page", :username => params[:username])}
- </b><br/><br/>Proceed to step 2 below."
+ r.destroy
+ if content_type == :html
+ redirect url(:registrations)
else
- session[:error] = "Sorry, couldn't log you in. Try again."
+ display({ :message => "Deleted registration for #{params[:id]}"})
end
-
- redirect url(:openid_login)
- end
-
- def logout
- # delete the username from the session hash
- session[:username] = nil
- session[:approvals] = nil
- redirect url(:openid_login)
end
-
- private
- def generate_salt
- salt = Time.now.to_s
- chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
- 1.upto(30) { |i| salt << chars[rand(chars.size-1)] }
- salt
- end
-
- def encrypt_password(salt, password)
- Digest::SHA1.hexdigest("--#{salt}--#{password}--")
+
+ def validate
+ begin
+ r = Chef::OpenIDRegistration.load(params[:id])
+ rescue Exception => e
+ raise BadRequest, "Cannot find the registration for #{params[:id]}"
end
+ r.validated = r.validated ? false : true
+ r.save
+ redirect url(:registrations)
+ end
end