{"record":{"id":"92af953f1b804811","repo":"abpframework/abp","slug":"username-name-is-missing","errorCode":null,"errorMessage":"Username name is missing!","messagePattern":"Username name is missing!","errorType":"validation","errorClass":"CliUsageException","httpStatus":null,"severity":"error","filePath":"framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/LoginCommand.cs","lineNumber":43,"sourceCode":"    public IRemoteServiceExceptionHandler RemoteServiceExceptionHandler { get; }\n\n    public LoginCommand(AuthService authService,\n        ICancellationTokenProvider cancellationTokenProvider,\n        IRemoteServiceExceptionHandler remoteServiceExceptionHandler)\n    {\n        AuthService = authService;\n        CancellationTokenProvider = cancellationTokenProvider;\n        RemoteServiceExceptionHandler = remoteServiceExceptionHandler;\n        Logger = NullLogger<LoginCommand>.Instance;\n    }\n\n    public async Task ExecuteAsync(CommandLineArgs commandLineArgs)\n    {\n        if (!commandLineArgs.Options.ContainsKey(\"device\"))\n        {\n            if (commandLineArgs.Target.IsNullOrEmpty())\n            {\n                throw new CliUsageException(\n                    \"Username name is missing!\" +\n                    Environment.NewLine + Environment.NewLine +\n                    GetUsageInfo()\n                );\n            }\n\n            var organization = commandLineArgs.Options.GetOrNull(Options.Organization.Short, Options.Organization.Long);\n\n            if (await HasMultipleOrganizationAndThisNotSpecified(commandLineArgs, organization))\n            {\n                return;\n            }\n\n            var password = commandLineArgs.Options.GetOrNull(Options.Password.Short, Options.Password.Long);\n            if (password == null)\n            {\n                Console.Write(\"Password: \");\n                password = ConsoleHelper.ReadSecret();","sourceCodeStart":25,"sourceCodeEnd":61,"githubUrl":"https://github.com/abpframework/abp/blob/7ed43b1931b9df46a50c0c59148a18645641d0df/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/LoginCommand.cs#L25-L61","documentation":"Thrown by LoginCommand.ExecuteAsync when the --device flag is not set and the username (commandLineArgs.Target) is null or empty. The `abp login` command requires a username as a positional argument unless using device-based authentication flow. The error includes usage info via GetUsageInfo().","triggerScenarios":"Running `abp login` without a username and without the --device flag. commandLineArgs.Target.IsNullOrEmpty() returns true and the 'device' option key is absent from commandLineArgs.Options.","commonSituations":"Developer forgets to type the username, uses `--username name` instead of a positional argument, or expects an interactive prompt that does not exist for the username field.","solutions":["Provide the username as a positional argument: `abp login myuser@example.com -p mypassword`","Alternatively use device authentication: `abp login --device` which does not require a positional username","Note: the password can be passed via -p flag or will be prompted interactively, but the username must be positional"],"exampleFix":"// before\nabp login\n\n// after\nabp login myuser@example.com\n// or\nabp login --device","handlingStrategy":"validation","validationCode":"// Validate username before running login\nvar useDeviceFlow = commandLineArgs.Options.ContainsKey(\"device\");\nif (!useDeviceFlow && string.IsNullOrWhiteSpace(commandLineArgs.Target))\n{\n    Console.Error.WriteLine(\"Error: Username is required (positional) or use --device for device flow.\");\n    return;\n}","typeGuard":null,"tryCatchPattern":"try\n{\n    await loginCommand.ExecuteAsync(commandLineArgs);\n}\ncatch (CliUsageException ex) when (ex.Message.Contains(\"Username name is missing\"))\n{\n    logger.LogError(\"Provide username positionally: abp login <email> or use --device\");\n}","preventionTips":["Pass the username as the first positional argument, not as a named option","Use --device for browser-based device authentication if you prefer not to type credentials","Document the positional username convention in team scripts"],"tags":["cli","abp-cli","missing-argument","authentication","validation"],"backgroundTag":null,"analyzedSha":"7ed43b1931b9df46a50c0c59148a18645641d0df","analyzedAt":"2026-08-13T16:26:11.351Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}