login function modify