def func(self):
        self.caller.msg(echo=True)
        if not hasattr(self.menutree, "player"):
            self.caller.msg("{rSomething went wrong! The player was not remembered from last step!{n")
            self.menutree.goto("node1a")
            return
        player = self.menutree.player
        if not player.check_password(self.args):
            self.caller.msg("{rIncorrect password.{n")
            self.menutree.goto("node1b")
            return

        # before going on, check eventual bans
        bans = ServerConfig.objects.conf("server_bans")
        if bans and (any(tup[0]==player.name.lower() for tup in bans)
                     or
                     any(tup[2].match(self.caller.address) for tup in bans if tup[2])):
            # this is a banned IP or name!
            string = "{rYou have been banned and cannot continue from here."
            string += "\nIf you feel this ban is in error, please email an admin.{x"
            self.caller.msg(string)
            self.caller.sessionhandler.disconnect(self.caller, "Good bye! Disconnecting...")
            return

        # we are ok, log us in.
        self.caller.msg("{gWelcome %s! Logging in ...{n" % player.key)
        #self.caller.session_login(player)
        self.caller.sessionhandler.login(self.caller, player)

        # abort menu, do cleanup.
        self.menutree.goto("END")


# Menu entry 2a - Creating a Username
Returns True if adding filters to this instance is still possible.
dataset/ETHPy150Open evennia/evennia/evennia/contrib/menu_login.py/CmdPasswordSelect.func--crossover with--dataset/ETHPy150Open django/django/django/db/models/sql/query.py/Query.can_filter