mirror of
https://github.com/bitechdev/ResolveSpec.git
synced 2026-07-09 12:17:37 +00:00
eee83f9dc6
Tests / Integration Tests (push) Failing after 1s
Tests / Unit Tests (push) Failing after 24s
Build , Vet Test, and Lint / Run Vet Tests (1.23.x) (push) Successful in 59s
Build , Vet Test, and Lint / Run Vet Tests (1.24.x) (push) Successful in 58s
Build , Vet Test, and Lint / Build (push) Successful in 4m37s
Build , Vet Test, and Lint / Lint Code (push) Failing after 5m35s
* Introduced QueryMode to select between stored procedure and direct SQL execution. * Implemented dbCapability to probe for stored procedure existence. * Added table names configuration for direct SQL operations. * Updated DatabaseTwoFactorProvider to support query mode and table names. * Implemented direct SQL methods mirroring stored procedures for TOTP operations. * Added tests for query mode logic and table names validation.
45 lines
1.5 KiB
Go
45 lines
1.5 KiB
Go
package security
|
|
|
|
import "fmt"
|
|
|
|
// KeyStoreTableNames holds the configurable table name used by DatabaseKeyStore
|
|
// in Direct mode. Use DefaultKeyStoreTableNames() for defaults and
|
|
// MergeKeyStoreTableNames() for partial overrides.
|
|
type KeyStoreTableNames struct {
|
|
UserKeys string // default: "user_keys"
|
|
}
|
|
|
|
// DefaultKeyStoreTableNames returns a KeyStoreTableNames with default table names.
|
|
func DefaultKeyStoreTableNames() *KeyStoreTableNames {
|
|
return &KeyStoreTableNames{
|
|
UserKeys: "user_keys",
|
|
}
|
|
}
|
|
|
|
// MergeKeyStoreTableNames returns a copy of base with any non-empty fields from override applied.
|
|
// If override is nil, a copy of base is returned.
|
|
func MergeKeyStoreTableNames(base, override *KeyStoreTableNames) *KeyStoreTableNames {
|
|
if override == nil {
|
|
copied := *base
|
|
return &copied
|
|
}
|
|
merged := *base
|
|
if override.UserKeys != "" {
|
|
merged.UserKeys = override.UserKeys
|
|
}
|
|
return &merged
|
|
}
|
|
|
|
// ValidateKeyStoreTableNames checks that all non-empty table names are valid SQL identifiers.
|
|
func ValidateKeyStoreTableNames(names *KeyStoreTableNames) error {
|
|
if names.UserKeys != "" && !validSQLIdentifier.MatchString(names.UserKeys) {
|
|
return fmt.Errorf("KeyStoreTableNames.UserKeys contains invalid characters: %q", names.UserKeys)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// resolveKeyStoreTableNames merges an optional override with defaults.
|
|
func resolveKeyStoreTableNames(override *KeyStoreTableNames) *KeyStoreTableNames {
|
|
return MergeKeyStoreTableNames(DefaultKeyStoreTableNames(), override)
|
|
}
|