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,
|
BOOLEAN,
|
||||||
SYNTAX_ID,
|
SYNTAX_ID,
|
||||||
INDEX_ID,
|
INDEX_ID,
|
||||||
|
REFERENCE_UUID,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TryFrom<&str> for SyntaxType {
|
impl TryFrom<&str> for SyntaxType {
|
||||||
|
@ -91,6 +92,8 @@ impl TryFrom<&str> for SyntaxType {
|
||||||
Ok(SyntaxType::SYNTAX_ID)
|
Ok(SyntaxType::SYNTAX_ID)
|
||||||
} else if value == "INDEX_ID" {
|
} else if value == "INDEX_ID" {
|
||||||
Ok(SyntaxType::INDEX_ID)
|
Ok(SyntaxType::INDEX_ID)
|
||||||
|
} else if value == "REFERENCE_UUID" {
|
||||||
|
Ok(SyntaxType::REFERENCE_UUID)
|
||||||
} else {
|
} else {
|
||||||
Err(())
|
Err(())
|
||||||
}
|
}
|
||||||
|
@ -168,6 +171,9 @@ impl SchemaAttribute {
|
||||||
SyntaxType::SYNTAX_ID => self.validate_syntax(v),
|
SyntaxType::SYNTAX_ID => self.validate_syntax(v),
|
||||||
SyntaxType::INDEX_ID => self.validate_index(v),
|
SyntaxType::INDEX_ID => self.validate_index(v),
|
||||||
SyntaxType::UUID => self.validate_uuid(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_INSENSITIVE => self.validate_utf8string_insensitive(v),
|
||||||
SyntaxType::UTF8STRING_PRINCIPAL => self.validate_principal(v),
|
SyntaxType::UTF8STRING_PRINCIPAL => self.validate_principal(v),
|
||||||
_ => Ok(()),
|
_ => Ok(()),
|
||||||
|
@ -205,6 +211,14 @@ impl SchemaAttribute {
|
||||||
acc
|
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| {
|
SyntaxType::INDEX_ID => ava.iter().fold(Ok(()), |acc, v| {
|
||||||
if acc.is_ok() {
|
if acc.is_ok() {
|
||||||
self.validate_index(v)
|
self.validate_index(v)
|
||||||
|
@ -258,6 +272,7 @@ impl SchemaAttribute {
|
||||||
SyntaxType::SYNTAX_ID => self.normalise_syntax(v),
|
SyntaxType::SYNTAX_ID => self.normalise_syntax(v),
|
||||||
SyntaxType::INDEX_ID => self.normalise_index(v),
|
SyntaxType::INDEX_ID => self.normalise_index(v),
|
||||||
SyntaxType::UUID => self.normalise_uuid(v),
|
SyntaxType::UUID => self.normalise_uuid(v),
|
||||||
|
SyntaxType::REFERENCE_UUID => self.normalise_uuid(v),
|
||||||
SyntaxType::UTF8STRING_INSENSITIVE => self.normalise_utf8string_insensitive(v),
|
SyntaxType::UTF8STRING_INSENSITIVE => self.normalise_utf8string_insensitive(v),
|
||||||
SyntaxType::UTF8STRING_PRINCIPAL => self.normalise_principal(v),
|
SyntaxType::UTF8STRING_PRINCIPAL => self.normalise_principal(v),
|
||||||
_ => v.clone(),
|
_ => v.clone(),
|
||||||
|
@ -689,7 +704,7 @@ impl SchemaInner {
|
||||||
secret: false,
|
secret: false,
|
||||||
multivalue: true,
|
multivalue: true,
|
||||||
index: vec![IndexType::EQUALITY],
|
index: vec![IndexType::EQUALITY],
|
||||||
syntax: SyntaxType::UTF8STRING_INSENSITIVE,
|
syntax: SyntaxType::REFERENCE_UUID,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
// ssh_publickey // multi
|
// ssh_publickey // multi
|
||||||
|
@ -734,7 +749,7 @@ impl SchemaInner {
|
||||||
secret: false,
|
secret: false,
|
||||||
multivalue: true,
|
multivalue: true,
|
||||||
index: vec![IndexType::EQUALITY],
|
index: vec![IndexType::EQUALITY],
|
||||||
syntax: SyntaxType::UTF8STRING_INSENSITIVE,
|
syntax: SyntaxType::REFERENCE_UUID,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue