package main import ( "errors" "fmt" "os" "strings" ) // runCommand führt einen Admin-Unterbefehl aus (kver ...). Im // Container: podman exec kver kver ... func runCommand(args []string) error { switch args[0] { case "reset-link": if len(args) != 2 { return errors.New("Verwendung: kver reset-link ") } return cmdResetLink(args[1]) default: return fmt.Errorf("unbekannter Befehl %q (bekannt: reset-link)", args[0]) } } // cmdResetLink erzeugt einen Passwort-Reset-Link (siehe reset.go) und gibt ihn // aus. KVER_BASE_URL (z. B. https://example.org) macht daraus einen fertigen // Link; ohne steht nur der Pfad da. func cmdResetLink(username string) error { username = sanitizeUsername(username) token, expires, err := createResetToken(username) if errors.Is(err, errUserNotFound) { return fmt.Errorf("Nutzer %q nicht gefunden", username) } else if err != nil { return err } base := strings.TrimSuffix(os.Getenv("KVER_BASE_URL"), "/") fmt.Printf("Reset-Link für %s (gültig bis %s, einmalig):\n\n %s/reset#%s\n\n", username, expires.Format("02.01.2006 15:04 MST"), base, token) fmt.Println("Ältere Reset-Links dieses Nutzers sind damit ungültig.") return nil }