add QRLogin function