user.xml
user.xml extends user objects and user-related backend UI.
Use it when a package needs additional user attributes, user panel tabs, or user profile tabs.
Attributes
Add user attributes under <attributes>.
<user>
<attributes>
<attribute>vendor.package.setting</attribute>
<attribute encrypt="1">vendor.package.secret</attribute>
</attributes>
</user>Use encrypt="1" for sensitive values that should be stored encrypted.
Profile Tabs
Use <profile> to add tabs to the user profile window.
<profile>
<tab name="vendor_package">
<text>Package Settings</text>
<image>fa fa-user</image>
<template>OPT_DIR/vendor/package/templates/user_profile.html</template>
</tab>
</profile>Template form field names should match the user attribute names when the UI stores user attributes directly.
QUIQQER reads backend administration tabs from the first window element. Profile tabs are read from user/profile/tab. Keep tab names unique within the target panel.
Real Package Shape
quiqqer/frontend-users adds user attributes used during registration, activation, and email verification:
<user>
<attributes>
<attribute>quiqqer.frontendUsers.welcomeMailSent</attribute>
<attribute>quiqqer.frontendUsers.registrationProject</attribute>
<attribute>quiqqer.frontendUsers.registrationProjectLang</attribute>
<attribute>quiqqer.frontendUsers.emailVerified</attribute>
<attribute>quiqqer.frontendUsers.useGravatarIcon</attribute>
</attributes>
</user>quiqqer/dashboard adds attributes and a profile tab:
<user>
<attributes>
<attribute>quiqqer.dashboard.isDisabled</attribute>
<attribute>quiqqer.dashboard.cardSettings</attribute>
</attributes>
<profile>
<tab name="quiqqer_dashboard">
<text>Dashboard</text>
<image>fa fa-tachometer</image>
<template>OPT_DIR/quiqqer/dashboard/templates/user_profile.html</template>
</tab>
</profile>
</user>Practical Checklist
Before adding user.xml:
- Use package-scoped user attribute names.
- Encrypt sensitive attributes.
- Add profile or backend tabs only when users or administrators need UI for the data.
- Keep template paths stable and package-owned.
- Verify PHP code reads and writes the same attribute names.
