Changeset - e062a79b1f8e
[Not reviewed]
0 1 0
HanzZ - 15 years ago 2011-03-29 22:01:16
hanzz.k@gmail.com
Store also jid in db...
1 file changed with 2 insertions and 1 deletions:
0 comments (0 inline, 0 general)
src/usermanager.cpp
Show inline comments
 
@@ -75,53 +75,54 @@ void UserManager::handlePresence(Swift::Presence::ref presence) {
 
	User *user = getUser(userkey);
 
	if (!user ) {
 
		// No user and unavailable presence -> answer with unavailable
 
		if (presence->getType() == Swift::Presence::Unavailable) {
 
			Swift::Presence::ref response = Swift::Presence::create();
 
			response->setTo(presence->getFrom());
 
			response->setFrom(presence->getTo());
 
			response->setType(Swift::Presence::Unavailable);
 
			m_component->getStanzaChannel()->sendPresence(response);
 

	
 
			UserInfo res;
 
			bool registered = m_storageBackend->getUser(userkey, res);
 
			if (registered) {
 
				m_storageBackend->setUserOnline(res.id, false);
 
			}
 
			return;
 
		}
 

	
 
		UserInfo res;
 
		bool registered = m_storageBackend->getUser(userkey, res);
 

	
 
		if (!registered && m_component->inServerMode()) {
 
			res.password = m_component->getUserRegistryPassword(userkey);
 
			res.uin = presence->getFrom().getNode();
 
			res.jid = userkey;
 
			if (res.uin.find_last_of("%") != std::string::npos) {
 
				res.uin.replace(res.uin.find_last_of("%"), 1, "@");
 
			}
 
			registered = true;
 
			m_storageBackend->setUser(res);
 
			registered = m_storageBackend->getUser(userkey, res);
 
		}
 

	
 
		if (!registered) {
 
			// TODO: logging
 
			return;
 
		}
 

	
 
		// TODO: isVIP
 
// // 			bool isVip = res.vip;
 
// // 			std::list<std::string> const &x = CONFIG().allowedServers;
 
// // 			if (CONFIG().onlyForVIP && !isVip && std::find(x.begin(), x.end(), presence->getFrom().getDomain().getUTF8String()) == x.end()) {
 
// // 				Log(presence->getFrom().toString().getUTF8String(), "This user is not VIP, can't login...");
 
// // 				return;
 
// // 			}
 
// // 
 
// // 
 
				user = new User(presence->getFrom(), res, m_component);
 
				// TODO: handle features somehow
 
// // 			user->setFeatures(isVip ? CONFIG().VIPFeatures : CONFIG().transportFeatures);
 
// // // 				if (c != NULL)
 
// // // 					if (Transport::instance()->hasClientCapabilities(c->findAttribute("ver")))
 
// // // 						user->setResource(stanza.from().resource(), stanza.priority(), Transport::instance()->getCapabilities(c->findAttribute("ver")));
 
// // // 
 
			addUser(user);
0 comments (0 inline, 0 general)