feat: bootstrap console administrator

This commit is contained in:
2026-09-21 05:13:47 +08:00
parent 6af20c2cd4
commit 6a25a718c4
5 changed files with 147 additions and 10 deletions

View File

@@ -258,6 +258,11 @@ func runBootstrap(args []string) error {
flags.StringVar(&in.Environment, "environment", "", "environment name")
flags.StringVar(&in.Queue, "queue", "", "initial queue name")
flags.StringVar(&output, "output", "", "new private credentials JSON file")
var consoleUsername, consoleDisplayName, consolePassword string
var consolePasswordStdin bool
flags.StringVar(&consoleUsername, "console-username", "", "optional first console administrator username")
flags.StringVar(&consoleDisplayName, "console-display-name", "", "optional console administrator display name")
flags.BoolVar(&consolePasswordStdin, "console-password-stdin", false, "read the first console administrator password from stdin")
flags.BoolVar(&in.WorkerAccess, "worker-access", false, "also grant Worker connect and consume actions for development")
flags.BoolVar(&in.ScheduleAccess, "schedule-access", false, "also grant schedule read and manage actions for development")
flags.BoolVar(&in.EventAccess, "event-access", false, "also grant result subscription read, manage and consume actions")
@@ -274,6 +279,20 @@ func runBootstrap(args []string) error {
if flags.NArg() != 0 || output == "" {
return errors.New("--output and named resource arguments are required")
}
if consolePasswordStdin {
raw, err := io.ReadAll(io.LimitReader(os.Stdin, 1025))
if err != nil {
return errors.New("console administrator password could not be read")
}
consolePassword = strings.TrimRight(string(raw), "\r\n")
}
if consoleUsername == "" && (consolePasswordStdin || consoleDisplayName != "") {
return errors.New("--console-username is required with console administrator options")
}
if consoleUsername != "" && !consolePasswordStdin {
return errors.New("--console-password-stdin is required when creating the first console administrator")
}
in.ConsoleUsername, in.ConsoleDisplayName, in.ConsolePassword = consoleUsername, consoleDisplayName, consolePassword
cfg, err := config.Load()
if err != nil {
return err