added optional action parameter to requireLogin()