Esempio n. 1
0
class Manager(object):

    def __init__(self):
        self._preferences = None
        self.__servers = None
        return

    def init(self):
        self._preferences = Preferences()
        if constants.IS_DEVELOPMENT:
            self.__servers = DevelopmentServers(self._preferences)
        else:
            self.__servers = Servers(self._preferences)
        connectionManager.onLoggedOn += self._onLoggedOn

    def fini(self):
        connectionManager.onLoggedOn -= self._onLoggedOn
        self._preferences = None
        self.__servers.fini()
        self.__servers = None
        return

    def initiateLogin(self, email, password, serverName, isSocialToken2Login, rememberUser):
        authMethod = CONNECTION_METHOD.BASIC
        self._preferences['session'] = BigWorld.wg_cpsalt(self._preferences['session'])
        self._preferences['password_length'] = len(password)
        self._preferences['remember_user'] = rememberUser
        self._preferences['login'] = email
        self._preferences['server_name'] = serverName
        loginParams = {'login': self._preferences['login'],
         'session': self._preferences['session'],
         'temporary': str(int(not rememberUser)),
         'auth_method': authMethod}
        if isSocialToken2Login or self._preferences['token2']:
            loginParams['auth_method'] = CONNECTION_METHOD.TOKEN2
            loginParams['token2'] = self._preferences['token2']
        if isSocialToken2Login:
            self._preferences['login_type'] = self._preferences['login_type']
        else:
            self._preferences['login_type'] = 'credentials'
        connectionManager.initiateConnection(loginParams, password, serverName)

    def getPreference(self, key):
        return self._preferences[key]

    def clearPreferences(self):
        self._preferences.clear()

    def clearToken2Preference(self):
        self._preferences['token2'] = ''

    def writePreferences(self):
        self._preferences.writeLoginInfo()

    @property
    def servers(self):
        return self.__servers

    def _onLoggedOn(self, responseData):
        name = responseData.get('name', 'UNKNOWN')
        token2 = responseData.get('token2', '')
        g_lobbyContext.setCredentials(name, token2)
        if self._preferences['remember_user']:
            self._preferences['name'] = name
            self._preferences['token2'] = token2
            if not constants.IS_DEVELOPMENT:
                del self._preferences['server_name']
        else:
            email = self._preferences['login']
            serverName = self._preferences['server_name']
            session = self._preferences['session']
            self._preferences.clear()
            if not constants.IS_SINGAPORE and not GUI_SETTINGS.igrCredentialsReset:
                self._preferences['login'] = email
            if constants.IS_DEVELOPMENT:
                self._preferences['server_name'] = serverName
            self._preferences['session'] = session
        self._preferences.writeLoginInfo()
        self._showSecurityMessage(responseData)

    def _showSecurityMessage(self, responseData):
        securityWarningType = responseData.get('security_msg')
        if securityWarningType is not None:
            securityLink = ''
            if not GUI_SETTINGS.isEmpty('securitySettingsURL'):
                securityLink = makeHtmlString('html_templates:lobby/system_messages', 'link', {'text': _ms(SYSTEM_MESSAGES.SECURITYMESSAGE_CHANGE_SETINGS),
                 'linkType': 'securityLink'})
            SystemMessages.pushI18nMessage('#system_messages:securityMessage/%s' % securityWarningType, type=SystemMessages.SM_TYPE.Warning, link=securityLink)
        return
