lib/conjur/command/users.rb in conjur-cli-4.24.0 vs lib/conjur/command/users.rb in conjur-cli-4.25.0
- old
+ new
@@ -33,24 +33,58 @@
c.desc "UID number to be associated with user (optional)"
c.flag [:uidnumber]
acting_as_option(c)
+ interactive_option c
+
c.action do |global_options,options,args|
- login = require_arg(args, 'login')
+ login = args.shift
- opts = options.slice(:ownerid, :uidnumber)
- if opts[:uidnumber]
- raise "uidnumber should be integer" unless /\d+/ =~ opts[:uidnumber]
- opts[:uidnumber] = opts[:uidnumber].to_i
- end
+ interactive = options[:interactive] || login.blank?
- if options[:p]
- opts[:password] = prompt_for_password
+ groupid = options[:ownerid]
+ uidnumber = options[:uidnumber]
+ password = nil
+ exit_now! "uidnumber should be integer" unless uidnumber.blank? || /\d+/ =~ uidnumber
+
+ if interactive
+ login ||= prompt_for_id :user, "login name"
+
+ groupid ||= prompt_for_group hint: "press enter to have the user own their own record"
+ uidnumber ||= prompt_for_uidnumber
+ password = prompt_for_password unless options[:"no-password"]
+
+ attributes = {
+ "Login" => login,
+ "Owner" => groupid,
+ "UID Number" => uidnumber
+ }
+ attributes["Password"] = "********" unless password.blank?
+ prompt_to_confirm :user, attributes
end
- display api.create_user(login, opts)
+ if options[:p] && password.blank?
+ password = prompt_for_password
+ end
+
+ user_options = { }
+ user_options[:ownerid] = groupid if groupid
+ user_options[:uidnumber] = uidnumber.to_i if uidnumber
+ user_options[:password] = password if password
+ user = api.create_user(login, user_options)
+
+ puts "User created"
+ display user
+
+ if interactive
+ public_key = prompt_for_public_key
+ if public_key
+ api.add_public_key user.login, public_key
+ puts "Public key added"
+ end
+ end
end
end
user.desc "Show a user"
user.arg_name "id"
@@ -62,21 +96,23 @@
end
user.desc "Decommission a user"
user.arg_name "id"
user.command :retire do |c|
+ retire_options c
+
c.action do |global_options,options,args|
id = require_arg(args, 'id')
user = api.user(id)
+ validate_retire_privileges user, options
+
retire_resource user
retire_role user
+ give_away_resource user, options
- puts "Giving ownership to 'attic'"
- user.resource.give_to api.user('attic')
-
puts "User retired"
end
end
user.desc "List users"
@@ -123,9 +159,11 @@
raise "Uidnumber should be integer" unless /\d+/ =~ uidnumber
uidnumber=uidnumber.to_i
display api.find_users(uidnumber: uidnumber)
end
end
-
end
-
+
+ def self.prompt_for_uidnumber
+ prompt_for_idnumber "uid number"
+ end
end