fix user roles to always return from session, even when empty (to save repeat lookups) * change Model authenticate_user method name to validate_user_credentials to avoid confusion with inbuilt DPAE method * recovered ordering on grouped data for mysql db queries (not for sqlite) * app only loads 1 Routes file so all requests handled by same file, routes.t loads 2 routes so ajax call doesn't need login and to demonstrate how to run 2 apps with .psgi script
change registration email testing: * change env param MY_EMAIL_SENDER_TRANSPORT to EMAIL_SENDER_TRANSPORT * replace /tmp file with 'email_as_string' tt param and use Email::Sender::Simple->default_transport->deliveries for testing email params * allow command-line override of default EMAIL_SENDER_TRANSPORT setting to force email failure
fix authentication using DPAE::DB * re-writing user profile into session after loading roles replaced draft_report_users.id with users.id so previous reports did not load (expects draft_report_users.id) - now adding roles to existing user-profile * replace mysql-specific functions with sqlite-compatible equivalents * new reports.t for testing model functions and user authentication * fix main.tt error - loaded /register link because an empty grep is true
include password in call to DPAE authenticate_user() - something changed in DPAE so that password now required for authentication to get logged_in_user & logged_in_user_realm session entries
added specimen type to reports summary display; adjusted layout on reports summary pdf; amended order by requests.created_at to request_draft_report.created_at so now correctly displayed by report date
moved paginator code into own sub; separated model get_report_counts into own sub, using new count() method in Local::DB; new config item paginator.siblings; general code tidy
added authentication function using D2::Plugin::Auth::Extensible; new admin function to register new user; removed GET /login route - using auto_page()