<feature/server-interface> refactor LoginController with success/fail callback pattern