Fix MS365 attributes handling

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
Bryan Frimin
2026-03-09 23:15:43 +01:00
parent 1d8ce190c3
commit dd3885ac54
9 changed files with 1280 additions and 172 deletions

View File

@@ -45,21 +45,12 @@ func UserSchema() schema.Schema {
schema.ComplexParams{
Name: "name",
SubAttributes: []schema.SimpleParams{
schema.SimpleStringParams(
schema.StringParams{
Name: "formatted",
},
),
schema.SimpleStringParams(
schema.StringParams{
Name: "familyName",
},
),
schema.SimpleStringParams(
schema.StringParams{
Name: "givenName",
},
),
schema.SimpleStringParams(schema.StringParams{Name: "formatted"}),
schema.SimpleStringParams(schema.StringParams{Name: "familyName"}),
schema.SimpleStringParams(schema.StringParams{Name: "givenName"}),
schema.SimpleStringParams(schema.StringParams{Name: "middleName"}),
schema.SimpleStringParams(schema.StringParams{Name: "honorificPrefix"}),
schema.SimpleStringParams(schema.StringParams{Name: "honorificSuffix"}),
},
},
),
@@ -75,30 +66,108 @@ func UserSchema() schema.Schema {
Name: "emails",
MultiValued: true,
SubAttributes: []schema.SimpleParams{
schema.SimpleStringParams(
schema.StringParams{
Name: "value",
},
),
schema.SimpleStringParams(
schema.StringParams{
Name: "type",
},
),
schema.SimpleBooleanParams(
schema.BooleanParams{
Name: "primary",
},
),
schema.SimpleStringParams(schema.StringParams{Name: "value"}),
schema.SimpleStringParams(schema.StringParams{Name: "type"}),
schema.SimpleBooleanParams(schema.BooleanParams{Name: "primary"}),
schema.SimpleStringParams(schema.StringParams{Name: "display"}),
},
},
),
schema.ComplexCoreAttribute(
schema.ComplexParams{
Name: "phoneNumbers",
MultiValued: true,
SubAttributes: []schema.SimpleParams{
schema.SimpleStringParams(schema.StringParams{Name: "value"}),
schema.SimpleStringParams(schema.StringParams{Name: "type"}),
schema.SimpleBooleanParams(schema.BooleanParams{Name: "primary"}),
schema.SimpleStringParams(schema.StringParams{Name: "display"}),
},
},
),
schema.ComplexCoreAttribute(
schema.ComplexParams{
Name: "addresses",
MultiValued: true,
SubAttributes: []schema.SimpleParams{
schema.SimpleStringParams(schema.StringParams{Name: "formatted"}),
schema.SimpleStringParams(schema.StringParams{Name: "streetAddress"}),
schema.SimpleStringParams(schema.StringParams{Name: "locality"}),
schema.SimpleStringParams(schema.StringParams{Name: "region"}),
schema.SimpleStringParams(schema.StringParams{Name: "postalCode"}),
schema.SimpleStringParams(schema.StringParams{Name: "country"}),
schema.SimpleStringParams(schema.StringParams{Name: "type"}),
schema.SimpleBooleanParams(schema.BooleanParams{Name: "primary"}),
},
},
),
schema.ComplexCoreAttribute(
schema.ComplexParams{
Name: "roles",
MultiValued: true,
SubAttributes: []schema.SimpleParams{
schema.SimpleStringParams(schema.StringParams{Name: "value"}),
schema.SimpleStringParams(schema.StringParams{Name: "display"}),
schema.SimpleStringParams(schema.StringParams{Name: "type"}),
schema.SimpleBooleanParams(schema.BooleanParams{Name: "primary"}),
},
},
),
schema.SimpleCoreAttribute(
schema.SimpleStringParams(
schema.StringParams{
Name: "title",
},
),
schema.SimpleStringParams(schema.StringParams{Name: "title"}),
),
schema.SimpleCoreAttribute(
schema.SimpleStringParams(schema.StringParams{Name: "userType"}),
),
schema.SimpleCoreAttribute(
schema.SimpleStringParams(schema.StringParams{Name: "nickName"}),
),
schema.SimpleCoreAttribute(
schema.SimpleStringParams(schema.StringParams{Name: "preferredLanguage"}),
),
schema.SimpleCoreAttribute(
schema.SimpleStringParams(schema.StringParams{Name: "locale"}),
),
schema.SimpleCoreAttribute(
schema.SimpleStringParams(schema.StringParams{Name: "timezone"}),
),
schema.SimpleCoreAttribute(
schema.SimpleReferenceParams(schema.ReferenceParams{Name: "profileUrl"}),
),
},
}
}
func EnterpriseUserSchema() schema.Schema {
return schema.Schema{
ID: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
Name: optional.NewString("EnterpriseUser"),
Description: optional.NewString("Enterprise User Extension"),
Attributes: []schema.CoreAttribute{
schema.SimpleCoreAttribute(
schema.SimpleStringParams(schema.StringParams{Name: "employeeNumber"}),
),
schema.SimpleCoreAttribute(
schema.SimpleStringParams(schema.StringParams{Name: "costCenter"}),
),
schema.SimpleCoreAttribute(
schema.SimpleStringParams(schema.StringParams{Name: "organization"}),
),
schema.SimpleCoreAttribute(
schema.SimpleStringParams(schema.StringParams{Name: "division"}),
),
schema.SimpleCoreAttribute(
schema.SimpleStringParams(schema.StringParams{Name: "department"}),
),
schema.ComplexCoreAttribute(
schema.ComplexParams{
Name: "manager",
SubAttributes: []schema.SimpleParams{
schema.SimpleStringParams(schema.StringParams{Name: "value"}),
schema.SimpleReferenceParams(schema.ReferenceParams{Name: "$ref"}),
schema.SimpleStringParams(schema.StringParams{Name: "displayName"}),
},
},
),
},
}