/** * libtransport -- C++ library for easy XMPP Transports development * * Copyright (C) 2011, Jan Kaluza <hanzz.k@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */#include"transport/UserRegistration.h"#include"transport/UserManager.h"#include"transport/StorageBackend.h"#include"transport/Transport.h"#include"transport/RosterManager.h"#include"transport/User.h"#include"transport/Logging.h"#include<boost/shared_ptr.hpp>#include<boost/thread.hpp>#include<boost/date_time/posix_time/posix_time.hpp>#include<boost/regex.hpp> usingnamespaceSwift;namespaceTransport{DEFINE_LOGGER(logger,"UserRegistration");UserRegistration::UserRegistration(Component*component,UserManager*userManager,StorageBackend*storageBackend){m_component=component;m_config=m_component->m_config;m_storageBackend=storageBackend;m_userManager=userManager;}UserRegistration::~UserRegistration(){}boolUserRegistration::registerUser(constUserInfo&row,boolallowPasswordChange){UserInfodummy;boolregistered=m_storageBackend->getUser(row.jid,dummy);if(!registered||(registered&&allowPasswordChange)){m_storageBackend->setUser(row);doUserRegistration(row);onUserRegistered(row);}return!registered;}boolUserRegistration::unregisterUser(conststd::string&barejid){UserInfouserInfo;boolregistered=m_storageBackend->getUser(barejid,userInfo);// This user is not registered, nothing to doif(!registered){LOG4CXX_WARN(logger,"Tried to unregister already unregistered user "<<barejid);returnfalse;}LOG4CXX_INFO(logger,"Unregistering user "<<barejid);// Remove user from databasem_storageBackend->removeUser(userInfo.id);// Disconnect the userUser*user=m_userManager->getUser(barejid);if(user){LOG4CXX_INFO(logger,"Disconnecting user "<<barejid);m_userManager->removeUser(user);}doUserUnregistration(userInfo);onUserUnregistered(userInfo);returntrue;}}