return true if an admin user exists. this is pretty expensive (O(n)), should think of a better way (nuo)
# File lib/chef/webui_user.rb, line 206 def self.admin_exist users = self.cdb_list users.each do |u| user = self.cdb_load(u) if user.admin return user.name end end nil end
List all the Chef::WebUIUser 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
# File lib/chef/webui_user.rb, line 121 def self.cdb_list(inflate=false) rs = Chef::CouchDB.new.list("users", inflate) if inflate rs["rows"].collect { |r| r["value"] } else rs["rows"].collect { |r| r["key"] } end end
Set up our CouchDB design document
# File lib/chef/webui_user.rb, line 200 def self.create_design_document(couchdb=nil) couchdb ||= Chef::CouchDB.new couchdb.create_design_document("users", DESIGN_DOCUMENT) end
Whether or not there is an WebUIUser with this key.
# File lib/chef/webui_user.rb, line 156 def self.has_key?(name) Chef::CouchDB.new.has_key?("webui_user", name) end
Create a Chef::WebUIUser from JSON
# File lib/chef/webui_user.rb, line 113 def self.json_create(o) me = new(o) me.admin = o["admin"] me end
# File lib/chef/webui_user.rb, line 130 def self.list(inflate=false) r = Chef::REST.new(Chef::Config[:chef_server_url]) if inflate response = Hash.new Chef::Search::Query.new.search(:user) do |n| response[n.name] = n unless n.nil? end response else r.get_rest("users") end end
Load a User by name
# File lib/chef/webui_user.rb, line 149 def self.load(name) r = Chef::REST.new(Chef::Config[:chef_server_url]) r.get_rest("users/#{name}") end
Create a new Chef::WebUIUser object.
# File lib/chef/webui_user.rb, line 62 def initialize(opts={}) @name, @salt, @password = opts['name'], opts['salt'], opts['password'] @openid, @couchdb_rev, @couchdb_id = opts['openid'], opts['_rev'], opts['_id'] @admin = false @couchdb = Chef::CouchDB.new end
# File lib/chef/webui_user.rb, line 69 def name=(n) @name = n.gsub(/\./, '_') end
# File lib/chef/webui_user.rb, line 86 def set_openid(given_openid) @openid = given_openid end
Set the password for this object.
# File lib/chef/webui_user.rb, line 78 def set_password(password, confirm_password=password) raise ArgumentError, "Passwords do not match" unless password == confirm_password raise ArgumentError, "Password cannot be blank" if (password.nil? || password.length==0) raise ArgumentError, "Password must be a minimum of 6 characters" if password.length < 6 generate_salt @password = encrypt_password(password) end
Serialize this object as a hash
# File lib/chef/webui_user.rb, line 95 def to_json(*a) attributes = Hash.new recipes = Array.new result = { 'name' => name, 'json_class' => self.class.name, 'salt' => salt, 'password' => password, 'openid' => openid, 'admin' => admin, 'chef_type' => 'webui_user', } result["_id"] = @couchdb_id if @couchdb_id result["_rev"] = @couchdb_rev if @couchdb_rev result.to_json(*a) end
Generated with the Darkfish Rdoc Generator 2.