Trust & Security Plugins
A freelance marketplace asks people to send money to strangers and share unfinished work. Trust is the product. These three plugins protect it.
NDA
What NDA does
The NDA plugin attaches a confidentiality agreement to an order.
- One agreement per order.
- Both parties sign.
- Typed signature, timestamp, and IP address.
- Immutable signed record; changes create a new version.
- PDF download for both parties and admins.
- Optional fee, paid by wallet or a supported gateway.
- Optional subscription gate on the requester.
- Admin strip on the order details page.
Where users see it
| Surface | Slot |
|---|---|
| Client and freelancer order details | order.details_after |
| Admin order details | admin.order_details_after |
| Freelancer dashboard menu | dashboard.menu |
| Admin menu | admin.menu |
NDA setup
- Activate
nda. - Open Admin → NDA → Settings.
- Write the agreement text.
- Choose free or paid.
- If paid, set the fee and currency.
- Choose whether a subscription is required.
- Choose which gateways may settle the fee.
- Save.
- Place a test order and sign as both parties.
Payment coverage
Only gateways that support the generic payment.complete round-trip can settle an NDA fee:
- Pesapal
- SePay
- CoinPayments
- YooMoney
Core's other gateways settle orders, not NDA fees. A free NDA works with every gateway.
NDA data
nda_agreements- one row per agreement and signature state.nda_settings- template, fee, gateways, subscription requirement.- Permission:
nda-manage.
NDA limits
- The plugin does not provide legal advice. Have a lawyer review the template.
- It does not verify legal authority to sign for a company.
- It does not notarize. It records intent and identity evidence.
- It cannot edit a signed record. Use a new version or cancel the order.
Read the operator walkthrough in NDA Agreements.
Security Manage
What Security Manage does
Security Manage is the marketplace's rule engine. It covers content, accounts, login, and access.
Content
- Restricted words with word-boundary matching.
- Off-platform contact detection: email, URL, phone, and social handles.
- Actions: block, flag, or replace.
- Violations queue with retained items.
- Coverage across messages, listings, and profiles.
Accounts
- Freeze with a reason, duration, and audit trail.
- Auto-freeze after repeated violations.
- Notify the user and the admin.
- Unfreeze with a recorded reason.
Login
- Lockout after repeated failures.
- New-device alerts.
- Disposable email domain blocking.
- Optional 2FA enforcement.
Access
- IP allow and block lists.
- Country allow and block lists.
- Rate limits for state-changing requests.
- Security alerts for violations and failed logins.
- Log retention and pruning.
Security Manage hooks
| Type | Name |
|---|---|
| Filter | security.restricted_words |
| Filter | security.scan |
| Filter | security.violation_queue |
| Filter | security.user_frozen |
| Filter | security.login_blocked |
| Filter | security.email_allowed |
| Filter | security.access_blocked |
| Filter | security.rate_limit |
| Filter | security.content_fields |
| Action | security.log_activity |
| Action | security.violation_record |
| Action | user.login_failed |
| Action | user.login |
| Action | security.notify_user |
| Action | security.notify_admin |
Core listens to the notify actions and sends the email or admin notification, so the plugin never touches core mail classes.
Permissions
security-word-manage- words and rules.security-log-manage- logs, violations, alerts, access control.user-freeze-manage- freezes.
Setup order
- Activate
security-manage. - Confirm the admin email and site email are set.
- Add restricted words.
- Choose contact detection actions.
- Set freeze defaults.
- Set login lockout thresholds.
- Set access rules last, after testing.
- Watch the violations queue for a week before tightening.
Cautions
- A broad country block can lock out your team and legitimate users.
- A broad word list creates false positives in normal conversation.
- Blocking all phone-like strings breaks order coordination.
- Test on staging with real message samples.
Impersonate
What Impersonate does
Impersonate lets an administrator view the site as a client or freelancer.
- Login as in the user list and user details page.
- A visible banner while impersonating.
- A confirmation dialog.
- Audit trail entry.
- Permission:
impersonate-users. - No plugin tables.
Impersonate slots
| Surface | Slot |
|---|---|
| Admin user details | admin.user_details_after |
| Global banner | body_end |
| Admin assets | admin.assets |
Impersonate setup
- Activate
impersonate. - Grant
impersonate-usersto the support role. - Test with a test client.
- Confirm the banner is visible and the exit action works.
Rules
- Use it to reproduce a problem, not to browse.
- Do not change a user's password or settings while impersonating.
- Tell the user if you need to inspect their account during a dispute.
- Exit the impersonated session before returning to admin work.
- The user does not see your password, but you can see what they see.
How the three work together
A typical trust flow:
- A client posts a sensitive job.
- The client requests an NDA from the order.
- Both parties sign.
- A message contains an off-platform payment request.
- Security Manage flags it and records a violation.
- An admin reviews the violation, freezes the account if needed, and notifies the user.
- Support uses Impersonate to reproduce a reported UI problem.
Daily checks
- Violations queue reviewed.
- Freezes with expiry reviewed.
- Failed login spikes reviewed.
- New-device alerts reviewed.
- NDA requests waiting for a signature reviewed.
- Impersonation audit entries reviewed.
Shared limits
- Security rules are heuristics; they will miss some cases and flag others.
- NDA signatures are electronic records, not notarized documents.
- Impersonation is powerful; restrict the permission tightly.
- None of these plugins replaces moderation by a human.
Last updated: October 21, 2026

