class SimplyGenius::Atmos::Commands::User

Public Class Methods

description() click to toggle source
# File lib/simplygenius/atmos/commands/user.rb, line 10
def self.description
  "Manages users in the cloud provider"
end

Public Instance Methods

execute() click to toggle source
# File lib/simplygenius/atmos/commands/user.rb, line 46
def execute

  Atmos.config.provider.auth_manager.authenticate(ENV) do |auth_env|
    ClimateControl.modify(auth_env) do
      manager = Atmos.config.provider.user_manager
      user = manager.create_user(username)
      user.merge!(manager.set_groups(username, group_list, force: force?)) if group_list.present?
      user.merge!(manager.enable_login(username, force: force?)) if login?
      user.merge!(manager.enable_mfa(username, force: force?)) if mfa?
      user.merge!(manager.enable_access_keys(username, force: force?)) if key?
      user.merge!(manager.set_public_key(username, public_key, force: force?)) if public_key.present?

      logger.info "\nUser created:\n#{display user}\n"

      if  mfa? && user[:mfa_secret]
        save_mfa = agree("Save the MFA secret for runtime integration with auth? ") {|q|
          q.default = 'y'
        }
        Atmos::Otp.instance.save if save_mfa
      end

    end
  end

end