update login function