in cmd/saml2alibabacloud/commands/login.go [125:184]
func resolveLoginDetails(account *cfg.IDPAccount, loginFlags *flags.LoginExecFlags) (*creds.LoginDetails, error) {
// log.Printf("loginFlags %+v", loginFlags)
loginDetails := &creds.LoginDetails{URL: account.URL, Username: account.Username, MFAToken: loginFlags.CommonFlags.MFAToken, DuoMFAOption: loginFlags.DuoMFAOption, Provider: account.Provider}
log.Printf("Using IDP Account %s to access %s %s", loginFlags.CommonFlags.IdpAccount, account.Provider, account.URL)
var err error
if !loginFlags.CommonFlags.DisableKeychain {
err = credentials.LookupCredentials(loginDetails, account.Provider)
if err != nil {
if !credentials.IsErrCredentialsNotFound(err) {
return nil, errors.Wrap(err, "error loading saved password")
}
}
}
// log.Printf("%s %s", savedUsername, savedPassword)
// if you supply a username in a flag it takes precedence
if loginFlags.CommonFlags.Username != "" {
loginDetails.Username = loginFlags.CommonFlags.Username
}
// if you supply a password in a flag it takes precedence
if loginFlags.CommonFlags.Password != "" {
loginDetails.Password = loginFlags.CommonFlags.Password
}
// if you supply a cleint_id in a flag it takes precedence
if loginFlags.CommonFlags.ClientID != "" {
loginDetails.ClientID = loginFlags.CommonFlags.ClientID
}
// if you supply a client_secret in a flag it takes precedence
if loginFlags.CommonFlags.ClientSecret != "" {
loginDetails.ClientSecret = loginFlags.CommonFlags.ClientSecret
}
if loginFlags.DownloadBrowser {
loginDetails.DownloadBrowser = loginFlags.DownloadBrowser
} else if account.DownloadBrowser {
loginDetails.DownloadBrowser = account.DownloadBrowser
}
// log.Printf("loginDetails %+v", loginDetails)
// if skip prompt was passed just pass back the flag values
if loginFlags.CommonFlags.SkipPrompt {
return loginDetails, nil
}
err = saml2alibabacloud.PromptForLoginDetails(loginDetails, account.Provider)
if err != nil {
return nil, errors.Wrap(err, "Error occurred accepting input")
}
return loginDetails, nil
}