BEFORE: default admin / admin123 -> 302->/ | control wrong -> 200->
uid=1000(abc) gid=1000(abc) groups=1000(abc),100(users)
-rw-r--r-- 1 1000 1000 200704 Sep 28 18:55 /config/app.db
command output: [2026-09-28 18:56:04,711]  INFO {cps:92} ProxyFix configured to trust 1 proxy(ies) for X-Forwarded-* headers [2026-09-28 18:56:04,789]  INFO {cps.ub:1066} Migrating system magic shelves... [2026-09-28 18:56:04,935]  INFO {cps:140} SESSION_COOKIE_SECURE set to False (Standard/LDAP login) Password doe
AFTER: default -> 302->/ | new -> 200-> | control wrong -> 200->

Password doesn't comply with password validation rules

/app/calibre-web-automated/cps/helper.py:796:def valid_password(check_password):
/app/calibre-web-automated/cps/helper.py-797-    if config.config_password_policy:
/app/calibre-web-automated/cps/helper.py-798-        verify = ""
/app/calibre-web-automated/cps/helper.py-799-        if config.config_password_min_length > 0:
/app/calibre-web-automated/cps/helper.py-800-            verify += r"^(?=.{" + str(config.config_password_min_length) + ",}$)"
/app/calibre-web-automated/cps/helper.py-801-        if config.config_password_number:
/app/calibre-web-automated/cps/helper.py-802-            verify += r"(?=.*?\d)"
/app/calibre-web-automated/cps/helper.py-803-        if config.config_password_lower:
/app/calibre-web-automated/cps/helper.py-804-            verify += r"(?=.*?[\p{Ll}])"
/app/calibre-web-automated/cps/helper.py-805-        if config.config_password_upper:
/app/calibre-web-automated/cps/helper.py-806-            verify += r"(?=.*?[\p{Lu}])"
/app/calibre-web-automated/cps/helper.py-807-        if config.config_password_character:
/app/calibre-web-automated/cps/helper.py-808-            verify += r"(?=.*?[\p{Letter}])"
/app/calibre-web-automated/cps/helper.py-809-        if config.config_password_special:
/app/calibre-web-automated/cps/helper.py-810-            verify += r"(?=.*?[^\p{Letter}\s0-9])"

