Files

59 lines
1.8 KiB
JavaScript

const excludeAttributes = [
"password", "otp_code", "otp_expires_at", 'must_change_password', 'password_expires_at', "needs_intro",
"personal_info.name.given_name",
"personal_info.name.middle_name",
"personal_info.name.last_name",
"personal_info.name.extension_name",
"personal_info.addresses[]",
"personal_info.addresses[].city",
"personal_info.addresses[].country",
"personal_info.addresses[].street",
"personal_info.addresses[].zip",
"personal_info.addresses[].address_type",
"personal_info.addresses[].state",
"personal_info.phone_number[]",
"personal_info.phone_number[].country_code",
"personal_info.phone_number[].number",
"personal_info.phone_number[].phone_type",
];
const jsonbSchemas = {
personal_info: {
name: {
full_name: { type: "text", label: "Full Name", order: 2 }, // ← slot 2
},
date_of_birth: { type: "date", label: "Date of Birth", order: 4 },
occupation: { type: "text", label: "Occupation", order: 5 },
// addresses: {
// full_address: { type: "text", label: "Full Address" },
// },
// phone_number: {
// full_number: { type: "text", label: "Phone Number" },
// },
},
};
// Different exclude sets per role
const adminExclude = [
...excludeAttributes,
// admins can see audit fields, so nothing extra excluded
];
const userExclude = [
...excludeAttributes,
// regular users cannot see audit trails
"created_by", "updated_by", "deleted_by",
"deleted_at",
];
const computedAttributes = [
{
key: "groups",
label: "Groups",
type: "array", // tells the paginator this is a pre-joined association array
order: 5,
filterable: true, // handled specially in the controller — see extractGroupsFilter()
},
];
module.exports = { excludeAttributes, adminExclude, userExclude, jsonbSchemas, computedAttributes };