This is a review from Review Bot. Tool: PEP8 Style Checker Processed Files: reviewboard/scmtools/perforce.py reviewboard/scmtools/admin.py reviewboard/scmtools/models.py reviewboard/scmtools/core.py reviewboard/scmtools/forms.py Ignored Files: reviewboard/templates/admin/repository_fields.js
Add ticket-based authentication for perforce.
Review Request #3850 — Created Feb. 7, 2013 and submitted
Add ticket-based authentication for perforce. People running perforce these days are encouraged to use ticket-based authentication, which dramatically improves security (it actually forces users to authenticate, and uses per-host tickets that can be expired). We've been putting this off for a long time, and it turns out that it's not so bad these days. I was mostly worried because our PerforceClient used p4api for most tasks but manually invoked 'p4 print' to actually get the file contents, which meant that we'd have to have two different login implementations. Some testing reveals that since perforce revamped the python bindings, they fixed it so run_print actually returns usable data. Whether we want to use ticket-based authentication gets stored into the extra_data dictionary, so we don't have to have any migrations.
Verified that the field was shown and hidden at the right times, and that data was correctly persisted into the database. Set up a local perforce server that required password authentication. Verified that diffs still displayed correctly (to test the run_print() change). Set the "security" setting to "3" on the server, which enforces ticket authentication, and verified that local p4 clients all required ticket authentication. Set use_ticket_auth in the admin UI and cleared my cache, then reloaded the diff successfully.