One more thing (lo acabo de ver ahora que ley el codigo por segunda vez): Por lo que veo el password parece estar viajando en plain text por todos lados - it shouldn't. Si quieres por ahora crea un issue para arreglar eso despues, pero lo que normalmente se hace es guardar y comparar un hash (e.g. SHA1) del password. Asi el password en plain text no se guarda nunca en la DB ni en logs, y recuperar el password a partir del hash es ridiculamente dificil, so no es considerado un riesgo.