Esempio n. 2
0
class Manager(object):

    def __init__(self):
        self._preferences = None
        self.__servers = None
        return

    def init(self):
        self._preferences = Preferences()
        if constants.IS_DEVELOPMENT:
            self.__servers = DevelopmentServers(self._preferences)
        else:
            self.__servers = Servers(self._preferences)
        connectionManager.onLoggedOn += self._onLoggedOn

    def fini(self):
        connectionManager.onLoggedOn -= self._onLoggedOn
        self._preferences = None
        self.__servers.fini()
        self.__servers = None
        return

    def initiateLogin(self, email, password, serverName, isSocialToken2Login, rememberUser):
        isToken2Login = isSocialToken2Login or self._preferences['token2']
        if isToken2Login:
            authMethod = CONNECTION_METHOD.TOKEN2
        else:
            authMethod = CONNECTION_METHOD.BASIC
        serverName = self._getHost(authMethod, serverName)
        self._preferences['session'] = BigWorld.wg_cpsalt(self._preferences['session'])
        self._preferences['password_length'] = len(password)
        self._preferences['remember_user'] = rememberUser
        self._preferences['login'] = email
        self._preferences['server_name'] = serverName
        loginParams = {'login': self._preferences['login'],
         'session': self._preferences['session'],
         'temporary': str(int(not rememberUser)),
         'auth_method': authMethod}
        if isToken2Login:
            loginParams['token2'] = self._preferences['token2']
        if isSocialToken2Login:
            self._preferences['login_type'] = self._preferences['login_type']
        else:
            self._preferences['login_type'] = 'credentials'
        connectionManager.initiateConnection(loginParams, password, serverName)

    def initiateRelogin(self, login, token2, serverName):
        loginParams = {'login': login,
         'token2': token2,
         'session': BigWorld.wg_cpsalt(self._preferences['session']),
         'temporary': str(int(not self._preferences['remember_user'])),
         'auth_method': CONNECTION_METHOD.TOKEN2}
        self._preferences['server_name'] = serverName
        connectionManager.initiateConnection(loginParams, '', serverName)

    def getPreference(self, key):
        return self._preferences[key]

    def clearPreferences(self):
        self._preferences.clear()

    def clearToken2Preference(self):
        self._preferences['token2'] = ''

    def writePreferences(self):
        self._preferences.writeLoginInfo()

    @property
    def servers(self):
        return self.__servers

    def _onLoggedOn(self, responseData):
        name = responseData.get('name', 'UNKNOWN')
        token2 = responseData.get('token2', '')
        g_lobbyContext.setCredentials(name, token2)
        if self._preferences['remember_user']:
            self._preferences['name'] = name
            self._preferences['token2'] = token2
            if 'server_name' in self._preferences and AUTO_LOGIN_QUERY_ENABLED:
                del self._preferences['server_name']
        else:
            email = self._preferences['login']
            serverName = self._preferences['server_name']
            session = self._preferences['session']
            self._preferences.clear()
            if not constants.IS_SINGAPORE and not GUI_SETTINGS.igrCredentialsReset:
                self._preferences['login'] = email
            if not AUTO_LOGIN_QUERY_ENABLED:
                self._preferences['server_name'] = serverName
            self._preferences['session'] = session
        self.writePeripheryLifetime()
        self._preferences.writeLoginInfo()
        self.__dumpUserName(name)
        self._showSecurityMessage(responseData)

    def _showSecurityMessage(self, responseData):
        securityWarningType = responseData.get('security_msg')
        if securityWarningType is not None:
            securityLink = ''
            if not GUI_SETTINGS.isEmpty('securitySettingsURL'):
                securityLink = makeHtmlString('html_templates:lobby/system_messages', 'link', {'text': _ms(SYSTEM_MESSAGES.SECURITYMESSAGE_CHANGE_SETINGS),
                 'linkType': 'securityLink'})
            SystemMessages.pushI18nMessage('#system_messages:securityMessage/%s' % securityWarningType, type=SystemMessages.SM_TYPE.Warning, link=securityLink)
        return

    def writePeripheryLifetime(self):
        if AUTO_LOGIN_QUERY_ENABLED and connectionManager.peripheryID:
            self._preferences['peripheryLifetime'] = pickle.dumps((connectionManager.peripheryID, time.time() + _PERIPHERY_DEFAULT_LIFETIME))

    def _getHost(self, authMethod, hostName):
        if hostName != AUTO_LOGIN_QUERY_URL:
            return hostName
        else:
            pickledData = self._preferences['peripheryLifetime']
            if pickledData:
                try:
                    peripheryID, expirationTimestamp = pickle.loads(pickledData)
                except:
                    LOG_DEBUG("Couldn't to read pickled periphery data. Connecting to {0}.".format(hostName))
                    return hostName

                if expirationTimestamp > time.time():
                    host = g_preDefinedHosts.periphery(peripheryID, False)
                    if host is None:
                        return hostName
                    if authMethod != CONNECTION_METHOD.BASIC and host.urlToken:
                        return host.urlToken
                    return host.url
            return hostName

    def __dumpUserName(self, name):
        """ Dump user name to the preferences.xml (required by WGLeague's anti-cheat).
        
        See WOTD-55587. This method doesn't belong to Preferences class, so it's placed here.
        """
        Settings.g_instance.userPrefs[Settings.KEY_LOGIN_INFO].writeString('user', name)
        Settings.g_instance.save()
