Security and traceability
Separation between organizations
Each organization's data is isolated. Nobody outside the organization sees its herd, except a consignment agency that an admin gave access to, and in that case only read-only.
Logging in
- Login links work only once and expire after 15 minutes.
- Link requests are limited per account and per network address, to prevent abuse. The message the person sees is always the same, so it doesn't reveal which emails have an account.
- Passwords are optional and are between 12 and 72 characters long. They are stored encrypted.
- A remembered session lasts 14 days.
- Changing the email or the password requires having logged in less than 20 minutes ago. Changing the password logs out the sessions on other devices.
Permissions
What each person can do depends on their role in the organization. Restrictions are enforced on the server, not just by hiding buttons.
Browser protection
Puelas is served only over HTTPS and applies a strict content security policy: it doesn't load third-party scripts, can't be displayed inside another site, and doesn't use the camera, microphone or location. Pages with data are not stored in shared caches.
Audit log
Puelas records who did what and when. Among other things:
- Logins: every login, every rejected attempt and every logout.
- People: additions, removals, role changes and email changes.
- Access: every access given to or removed from a consignment agency.
- Herd: every import (who imported which file), edit or undo; treatments; lot moves; changes to lots, products and establishments.
- Import rules: every column or value learned.
- Declarations and consignments: creation, file generation, closing and reopening.
An import's log entry is written in the same operation as the import: a file that didn't make it in doesn't leave a record saying otherwise.
Passwords are never logged.
Data history
- Each reading keeps the original row from the file, complete.
- An import never deletes a piece of data with an empty cell, and a reading copied from an earlier session never overwrites what was recorded at the time.
- Lots and products are retired, not deleted.
- Declarations keep a copy of the data as it was declared.