| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Two things govern access to the backoffice UI:
| Capability | Required permission |
|---|---|
| See the uTPro Form menu | Group granted the uTPro Form section |
| View form list, view entries, export data (CSV / ZIP) | Any backoffice user with the section |
| Download an uploaded file (non-sensitive field) | Any backoffice user with the section |
| Download an uploaded file on a Sensitive Data field | Admin or sensitiveData group |
| Create / edit / delete forms | canEdit (admin or Settings access) |
| Delete entry / bulk delete | canEdit |
| See decrypted sensitive/password values (else *****) | Admin or sensitiveData group |
The backoffice API requires a valid backoffice login; write actions additionally require canEdit. The API is not gated by the section — the section grant only controls UI visibility.
Encryption uses ASP.NET Core Data Protection (IDataProtector) — the same primitive Umbraco itself uses. Under the hood it is authenticated symmetric encryption (AES-256-CBC + HMAC-SHA256); the protector is created with a fixed purpose string (uTPro.uTProSimpleForm.SensitiveField).
Encode (on submit) — for each field whose Type is password or that has Sensitive Data enabled:
storedValue = "uTProEncode:" + Protector.Protect(rawValue)
The raw value is encrypted and a marker prefix (uTProEncode:) is prepended, then saved into the entry's DataJson. Non-sensitive fields are stored as-is.
Decode (on read) — when entries are loaded for the backoffice or the entries API, each value is checked for the uTProEncode: prefix:
Important operational notes:
Files submitted through a file field are stored outside wwwroot, under App_Data/umbraco/Data/uTProSimpleFormUploads/{formAlias}/{yyyyMM}/{guid}{ext}, so they are never served as static content and cannot be reached by guessing a URL.
By default files are stored under App_Data/umbraco/Data/uTProSimpleFormUploads in the app's content root. You can point this elsewhere with uTPro:Feature:Form:FileUploadsPath:
{
"uTPro": {
"Feature": {
"Form": {
"FileUploadsPath": "D:\\shared\\form-uploads"
}
}
}
}The public submit endpoint is protected by a built-in per-IP + per-form fixed-window rate limiter, enabled by default. It runs first in the submission pipeline, so throttled requests are rejected before any work is done and nothing is stored.
Partitioning by IP + form alias means a flood on one form can't lock visitors out of your other forms. When the limit is exceeded the endpoint returns HTTP 429 with a "Too many submissions" message.
Configure it under uTPro:Feature:Form:RateLimit in appsettings.json:
{
"uTPro": {
"Feature": {
"Form": {
"RateLimit": {
"Enabled": true,
"PermitLimit": 5,
"WindowSeconds": 60
}
}
}
}
}| Key | Default | Description |
|---|---|---|
| Enabled | true | Turns per-IP/form throttling on or off. |
| PermitLimit | 5 | Maximum submissions allowed per window, per IP + form. |
| WindowSeconds | 60 | Length of the fixed window in seconds. |
Behind a reverse proxy or load balancer, the limiter needs the real client IP — otherwise every visitor shares the proxy's IP and the limit throttles everyone as one. Make sure the host forwards the client IP. In uTPro, enable the uTPro:ForwardedHeaders section (see the uTPro Configurations doc); in a custom host, configure ASP.NET Core forwarded headers yourself.
For custom anti-spam (captcha, honeypot, blocklists) add your own IFormSubmissionHandler — see Extending the submission pipeline.
The bundled TestSite auto-seeds the accounts below on startup (see TestUserSeeder.cs) so the role/permission matrix can be exercised immediately — even after wiping the database. All share the unattended admin password Admin1234!. The seeder also creates the sensitiveData and Admin Custom user groups and grants them the uTPro Form section.
| Group(s) | Behaviour in uTPro Form | |
|---|---|---|
| admin@example.com | Administrators | Everything: design forms, manage entries, view sensitive data |
| editor@example.com | Editor (+ uTPro Form section) | View forms & entries, export CSV; cannot design/delete; sensitive shown as ***** |
| editorSD@example.com | Editor + sensitiveData (+ uTPro Form section) | Same as editor, plus can view decrypted sensitive values |
| adminCustom@example.com | Admin Custom — clone of Administrators (sections incl. Settings + uTPro Form) | Can design/edit/delete forms (has Settings ⇒ canEdit), but sensitive values stay masked (not admin, not sensitiveData) |
Key rule: form management (canEdit) is granted by the Settings section, not by the Administrators group alone. Sensitive-data viewing is a separate lever, granted only by the Administrators group or the sensitiveData group.
The seeder is TestSite-only scaffolding — it is not part of the shipped package. In a real site you create users/groups through the backoffice as usual.
| Back | FazBrowse Home | New Git URL |