Esempio n. 3
0
class Manager(ILoginManager):
    lobbyContext = dependency.descriptor(ILobbyContext)
    connectionMgr = dependency.descriptor(IConnectionManager)

    def __init__(self):
        self._preferences = None
        self.__servers = None
        self.__wgcManager = None
        self.__triedToInitWGC = False
        return

    @property
    def wgcAvailable(self):
        return self.__wgcManager is not None

    def init(self):
        self.tryPrepareWGCLogin()
        self._preferences = Preferences()
        if constants.IS_DEVELOPMENT:
            self.__servers = DevelopmentServers(self._preferences)
        else:
            self.__servers = Servers(self._preferences)
        self.connectionMgr.onLoggedOn += self._onLoggedOn

    def fini(self):
        self.connectionMgr.onLoggedOn -= self._onLoggedOn
        self._preferences = None
        self.__servers.fini()
        self.__servers = None
        self.stopWgc()
        return

    def initiateLogin(self, email, password, serverName, isSocialToken2Login, rememberUser):
        isToken2Login = isSocialToken2Login or self._preferences['token2']
        authMethod = CONNECTION_METHOD.TOKEN2 if isToken2Login else CONNECTION_METHOD.BASIC
        serverName = self._getHost(authMethod, serverName)
        self._preferences['session'] = BigWorld.wg_cpsalt(self._preferences['session'])
        self._preferences['password_length'] = len(password)
        self._preferences['remember_user'] = rememberUser
        self._preferences['login'] = email
        self._preferences['server_name'] = serverName
        loginParams = {'login': self._preferences['login'],
         'session': self._preferences['session'],
         'temporary': str(int(not rememberUser)),
         'auth_method': authMethod}
        if isToken2Login:
            loginParams['token2'] = self._preferences['token2']
        if not isSocialToken2Login:
            self._preferences['login_type'] = 'credentials'
        self.connectionMgr.initiateConnection(loginParams, password, serverName)
        self.connectionMgr.setLastLogin(email)

    def initiateRelogin(self, login, token2, serverName):
        if self.wgcAvailable:
            self.__wgcManager.relogin(token2, serverName)
        else:
            loginParams = {'login': login,
             'token2': token2,
             'session': BigWorld.wg_cpsalt(self._preferences['session']),
             'temporary': str(int(not self._preferences['remember_user'])),
             'auth_method': CONNECTION_METHOD.TOKEN2}
            self._preferences['server_name'] = serverName
            self.connectionMgr.initiateConnection(loginParams, '', serverName)

    def getPreference(self, key):
        return self._preferences[key]

    def clearPreferences(self):
        self._preferences.clear()

    def clearToken2Preference(self):
        self._preferences['token2'] = ''

    def writePreferences(self):
        self._preferences.writeLoginInfo()

    @property
    def servers(self):
        return self.__servers

    def _onLoggedOn(self, responseData):
        name = responseData.get('name', 'UNKNOWN')
        token2 = responseData.get('token2', '')
        self.lobbyContext.setCredentials(name, token2)
        if self.wgcAvailable and self.__wgcManager.onLoggedOn(responseData):
            self._preferences.clear()
            self._preferences.writeLoginInfo()
            NonRecruitNotifierSingleton().getInstance().resetFirstShowState()
            return
        loginCount = self._preferences.get('loginCount', 0)
        self._preferences['loginCount'] = 1 if loginCount >= _LIMIT_LOGIN_COUNT else loginCount + 1
        if self._preferences['remember_user']:
            self._preferences['name'] = name
            self._preferences['token2'] = token2
            if 'server_name' in self._preferences and AUTO_LOGIN_QUERY_ENABLED:
                del self._preferences['server_name']
        else:
            email = self._preferences['login']
            serverName = self._preferences['server_name']
            session = self._preferences['session']
            loginCount = self._preferences['loginCount']
            self._preferences.clear()
            if not constants.IS_SINGAPORE and not GUI_SETTINGS.igrCredentialsReset:
                self._preferences['login'] = email
            if not AUTO_LOGIN_QUERY_ENABLED:
                self._preferences['server_name'] = serverName
            self._preferences['session'] = session
            self._preferences['loginCount'] = loginCount
        self._preferences.writeLoginInfo()
        self.__dumpUserName(name)
        self._showSecurityMessage(responseData)
        NonRecruitNotifierSingleton().getInstance().resetFirstShowState()

    def _showSecurityMessage(self, responseData):
        securityWarningType = responseData.get('security_msg')
        if securityWarningType is not None:
            securityLink = ''
            if not GUI_SETTINGS.isEmpty('securitySettingsURL'):
                securityLink = makeHtmlString('html_templates:lobby/system_messages', 'link', {'text': _ms(SYSTEM_MESSAGES.SECURITYMESSAGE_CHANGE_SETINGS),
                 'linkType': 'securityLink'})
            SystemMessages.pushI18nMessage('#system_messages:securityMessage/%s' % securityWarningType, type=SystemMessages.SM_TYPE.Warning, link=securityLink)
        return

    def writePeripheryLifetime(self):
        if AUTO_LOGIN_QUERY_ENABLED and self.connectionMgr.peripheryID:
            self._preferences['peripheryLifetime'] = pickle.dumps((self.connectionMgr.peripheryID, time.time() + _PERIPHERY_DEFAULT_LIFETIME))
            self._preferences.writeLoginInfo()

    @staticmethod
    def getAvailableSocialNetworks():
        raise SoftException('This method should not be reached in this context')

    def initiateSocialLogin(self, socialNetworkName, serverName, rememberUser, isRegistration):
        raise SoftException('This method should not be reached in this context')

    def _getHost(self, authMethod, hostName):
        if hostName != AUTO_LOGIN_QUERY_URL:
            return hostName
        else:
            pickledData = self._preferences['peripheryLifetime']
            if pickledData:
                try:
                    peripheryID, expirationTimestamp = pickle.loads(pickledData)
                except Exception:
                    LOG_DEBUG("Couldn't to read pickled periphery data. Connecting to {0}.".format(hostName))
                    return hostName

                if expirationTimestamp > time.time():
                    host = g_preDefinedHosts.periphery(peripheryID, False)
                    if host is None:
                        return hostName
                    if authMethod != CONNECTION_METHOD.BASIC and host.urlToken:
                        return host.urlToken
                    return host.url
            return hostName

    def __dumpUserName(self, name):
        Settings.g_instance.userPrefs[Settings.KEY_LOGIN_INFO].writeString('user', name)
        Settings.g_instance.save()

    def addOnWgcErrorListener(self, listener):
        if self.wgcAvailable:
            self.__wgcManager.onWgcError += listener
        else:
            _logger.warning('Try to addOnWgcErrorListener while WGC is not available')

    def removeOnWgcErrorListener(self, listener):
        if self.wgcAvailable:
            self.__wgcManager.onWgcError -= listener
        else:
            _logger.warning('Try to removeOnWgcErrorListener while WGC is not available')

    def tryWgcLogin(self, serverName=None):
        if not self.wgcAvailable:
            _logger.warning('WGC is not available, no possibility to login via it, so return')
            return
        else:
            if serverName is None:
                selectedServer = self.__servers.selectedServer
                if not selectedServer:
                    _logger.warning('No server was selected when WGC connect happened, so return')
                    return
                serverName = selectedServer['data']
            hostName = self._getHost(CONNECTION_METHOD.TOKEN, serverName)
            self.__wgcManager.login(hostName)
            return

    def stopWgc(self):
        if self.wgcAvailable:
            self.__wgcManager.destroy()
            self.__wgcManager = None
        return

    def tryPrepareWGCLogin(self):
        if self.wgcAvailable:
            if not BigWorld.WGC_prepareLogin():
                self.stopWgc()
        elif not self.__triedToInitWGC:
            if BigWorld.WGC_prepareLogin():
                self.__wgcManager = _WgcModeManager()
        self.__triedToInitWGC = True

    def checkWgcCouldRetry(self, status):
        return self.__wgcManager.checkWgcCouldRetry(status) if self.wgcAvailable else False
