mirror of
https://github.com/kanidm/kanidm.git
synced 2025-02-24 04:57:00 +01:00
Added reference type to schema. No handling exists yet.
This commit is contained in:
parent
0f2518d775
commit
39c5d2f896
|
@ -71,6 +71,7 @@ pub enum SyntaxType {
|
|||
BOOLEAN,
|
||||
SYNTAX_ID,
|
||||
INDEX_ID,
|
||||
REFERENCE_UUID,
|
||||
}
|
||||
|
||||
impl TryFrom<&str> for SyntaxType {
|
||||
|
@ -91,6 +92,8 @@ impl TryFrom<&str> for SyntaxType {
|
|||
Ok(SyntaxType::SYNTAX_ID)
|
||||
} else if value == "INDEX_ID" {
|
||||
Ok(SyntaxType::INDEX_ID)
|
||||
} else if value == "REFERENCE_UUID" {
|
||||
Ok(SyntaxType::REFERENCE_UUID)
|
||||
} else {
|
||||
Err(())
|
||||
}
|
||||
|
@ -168,6 +171,9 @@ impl SchemaAttribute {
|
|||
SyntaxType::SYNTAX_ID => self.validate_syntax(v),
|
||||
SyntaxType::INDEX_ID => self.validate_index(v),
|
||||
SyntaxType::UUID => self.validate_uuid(v),
|
||||
// Syntaxwise, these are the same.
|
||||
// Referential integrity is handled in plugins.
|
||||
SyntaxType::REFERENCE_UUID => self.validate_uuid(v),
|
||||
SyntaxType::UTF8STRING_INSENSITIVE => self.validate_utf8string_insensitive(v),
|
||||
SyntaxType::UTF8STRING_PRINCIPAL => self.validate_principal(v),
|
||||
_ => Ok(()),
|
||||
|
@ -205,6 +211,14 @@ impl SchemaAttribute {
|
|||
acc
|
||||
}
|
||||
}),
|
||||
// This is the same as a UUID, refint is a plugin
|
||||
SyntaxType::REFERENCE_UUID => ava.iter().fold(Ok(()), |acc, v| {
|
||||
if acc.is_ok() {
|
||||
self.validate_uuid(v)
|
||||
} else {
|
||||
acc
|
||||
}
|
||||
}),
|
||||
SyntaxType::INDEX_ID => ava.iter().fold(Ok(()), |acc, v| {
|
||||
if acc.is_ok() {
|
||||
self.validate_index(v)
|
||||
|
@ -258,6 +272,7 @@ impl SchemaAttribute {
|
|||
SyntaxType::SYNTAX_ID => self.normalise_syntax(v),
|
||||
SyntaxType::INDEX_ID => self.normalise_index(v),
|
||||
SyntaxType::UUID => self.normalise_uuid(v),
|
||||
SyntaxType::REFERENCE_UUID => self.normalise_uuid(v),
|
||||
SyntaxType::UTF8STRING_INSENSITIVE => self.normalise_utf8string_insensitive(v),
|
||||
SyntaxType::UTF8STRING_PRINCIPAL => self.normalise_principal(v),
|
||||
_ => v.clone(),
|
||||
|
@ -689,7 +704,7 @@ impl SchemaInner {
|
|||
secret: false,
|
||||
multivalue: true,
|
||||
index: vec![IndexType::EQUALITY],
|
||||
syntax: SyntaxType::UTF8STRING_INSENSITIVE,
|
||||
syntax: SyntaxType::REFERENCE_UUID,
|
||||
},
|
||||
);
|
||||
// ssh_publickey // multi
|
||||
|
@ -734,7 +749,7 @@ impl SchemaInner {
|
|||
secret: false,
|
||||
multivalue: true,
|
||||
index: vec![IndexType::EQUALITY],
|
||||
syntax: SyntaxType::UTF8STRING_INSENSITIVE,
|
||||
syntax: SyntaxType::REFERENCE_UUID,
|
||||
},
|
||||
);
|
||||
|
||||
|
|
Loading…
Reference in a new issue