Commit Graph

855 Commits

Author SHA1 Message Date
0d78e9b8f5 Refactor TestEnvelopeController to use MediatR
Replaced direct IEnvelopeService usage with MediatR in TestEnvelopeController. Updated GetAll to use ReadEnvelopeQuery via MediatR, removed legacy service logic, and simplified DecodeEnvelopeReceiverId. Removed unused usings, base class inheritance, and obsolete methods.
2026-02-23 09:15:50 +01:00
d842332d97 Update to v3.10.0 and revise Bootstrap Icons set
Bump project version to 3.10.0 and update assembly/file versions. Replace and streamline included Bootstrap Icons SVGs, focusing on file-related icons and removing many miscellaneous and filetype-specific icons. Some icon entries may be duplicated.
2026-02-17 14:08:46 +01:00
f5b0f25d96 Add ImageSharp dependency to all major projects
Added SixLabors.ImageSharp (v3.1.12) as a dependency to API, Application, Infrastructure, Jobs, Tests, Web, and WorkerService projects to enable advanced image processing capabilities across the solution. This prepares the codebase for features involving image manipulation or generation.
2026-02-17 13:51:07 +01:00
60afc0f320 Update NuGet packages and remove chat.svg reference
Updated Microsoft.Extensions.Logging.Abstractions and Microsoft.Data.SqlClient in EnvelopeGenerator.Jobs.csproj, and System.Configuration.ConfigurationManager in EnvelopeGenerator.Web.csproj. Also removed the chat.svg icon reference from EnvelopeGenerator.Web.csproj.
2026-02-17 13:38:48 +01:00
07f951ba98 Update Microsoft.Identity.Client to 4.82.1 across solution
Upgraded Microsoft.Identity.Client to version 4.82.1 in all projects, updated related assembly references and binding redirects, and ensured packages.config reflects the new version. Also updated Microsoft.IdentityModel.Abstractions to 8.14.0 and added System.Formats.Asn1 where required. These changes improve consistency and compatibility for authentication dependencies.
2026-02-17 11:54:47 +01:00
3336af0541 Update HtmlSanitizer to v9.0.892 across all projects
Upgraded HtmlSanitizer from 8.0.865 to 9.0.892 in all existing project references. Added HtmlSanitizer 9.0.892 as a new dependency to API, Infrastructure, Jobs, Tests, and WorkerService projects to ensure consistent and up-to-date usage throughout the solution.
2026-02-17 11:51:31 +01:00
4deec9c064 Upgrade BouncyCastle to 2.6.2 and update binding redirects
Upgraded BouncyCastle.Cryptography from 2.5.0 to 2.6.2 across all projects, updating project and package config files as needed. Added/updated PackageReference for .NET Core/Standard projects. Updated app.config with a new binding redirect for System.ValueTuple and changed Microsoft.Identity.Client redirect to 4.55.0.0. These changes improve dependency consistency and resolve potential assembly binding issues.
2026-02-17 10:56:13 +01:00
a1a7f0eef7 Only append envKey if ENV_KEY is defined
Updated request logic to add the "envKey" query parameter only when the global ENV_KEY variable is defined. This prevents errors and avoids unnecessary parameters in requests when ENV_KEY is not set.
2026-02-17 09:59:27 +01:00
352618a745 Improve locale resolution in loadPSPDFKit function
Updated loadPSPDFKit to determine the locale by checking the provided argument, localized.culture, browser language, and defaulting to 'en'. This enhances locale selection robustness and user experience. Minified code updated accordingly.
2026-02-16 18:35:36 +01:00
8cf6484786 Dynamic locale support for date formatting functions
Replaced hardcoded 'de-DE' locale with a new getCurrentCulture function that selects the user's culture from localized.culture or navigator.language. Date formatting now adapts to user language settings in detailedCurrentDate and getLocaleDateString.
2026-02-16 17:34:49 +01:00
7345b8f877 Localize toolbar button titles using localized object
Updated toolbar button titles to reference properties from the `localized` object instead of hardcoded strings. This enhances internationalization support by allowing button labels to adapt to different languages. Buttons affected include "Share", "Logout", "Copy Link", "Reject", and "Reset".
2026-02-16 17:34:33 +01:00
dc6a2027d6 Refactor UI messages for localization support
All user-facing messages now use a `localized` object instead of hardcoded strings, enabling easier translation. Introduced `formatLocalized` for template formatting. Updated all dialogs and notifications to use localized keys, improving internationalization across the app.
2026-02-16 17:34:17 +01:00
8f94317e80 Support localization for annotation labels and text
Replaced hardcoded annotation labels and text with localized values, falling back to English defaults if not available. Date formatting now adapts to the current locale using getCurrentCulture().
2026-02-16 17:33:43 +01:00
566dae8e2e Add French privacy policy and update project file
Added privacy-policy.fr-FR.html with detailed data protection info for signFLOW. Updated EnvelopeGenerator.Web.csproj to always copy this file to the output directory.
2026-02-13 14:50:37 +01:00
9763ff05cf Update localization injection in cookie consent partial
Replaced IStringLocalizer<SharedResource> with IStringLocalizer<Resource> for improved localization handling in _CookieConsentPartial.cshtml.
2026-02-13 14:44:18 +01:00
83f571b226 Add 2FA registration localization and update Reg.cshtml
Added resource entries for 2FA registration steps and instructions in de-DE, en-US, and fr-FR. Updated Reg.cshtml to use localized strings, replacing hardcoded text for improved internationalization.
2026-02-13 14:40:45 +01:00
95ea4db0a0 Add localization for protected doc UI strings
Added "DocumentProtected", "Password", and "Open" entries to de-DE, en-US, and fr-FR resource files. Updated Index.cshtml to use localized strings for the page title, password label, placeholder, and submit button, replacing hardcoded German text. This improves multilingual support for the protected document access page.
2026-02-13 14:24:15 +01:00
a2e68d275f Add localization for "Creator" and "Date" labels
Added "Creator" and "Date" resource strings to de-DE, en-US, and fr-FR resource files. Updated DebugEnvelopes.cshtml to use localized labels instead of hardcoded German text for creator and date fields.
2026-02-13 14:21:54 +01:00
41cf52fd41 Add localized expired session message to resources and view
Added "ConnectionValidityExpired" string to de-DE, en-US, and fr-FR resource files. Updated _Expired.cshtml to use localized title, header, and body messages for session expiration.
2026-02-13 14:19:42 +01:00
171ab508c5 Add localization for cookie consent modal
Added localized strings for the cookie consent modal in de-DE, en-US, and fr-FR resource files. Updated _CookieConsentPartial.cshtml to use these resources for the modal title, message, and accept button, enabling multilingual support. Injected IStringLocalizer to support string localization in the view.
2026-02-13 14:17:28 +01:00
924e39253a Localize envelope sharing UI and messages
Replaced hardcoded German text in the envelope sharing UI and JavaScript alerts with localized resource strings for German, English, and French. Added new translations for labels, prompts, and error/success messages. Improved internationalization and user experience by making the sharing feature fully language-aware.
2026-02-13 13:43:47 +01:00
aba68faa4d Add localized messages for document signing success
Added new resource strings for document signing success and confirmation messages in de-DE, en-US, and fr-FR. Updated EnvelopeSigned.cshtml to use these localized strings instead of hardcoded text.
2026-02-13 12:00:54 +01:00
f1ceaab70a Improve i18n for authenticator setup instructions
Added new resource strings (prefix, link, suffix) for authenticator app setup instructions in German, English, and French resource files. Updated EnvelopeLocked.cshtml to assemble the instruction dynamically using these localized parts, ensuring correct grammar and flexibility across supported languages.
2026-02-13 11:39:01 +01:00
f855c60be4 Localize "envelope expired" page and add resource keys
Added "DocumentSharingPeriodExpired" and "Expired" keys to de-DE, en-US, and fr-FR resource files. Updated EnvelopeExpired.cshtml to use localized strings for the title, heading, and message, enabling full internationalization of the expired envelope page.
2026-02-13 11:24:39 +01:00
8f9ca082e5 Add French (fr-FR) language config to appsettings.UI.json
Added a new entry for French (fr-FR) with FIClass "fi-fr" to the language configurations in appsettings.UI.json. This enables support for French localization.
2026-02-13 10:23:42 +01:00
a982f48ef9 Improve culture cookie handling and localization responses
Refactored GetCulture to return null if cookie is missing or invalid, and added GetCultureOrDefault for fallback. Updated TestLocalizerController and CultureMiddleware to use new methods for more accurate culture detection. Localizer now returns only the localized string value.
2026-02-13 09:46:01 +01:00
297ab458c7 Replace Cultures with MultiCulture and update middleware order
Switched configuration and DI from Cultures to MultiCulture.
Adjusted middleware registration so CultureMiddleware runs after ExceptionHandlingMiddleware.
2026-02-12 17:16:47 +01:00
0e270e3182 Update Culture model and DI for non-nullable properties
Refactored Culture model to use required and non-nullable properties.
Removed nullable checks for Info in ShowEnvelope.cshtml.
Changed DI from Cultures to MultiCulture in _ViewImports.cshtml.
2026-02-12 17:16:36 +01:00
bcf55f7906 Update CultureMiddleware to use MultiCulture config
Replaced Cultures with MultiCulture in CultureMiddleware.cs.
Constructor now accepts IOptions<MultiCulture> for culture settings.
2026-02-12 17:15:34 +01:00
489b2d0917 Rename Cultures class to MultiCulture throughout codebase
Refactored all references from Cultures to MultiCulture in controllers and base classes. Updated the class definition in MultiCulture.cs to improve clarity and consistency in culture-related functionality. No functional changes were made.
2026-02-12 17:15:14 +01:00
63fbdc3bd5 Validate culture cookie against supported languages
Changed CultureMiddleware to check if the culture cookie value is in the list of supported languages, not just for null or empty. This ensures that only valid, supported culture values are accepted from the cookie; otherwise, the middleware falls back to Accept-Language or default logic.
2026-02-12 16:51:51 +01:00
aaf1f75aa7 Change Localize endpoint to use route parameter for key
The Localize endpoint in TestLocalizerController now accepts the "key" parameter as a route parameter instead of a query string. The method signature was updated to use [FromRoute], and the route template was modified to include "{key}". This changes the endpoint usage from /localize?key=de_DE to /localize/de_DE.
2026-02-12 16:42:49 +01:00
cdca639e4f Update culture handling and adjust middleware order
Changed GetCulture to return current UI culture if cookie is missing, ensuring a non-null result. Reordered middleware in Program.cs to run ExceptionHandlingMiddleware after CultureMiddleware.
2026-02-12 16:40:51 +01:00
ab57dd4cee Add endpoints for culture detection and improve cookie parsing
Added two endpoints to TestLocalizerController for retrieving culture from Accept-Language and user cookies. Enhanced GetCulture extension to parse and return the actual culture string from cookies. Updated usings for new extension methods.
2026-02-12 16:11:40 +01:00
745e9c7bfe Add GetCultureByAcceptLanguage extension for HttpContext
Introduced a new extension method, GetCultureByAcceptLanguage, in the WebExtensions class. This method parses the Accept-Language header from the HTTP request and returns the first valid CultureInfo, enabling detection of the user's preferred culture from browser settings.
2026-02-11 13:54:27 +01:00
670c8ed87c Improve culture selection using Accept-Language header
When no culture cookie is present, use the browser's Accept-Language
header to determine the user's preferred culture. This culture is
applied and stored in a cookie, enhancing localization by respecting
user preferences instead of always defaulting to the application's
default language.
2026-02-11 13:51:01 +01:00
91eb5d1e64 Make Culture lookup case-insensitive; add GetOrDefault()
Changed Culture indexer to use case-insensitive language matching.
Added GetOrDefault() to return a Culture or the default if not found.
2026-02-11 13:50:02 +01:00
ec674b6e80 Refactor TestEmailTemplateController to use MediatR
Replaced direct service dependency and base class inheritance with MediatR in TestEmailTemplateController. Updated the GetAll endpoint to use a MediatR query and removed obsolete code related to the previous service-based approach. This aligns the controller with CQRS/MediatR best practices.
2026-02-11 12:45:32 +01:00
ebed51b46a Refactor receiver roles: rename FullyAuth/PreAuth for clarity
Renamed receiver roles FullyAuth → Receiver.Full and PreAuth → Receiver.TFA across the codebase for improved clarity and consistency. Updated all usages, [Authorize] attributes, role checks, authentication logic, and authorization policies to use the new role names. Marked old constants as obsolete and pointed them to the new values. This change enhances code readability and groups receiver roles under the Receiver static class.
2026-02-06 10:49:28 +01:00
6b23dcdba7 Refactor: unify role constants under new Role class
Replaced all usages of ReceiverRole with the new Role class in EnvelopeGenerator.Domain.Constants. Removed ReceiverRole.cs and added Role.cs with PreAuth and FullyAuth constants. Updated all [Authorize] attributes and role checks in controllers and authentication logic to use Role.FullyAuth and Role.PreAuth. This centralizes role management for improved maintainability and clarity.
2026-02-02 11:53:26 +01:00
172f2e27d7 Bump version to 3.9.0 in EnvelopeGenerator.Web.csproj
Updated the project, assembly, and file versions from 3.8.2 to 3.9.0 in the EnvelopeGenerator.Web.csproj file. This prepares the project for the next release.
2026-01-27 12:07:02 +01:00
e3d6e87ee5 Allow nullable annotation param; validate for non-readonly
Make psPdfKitAnnotation optional in CreateOrUpdate. Add validation to require an annotation for non read-and-confirm envelopes, returning BadRequest if missing.
2026-01-20 12:11:49 +01:00
2795b91386 Refactor handleFinish to streamline READ_AND_CONFIRM flow and improve validation checks 2026-01-20 11:57:04 +01:00
ca248c3aa6 Support READ_AND_CONFIRM flow in handleFinish
Add logic to require all pages viewed before allowing finish when READ_AND_CONFIRM is enabled. Skip annotation and form field validations in this mode. Show warnings for unviewed pages and handle errors for save/sign actions. Update minified app to match new flow.
2026-01-20 11:44:40 +01:00
383634fca6 Conditionally add btn_refresh event based on READ_AND_CONFIRM
Only attach click handlers to btn_refresh elements when
READ_AND_CONFIRM is false. btn_complete and btn_reject
handlers remain unaffected. This change applies to both
app.js and app.min.js.
2026-01-20 11:11:59 +01:00
75097afa06 Add refresh button to envelope UI when not read-only
A "Refresh" button with a counterclockwise arrow icon is now shown in the envelope UI, but only when the envelope is not in read-only mode. The button uses standard styling classes for consistency.
2026-01-20 11:11:39 +01:00
77975c0644 Conditionally show "reset" button in mobile toolbar
The "reset" button in getMobileWritableItems is now only included if READ_AND_CONFIRM is falsy. This prevents the button from appearing when READ_AND_CONFIRM is true. The same conditional logic was applied to the minified ui.min.js. Code was also refactored for clarity.
2026-01-20 11:11:25 +01:00
5707213edd Conditionally apply PDF background for read-only envelopes
When preparing the PDF for the view, only apply the Background
method if the envelope is not read-only. This ensures that
read-only envelopes are displayed without additional background
elements.
2026-01-20 10:54:31 +01:00
ad54ba9dc4 Conditionally load annotations based on READ_AND_CONFIRM
Annotations are now only loaded if READ_AND_CONFIRM is falsy.
This prevents unnecessary annotation creation in read-and-confirm
scenarios. Changes applied to both app.js and app.min.js.
2026-01-20 10:54:16 +01:00
1f233153cf Restrict page view tracking to READ_AND_CONFIRM mode
Previously, page view tracking and sessionStorage updates ran unconditionally. Now, this logic is only executed when READ_AND_CONFIRM is enabled, ensuring viewed/unviewed page state is only tracked when required. Updated both source and minified files accordingly.
2026-01-20 10:38:37 +01:00