Esempio n. 4
0
class Manager(ILoginManager):
    def __init__(self):
        self._preferences = None
        self.__servers = None
        return

    def init(self):
        self._preferences = Preferences()
        if constants.IS_DEVELOPMENT:
            self.__servers = DevelopmentServers(self._preferences)
        else:
            self.__servers = Servers(self._preferences)
        connectionManager.onLoggedOn += self._onLoggedOn

    def fini(self):
        connectionManager.onLoggedOn -= self._onLoggedOn
        self._preferences = None
        self.__servers.fini()
        self.__servers = None
        return

    def initiateLogin(self, email, password, serverName, isSocialToken2Login,
                      rememberUser):
        isToken2Login = isSocialToken2Login or self._preferences['token2']
        if isToken2Login:
            authMethod = CONNECTION_METHOD.TOKEN2
        else:
            authMethod = CONNECTION_METHOD.BASIC
        serverName = self._getHost(authMethod, serverName)
        self._preferences['session'] = BigWorld.wg_cpsalt(
            self._preferences['session'])
        self._preferences['password_length'] = len(password)
        self._preferences['remember_user'] = rememberUser
        self._preferences['login'] = email
        self._preferences['server_name'] = serverName
        loginParams = {
            'login': self._preferences['login'],
            'session': self._preferences['session'],
            'temporary': str(int(not rememberUser)),
            'auth_method': authMethod
        }
        if isToken2Login:
            loginParams['token2'] = self._preferences['token2']
        if not isSocialToken2Login:
            self._preferences['login_type'] = 'credentials'
        connectionManager.initiateConnection(loginParams, password, serverName)

    def initiateRelogin(self, login, token2, serverName):
        loginParams = {
            'login': login,
            'token2': token2,
            'session': BigWorld.wg_cpsalt(self._preferences['session']),
            'temporary': str(int(not self._preferences['remember_user'])),
            'auth_method': CONNECTION_METHOD.TOKEN2
        }
        self._preferences['server_name'] = serverName
        connectionManager.initiateConnection(loginParams, '', serverName)

    def getPreference(self, key):
        return self._preferences[key]

    def clearPreferences(self):
        self._preferences.clear()

    def clearToken2Preference(self):
        self._preferences['token2'] = ''

    def writePreferences(self):
        self._preferences.writeLoginInfo()

    @property
    def servers(self):
        return self.__servers

    def _onLoggedOn(self, responseData):
        name = responseData.get('name', 'UNKNOWN')
        token2 = responseData.get('token2', '')
        g_lobbyContext.setCredentials(name, token2)
        if self._preferences['remember_user']:
            self._preferences['name'] = name
            self._preferences['token2'] = token2
            if 'server_name' in self._preferences and AUTO_LOGIN_QUERY_ENABLED:
                del self._preferences['server_name']
        else:
            email = self._preferences['login']
            serverName = self._preferences['server_name']
            session = self._preferences['session']
            self._preferences.clear()
            if not constants.IS_SINGAPORE and not GUI_SETTINGS.igrCredentialsReset:
                self._preferences['login'] = email
            if not AUTO_LOGIN_QUERY_ENABLED:
                self._preferences['server_name'] = serverName
            self._preferences['session'] = session
        self._preferences.writeLoginInfo()
        self.__dumpUserName(name)
        self._showSecurityMessage(responseData)

    def _showSecurityMessage(self, responseData):
        securityWarningType = responseData.get('security_msg')
        if securityWarningType is not None:
            securityLink = ''
            if not GUI_SETTINGS.isEmpty('securitySettingsURL'):
                securityLink = makeHtmlString(
                    'html_templates:lobby/system_messages', 'link', {
                        'text': _ms(
                            SYSTEM_MESSAGES.SECURITYMESSAGE_CHANGE_SETINGS),
                        'linkType': 'securityLink'
                    })
            SystemMessages.pushI18nMessage(
                '#system_messages:securityMessage/%s' % securityWarningType,
                type=SystemMessages.SM_TYPE.Warning,
                link=securityLink)
        return

    def writePeripheryLifetime(self):
        if AUTO_LOGIN_QUERY_ENABLED and connectionManager.peripheryID:
            self._preferences['peripheryLifetime'] = pickle.dumps(
                (connectionManager.peripheryID,
                 time.time() + _PERIPHERY_DEFAULT_LIFETIME))
            self._preferences.writeLoginInfo()

    def _getHost(self, authMethod, hostName):
        if hostName != AUTO_LOGIN_QUERY_URL:
            return hostName
        else:
            pickledData = self._preferences['peripheryLifetime']
            if pickledData:
                try:
                    peripheryID, expirationTimestamp = pickle.loads(
                        pickledData)
                except:
                    LOG_DEBUG(
                        "Couldn't to read pickled periphery data. Connecting to {0}."
                        .format(hostName))
                    return hostName

                if expirationTimestamp > time.time():
                    host = g_preDefinedHosts.periphery(peripheryID, False)
                    if host is None:
                        return hostName
                    if authMethod != CONNECTION_METHOD.BASIC and host.urlToken:
                        return host.urlToken
                    return host.url
            return hostName

    def __dumpUserName(self, name):
        """ Dump user name to the preferences.xml (required by WGLeague's anti-cheat).
        
        See WOTD-55587. This method doesn't belong to Preferences class, so it's placed here.
        """
        Settings.g_instance.userPrefs[Settings.KEY_LOGIN_INFO].writeString(
            'user', name)
        Settings.g_instance.save()
