Merged
Conversation
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds Email as a new profile field type, extending the existing catalog with backend normalization, workflow support, frontend input support, updated API schema, and regression tests.
Changes
Backend (PHP)
lib/Enum/FieldType.php: addedEMAIL = 'email'and included it invalues()lib/Service/FieldValueService.php: addednormalizeEmailValue()usingFILTER_VALIDATE_EMAIL; includes email in normalization match and text-like search behaviorlib/Workflow/UserProfileFieldCheck.php: added email operators (is-set,not-is-set,is,not-is,contains,not-contains); forcontains/not-contains, skips strict email normalization and performs substring evaluationlib/ResponseDefinitions.php: added'email'toProfileFieldsTypelib/Service/FieldDefinitionValidator.php,ImportPayloadValidator.php,DataImportService.php: updated type unions to includeemailFrontend (Vue 3 / TypeScript)
src/types/index.ts:FieldTypeunion now includes'email'src/utils/workflowProfileFieldCheck.ts: email fields use text-style operator keyssrc/views/AdminSettings.vue: added Email option in field type selectorsrc/views/PersonalSettings.vue: supports native email input type and inputmode mappingssrc/components/AdminUserFieldsDialog.vue: added email descriptions, placeholders, input type/mode mappings, helper text, validation, and backend error message mappingOpenAPI
Regenerated:
openapi.jsonopenapi-full.jsonopenapi-administration.jsonsrc/types/openapi/openapi.tssrc/types/openapi/openapi-full.tssrc/types/openapi/openapi-administration.tsTests
PHP unit
FieldDefinitionValidatorTest: email definition acceptanceFieldValueServiceTest: email normalization accept/trim/reject casesUserProfileFieldCheckTest: email contains operator execution/validationFrontend (Vitest)
workflowProfileFieldCheck.spec.ts: email operator coverageAdminSettings.spec.ts: Email option visibilityAdminUserFieldsDialog.spec.ts: email input rendering and helper textPersonalSettings.spec.ts: email input renderingValidation
docker compose exec -u www-data nextcloud ... composer test:unit✅ (175 tests, 560 assertions)npm run ts:check✅npm run test✅ (44 tests)docker compose exec -u www-data nextcloud ... composer cs:fix✅docker compose exec -u www-data nextcloud ... composer psalm✅ (0 errors)docker compose exec -u www-data nextcloud ... composer openapi✅Screenshot
Admin → Profile fields → Create field → Type dropdown showing Email option: