feat(auth): integrate authentication with installation lifecycle
This commit is contained in:
@@ -364,6 +364,26 @@ func parseSetupArgs(args []string) (setup.Request, error) {
|
||||
target = &request.Answers.GitSSHKeyFile
|
||||
case "--git-known-hosts-file":
|
||||
target = &request.Answers.GitKnownHostsFile
|
||||
case "--auth-mode":
|
||||
target = &request.Answers.AuthMode
|
||||
case "--auth-public-url":
|
||||
target = &request.Answers.AuthPublicURL
|
||||
case "--auth-admin-user":
|
||||
target = &request.Answers.AuthAdminUser
|
||||
case "--auth-admin-display-name":
|
||||
target = &request.Answers.AuthAdminDisplayName
|
||||
case "--auth-password-file":
|
||||
target = &request.Answers.AuthPasswordFile
|
||||
case "--auth-issuer":
|
||||
target = &request.Answers.AuthIssuer
|
||||
case "--auth-client-id":
|
||||
target = &request.Answers.AuthClientID
|
||||
case "--auth-authentik-base-url":
|
||||
target = &request.Answers.AuthAuthentikBaseURL
|
||||
case "--auth-user-group":
|
||||
target = &request.Answers.AuthUserGroup
|
||||
case "--auth-admin-group":
|
||||
target = &request.Answers.AuthAdminGroup
|
||||
default:
|
||||
return setup.Request{}, fmt.Errorf("unknown setup option %q", flag)
|
||||
}
|
||||
|
||||
@@ -43,6 +43,22 @@ func TestBackupCommandParsesSafeTransactionalOptions(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetupArgumentsRequireCompleteNonInteractiveAuthenticationInputs(t *testing.T) {
|
||||
request, err := parseSetupArgs([]string{
|
||||
"--non-interactive", "--auth-mode", "local", "--auth-public-url", "http://127.0.0.1:8080",
|
||||
"--auth-admin-user", "admin", "--auth-admin-display-name", "Initial Admin", "--auth-password-file", "/protected/password",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if request.Answers.AuthMode != "local" || request.Answers.AuthPasswordFile != "/protected/password" {
|
||||
t.Fatalf("setup request = %#v", request)
|
||||
}
|
||||
if _, err := parseSetupArgs([]string{"--auth-mode", "local", "--auth-mode", "oidc"}); err == nil {
|
||||
t.Fatal("duplicate --auth-mode was accepted")
|
||||
}
|
||||
}
|
||||
|
||||
func TestBackupCommandDispatchesWithoutDockerAndPrintsCustodyWarning(t *testing.T) {
|
||||
installation := config.Installation{Path: "/tmp/thothii-installation.yaml"}
|
||||
var received backup.CreateRequest
|
||||
@@ -1469,7 +1485,7 @@ case " $* " in
|
||||
if [ -n "${THT_FAKE_CONFIG:-}" ]; then
|
||||
printf '%s\n' "$THT_FAKE_CONFIG"
|
||||
else
|
||||
printf '%s\n' '{"volumes":{"settings":{},"pi-state":{},"workspace-registry":{},"workspace-secrets":{},"sessions":{},"qdrant-data":{},"embedding-models":{}},"services":{"core":{"image":"thothii-core:local","environment":{"THT_LLM_URL":"https://llm.example.invalid"}}}}'
|
||||
printf '%s\n' '{"volumes":{"settings":{},"pi-state":{},"workspace-registry":{},"workspace-secrets":{},"sessions":{},"qdrant-data":{},"embedding-models":{},"auth-state":{}},"services":{"core":{"image":"thothii-core:local","environment":{"THT_LLM_URL":"https://llm.example.invalid"}}}}'
|
||||
fi ;;
|
||||
*" run --rm --no-deps --no-TTY session-migrate "*)
|
||||
if [ "${THT_FAKE_MIGRATION_EXIT:-0}" -ne 0 ]; then
|
||||
|
||||
Reference in New Issue
Block a user