()
| 259 | } |
| 260 | |
| 261 | func (cmd *LoginCommand) authenticate() error { |
| 262 | var err error |
| 263 | credentials := make(map[string]string) |
| 264 | |
| 265 | prompts, err := cmd.Actor.GetLoginPrompts() |
| 266 | if err != nil { |
| 267 | return err |
| 268 | } |
| 269 | |
| 270 | nonSensitivePrompts, sensitivePrompts := cmd.groupPrompts(prompts) |
| 271 | |
| 272 | if value, ok := prompts["username"]; ok { |
| 273 | credentials["username"], err = cmd.getFlagValOrPrompt(&cmd.Username, value, true) |
| 274 | if err != nil { |
| 275 | return err |
| 276 | } |
| 277 | } |
| 278 | |
| 279 | for key, prompt := range nonSensitivePrompts { |
| 280 | credentials[key], err = cmd.UI.DisplayTextPrompt(prompt.DisplayName) |
| 281 | if err != nil { |
| 282 | return err |
| 283 | } |
| 284 | } |
| 285 | |
| 286 | for i := 0; i < maxLoginTries; i++ { |
| 287 | // ensure that password gets prompted before other codes (eg. mfa code) |
| 288 | if prompt, ok := prompts["password"]; ok { |
| 289 | credentials["password"], err = cmd.getFlagValOrPrompt(&cmd.Password, prompt, false) |
| 290 | if err != nil { |
| 291 | return err |
| 292 | } |
| 293 | } |
| 294 | |
| 295 | for key, prompt := range sensitivePrompts { |
| 296 | credentials[key], err = cmd.UI.DisplayPasswordPrompt(prompt.DisplayName) |
| 297 | if err != nil { |
| 298 | return err |
| 299 | } |
| 300 | } |
| 301 | |
| 302 | cmd.UI.DisplayNewline() |
| 303 | cmd.UI.DisplayText("Authenticating...") |
| 304 | |
| 305 | err = cmd.Actor.Authenticate(credentials, cmd.Origin, constant.GrantTypePassword) |
| 306 | |
| 307 | if err == nil { |
| 308 | cmd.UI.DisplayOK() |
| 309 | break |
| 310 | } |
| 311 | |
| 312 | cmd.UI.DisplayWarning(translatableerror.ConvertToTranslatableError(err).Error()) |
| 313 | cmd.UI.DisplayNewline() |
| 314 | |
| 315 | if _, ok := err.(uaa.AccountLockedError); ok { |
| 316 | break |
| 317 | } |
| 318 | } |
no test coverage detected