client-side login interface