login function update