summaryrefslogtreecommitdiff
path: root/chef/lib/chef/openid_registration.rb
diff options
context:
space:
mode:
Diffstat (limited to 'chef/lib/chef/openid_registration.rb')
-rw-r--r--chef/lib/chef/openid_registration.rb50
1 files changed, 24 insertions, 26 deletions
diff --git a/chef/lib/chef/openid_registration.rb b/chef/lib/chef/openid_registration.rb
index f7bb9595d9..7af720cabd 100644
--- a/chef/lib/chef/openid_registration.rb
+++ b/chef/lib/chef/openid_registration.rb
@@ -6,9 +6,9 @@
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -19,18 +19,16 @@
require 'chef/config'
require 'chef/mixin/params_validate'
require 'chef/couchdb'
-require 'chef/index_queue'
require 'digest/sha1'
require 'chef/json_compat'
class Chef
class OpenIDRegistration
-
+
attr_accessor :name, :salt, :validated, :password, :couchdb_rev, :admin
-
+
include Chef::Mixin::ParamsValidate
- include Chef::IndexQueue::Indexable
-
+
DESIGN_DOCUMENT = {
"version" => 3,
"language" => "javascript",
@@ -77,7 +75,7 @@ class Chef
},
},
}
-
+
# Create a new Chef::OpenIDRegistration object.
def initialize()
@name = nil
@@ -88,18 +86,18 @@ class Chef
@couchdb_rev = nil
@couchdb = Chef::CouchDB.new
end
-
+
def name=(n)
@name = n.gsub(/\./, '_')
end
-
+
# Set the password for this object.
- def set_password(password)
+ def set_password(password)
@salt = generate_salt
- @password = encrypt_password(@salt, password)
+ @password = encrypt_password(@salt, password)
end
-
- # Serialize this object as a hash
+
+ # Serialize this object as a hash
def to_json(*a)
attributes = Hash.new
recipes = Array.new
@@ -115,7 +113,7 @@ class Chef
result["_rev"] = @couchdb_rev if @couchdb_rev
result.to_json(*a)
end
-
+
# Create a Chef::Node from JSON
def self.json_create(o)
me = new
@@ -127,7 +125,7 @@ class Chef
me.couchdb_rev = o["_rev"] if o.has_key?("_rev")
me
end
-
+
# List all the Chef::OpenIDRegistration objects in the CouchDB. If inflate is set to true, you will get
# the full list of all registration objects. Otherwise, you'll just get the IDs
def self.list(inflate=false)
@@ -138,50 +136,50 @@ class Chef
rs["rows"].collect { |r| r["key"] }
end
end
-
+
def self.cdb_list(*args)
list(*args)
end
-
+
# Load an OpenIDRegistration by name from CouchDB
def self.load(name)
Chef::CouchDB.new.load("openid_registration", name)
end
-
+
# Whether or not there is an OpenID Registration with this key.
def self.has_key?(name)
Chef::CouchDB.new.has_key?("openid_registration", name)
end
-
+
# Remove this OpenIDRegistration from the CouchDB
def destroy
@couchdb.delete("openid_registration", @name, @couchdb_rev)
end
-
+
# Save this OpenIDRegistration to the CouchDB
def save
results = @couchdb.store("openid_registration", @name, self)
@couchdb_rev = results["rev"]
end
-
+
# Set up our CouchDB design document
def self.create_design_document(couchdb=nil)
couchdb ||= Chef::CouchDB.new
couchdb.create_design_document("registrations", DESIGN_DOCUMENT)
end
-
+
protected
-
+
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}--")
end
-
+
end
end