class Manager(ILoginManager):
    lobbyContext = dependency.descriptor(ILobbyContext)
    connectionMgr = dependency.descriptor(IConnectionManager)

    def __init__(self):
        self._preferences = None
        self.__servers = None
        return

    def init(self):
        self._preferences = Preferences()
        if constants.IS_DEVELOPMENT:
            self.__servers = DevelopmentServers(self._preferences)
        else:
            self.__servers = Servers(self._preferences)
        self.connectionMgr.onLoggedOn += self._onLoggedOn

    def fini(self):
        self.connectionMgr.onLoggedOn -= self._onLoggedOn
        self._preferences = None
        self.__servers.fini()
        self.__servers = None
        return

    def initiateLogin(self, email, password, serverName, isSocialToken2Login,
                      rememberUser):
        isWgcLogin = BigWorld.WGC_processingState(
        ) == constants.WGC_STATE.LOGIN_IN_PROGRESS
        if not isWgcLogin:
            isToken2Login = isSocialToken2Login or self._preferences['token2']
            if isToken2Login:
                authMethod = CONNECTION_METHOD.TOKEN2
            else:
                authMethod = CONNECTION_METHOD.BASIC
            serverName = self._getHost(authMethod, serverName)
            self._preferences['session'] = BigWorld.wg_cpsalt(
                self._preferences['session'])
            self._preferences['password_length'] = len(password)
            self._preferences['remember_user'] = rememberUser
            self._preferences['login'] = email
            self._preferences['server_name'] = serverName
            loginParams = {
                'login': self._preferences['login'],
                'session': self._preferences['session'],
                'temporary': str(int(not rememberUser)),
                'auth_method': authMethod
            }
            if isToken2Login:
                loginParams['token2'] = self._preferences['token2']
            if not isSocialToken2Login:
                self._preferences['login_type'] = 'credentials'
        else:
            loginParams = BigWorld.WGC_loginData()
            if loginParams is None:
                return
            authMethod = loginParams.get('auth_method', None)
            if authMethod is None:
                return
            serverName = self._getHost(authMethod, serverName)
        self.connectionMgr.initiateConnection(loginParams, password,
                                              serverName)
        self.connectionMgr.setLastLogin(email)
        return

    def initiateRelogin(self, login, token2, serverName):
        loginParams = None
        if login == 'wgc':
            if not BigWorld.WGC_prepareLogin():
                return
            loginParams = BigWorld.WGC_loginData()
        if loginParams is None:
            loginParams = {
                'login': login,
                'token2': token2,
                'session': BigWorld.wg_cpsalt(self._preferences['session']),
                'temporary': str(int(not self._preferences['remember_user'])),
                'auth_method': CONNECTION_METHOD.TOKEN2
            }
        self._preferences['server_name'] = serverName
        self.connectionMgr.initiateConnection(loginParams, '', serverName)
        return

    def getPreference(self, key):
        return self._preferences[key]

    def clearPreferences(self):
        self._preferences.clear()

    def clearToken2Preference(self):
        self._preferences['token2'] = ''

    def writePreferences(self):
        self._preferences.writeLoginInfo()

    @property
    def servers(self):
        return self.__servers

    def _onLoggedOn(self, responseData):
        name = responseData.get('name', 'UNKNOWN')
        token2 = responseData.get('token2', '')
        if BigWorld.WGC_processingState() == constants.WGC_STATE.LOGGEDIN:
            BigWorld.WGC_storeToken2(responseData['token2'])
        else:
            self.lobbyContext.setCredentials(name, token2)
            if self._preferences['remember_user']:
                self._preferences['name'] = name
                self._preferences['token2'] = token2
                if 'server_name' in self._preferences and AUTO_LOGIN_QUERY_ENABLED:
                    del self._preferences['server_name']
            else:
                email = self._preferences['login']
                serverName = self._preferences['server_name']
                session = self._preferences['session']
                self._preferences.clear()
                if not constants.IS_SINGAPORE and not GUI_SETTINGS.igrCredentialsReset:
                    self._preferences['login'] = email
                if not AUTO_LOGIN_QUERY_ENABLED:
                    self._preferences['server_name'] = serverName
                self._preferences['session'] = session
            self._preferences.writeLoginInfo()
            self.__dumpUserName(name)
        self._showSecurityMessage(responseData)

    def _showSecurityMessage(self, responseData):
        securityWarningType = responseData.get('security_msg')
        if securityWarningType is not None:
            securityLink = ''
            if not GUI_SETTINGS.isEmpty('securitySettingsURL'):
                securityLink = makeHtmlString(
                    'html_templates:lobby/system_messages', 'link', {
                        'text': _ms(
                            SYSTEM_MESSAGES.SECURITYMESSAGE_CHANGE_SETINGS),
                        'linkType': 'securityLink'
                    })
            SystemMessages.pushI18nMessage(
                '#system_messages:securityMessage/%s' % securityWarningType,
                type=SystemMessages.SM_TYPE.Warning,
                link=securityLink)
        return

    def writePeripheryLifetime(self):
        if AUTO_LOGIN_QUERY_ENABLED and self.connectionMgr.peripheryID:
            self._preferences['peripheryLifetime'] = pickle.dumps(
                (self.connectionMgr.peripheryID,
                 time.time() + _PERIPHERY_DEFAULT_LIFETIME))
            self._preferences.writeLoginInfo()

    @staticmethod
    def getAvailableSocialNetworks():
        raise SoftException(
            'This method should not be reached in this context')

    def initiateSocialLogin(self, socialNetworkName, serverName, rememberUser,
                            isRegistration):
        raise SoftException(
            'This method should not be reached in this context')

    def _getHost(self, authMethod, hostName):
        if hostName != AUTO_LOGIN_QUERY_URL:
            return hostName
        else:
            pickledData = self._preferences['peripheryLifetime']
            if pickledData:
                try:
                    peripheryID, expirationTimestamp = pickle.loads(
                        pickledData)
                except Exception:
                    LOG_DEBUG(
                        "Couldn't to read pickled periphery data. Connecting to {0}."
                        .format(hostName))
                    return hostName

                if expirationTimestamp > time.time():
                    host = g_preDefinedHosts.periphery(peripheryID, False)
                    if host is None:
                        return hostName
                    if authMethod != CONNECTION_METHOD.BASIC and host.urlToken:
                        return host.urlToken
                    return host.url
            return hostName

    def __dumpUserName(self, name):
        Settings.g_instance.userPrefs[Settings.KEY_LOGIN_INFO].writeString(
            'user', name)
        Settings.g_instance.save()