authenticate() runs on Ajenti's shared restricted worker, not the
session's own process. The client is now built in
prepare_environment() instead.
- [users] Show a clear message instead of a raw technical error (e.g.
"No linuxmuster-api session token available") when linuxmuster-api is
unreachable for the current session; add the missing failure
notification for the "Set initial password"/"Set random password"
actions on the student list. - [auth] Fix redundant regex escapes and unescaped-sequence warnings in
check_password_complexity().