Step-by-step guide to finding and reading each log type available to administrators in PropOps Web.
PropOps Web surfaces its audit and security logs in several places across the admin panel. This guide walks through each view, what it shows, and how to filter or export the data you need.
All log views require a staff-level account with the appropriate API permission. If a section is missing for your account, contact your PropOps administrator to check your assigned permissions.
The Activity Log is the primary audit trail. It shows every event recorded in user_activity_log — login events, page views, admin actions, guard page outcomes, and more.Required permission:api.admin.activity_log.view
1
Open the admin panel
Navigate to your PropOps admin panel. The URL is typically /admin relative to your installation root.
2
Go to the Activity Log
In the admin navigation, find Security or Logs and select Activity Log.
3
Choose a time range
Use the Time range filter at the top of the page to narrow results. The available options are:
Last 24 hours (default)
Last 7 days
Last 30 days
Last 90 days
All time
4
Filter by activity type
Use the Activity type dropdown to focus on a specific event category. Useful filters include:
failed_login — see all failed authentication attempts
guard_ip_pin_verified — see all successful IP location verifications
staff_user_status_change — see all account status changes made by staff
403_access_denied — see all unauthorised access attempts
5
Search
The search box matches against decrypted name, email address, IP address, and the activity_details JSON content. Use it to look up a specific user or IP address.
6
Filter by job
To see all activity associated with a specific job, enter the job UUID in the job filter field. The log will show every page view, note, and change linked to that job.
Decrypted source IP — stored encrypted in the database
Details
Parsed JSON context for the event (names, URLs, action outcomes, etc.)
Time
UTC timestamp of the event
Use the Activity type breakdown panel (if visible) to see a count of each event type in the current filter window. This quickly highlights unusual spikes such as a surge in failed_login or 403_access_denied events.
The Security Dashboard gives a high-level overview of your installation’s security posture, including login anomalies, breach detections, file integrity status, and API usage trends.Required permission:api.admin.security_report.manage
1
Open the admin panel
Navigate to your PropOps admin panel.
2
Go to the Security Dashboard
In the admin navigation, select Security. The dashboard is typically the default view within the security section.
3
Select a time range
The dashboard time range defaults to the last 30 days. Use the selector to switch to 24 hours, 7 days, or 90 days depending on the investigation window you need.
A total count for the selected period, plus a breakdown of:
Suspicious IPs — addresses with 5 or more failed attempts in the last hour
Targeted accounts — individual accounts with more than 5 failed attempts in 24 hours
Multi-account spray attacks — IPs that have attempted 3 or more different accounts in 24 hours
If any of these thresholds are exceeded, the dashboard raises an alert. These metrics are sourced from the login_attempts table and do not require decryption.
File integrity alerts
A count of unresolved file integrity violations from the system_security_alerts table. All file integrity violations are treated as critical.Each violation shows:
The affected file path
When the change was detected
Whether the alert has been resolved
To resolve an alert, select the alert row and click Resolve. This writes a security_alert_resolved entry to the activity log with your identity and timestamp.
Password breach monitoring
A count of accounts where a password breach was detected in the last 7 days. PropOps checks passwords against the HaveIBeenPwned database using a privacy-preserving k-anonymity method.When a breach is detected, the affected account’s sessions are immediately invalidated and a password-reset email is sent. You can also view affected accounts in Admin → Security → Password Breaches.
API usage
This week vs last week comparison for total API requests. A significant increase can indicate automated abuse, a misconfigured integration, or a spike in legitimate usage.The panel also shows the top endpoints by request volume so you can identify which parts of the platform are being used most heavily.
Active sessions
A total count of currently valid sessions across all users. Cross-reference this with the time of day and expected user population to spot anomalies.
A dedicated view of all accounts where a password breach has been detected.Required permission:api.admin.security_report.manage (same as Security Dashboard)
1
Open the admin panel
Navigate to your PropOps admin panel.
2
Go to Password Breaches
In the admin navigation, select Security → Password Breaches.
3
Review affected accounts
Each row shows the affected account and the date the breach was detected. Accounts are automatically locked out and sent a reset email — this view lets you confirm the remediation happened and follow up where needed.
You can view the login history and recent activity for any individual user directly from their account record.
1
Open the admin panel
Navigate to your PropOps admin panel.
2
Go to Users
Select Users in the admin navigation and locate the user you want to inspect.
3
Open the user record
Click on the user to open their full account record.
4
View the activity timeline
The user record includes an activity timeline sourced from user_activity_log, showing their login history, failed attempts, and recent actions. Each entry is colour-coded:
Administrators can view and revoke active sessions for any user.
1
Open the admin panel
Navigate to Admin → Users and open the user record.
2
Open session management
Within the user record, find the Sessions section. This lists all currently active sessions with device type, last-seen time, and approximate location.
3
Revoke a session
Click Revoke next to any session to immediately invalidate it. The user will be signed out on that device. The revocation is logged to user_activity_log with your identity as the acting staff member.
4
Terminate all sessions
To sign a user out of all devices at once, use the Terminate all sessions option. This is recorded as a staff_session_terminate event in the activity log.
You can also manage your own active sessions from your profile without needing admin panel access:
1
Open your profile
Select your name or avatar in the top navigation bar.
2
Find Active Sessions
Locate the Active Sessions or Sessions panel in your profile security settings.
3
Revoke a session
Select Revoke next to any session you do not recognise or no longer need.
The file integrity monitor runs automatically every hour and records any unexpected application file changes.
1
Open the Security Dashboard
Navigate to Admin → Security. Unresolved file integrity alerts are shown prominently on the dashboard.
2
Review violations
Each violation entry shows the affected file, the detected change, and when the check ran. Review the file in question to determine whether the change was an authorised deployment or unauthorised modification.
3
Resolve or escalate
If the change was authorised (e.g. a deployment you made), click Resolve to clear the alert. If the source of the change is unknown, escalate to your security team immediately — this may constitute a data breach under UK GDPR Article 33.
All file integrity violations are treated as critical regardless of the severity value stored in the database. Do not dismiss alerts without first investigating the affected file.
Detailed API usage logs are available separately from the security dashboard and are useful for tracking integration health or investigating unusual traffic patterns.Required permission: Staff access to the admin panel.
1
Open the admin panel
Navigate to Admin → Settings or Admin → API depending on your panel layout.
2
View API statistics
The API usage view shows per-endpoint request counts, average response times, error rate, and recent usage trends. Data is sourced from api_endpoint_usage_logs.