support custom login logic