/* * AuthBackendPassword.cpp * * Copyright (C) 2009 Matthias Schiffer * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by the * Free Software Foundation, either version 3 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along * with this program. If not, see . */ #include "AuthBackendPassword.h" namespace Mad { namespace Modules { namespace AuthBackendPassword { const std::string AuthBackendPassword::methodName = "Password"; boost::shared_ptr AuthBackendPassword::authenticate(boost::shared_ptr provider, const std::string &subMethod, const std::string &user, const std::vector &data, std::vector& /*response*/, boost::shared_ptr context) throw(Core::Exception) { if(context.get() != 0 && dynamic_cast(context.get()) == 0) throw(Core::Exception(Core::Exception::INVALID_INPUT)); std::vector allowedMethods = getSubMethods(provider); if(std::find(allowedMethods.begin(), allowedMethods.end(), subMethod) == allowedMethods.end()) throw(Core::Exception(Core::Exception::INVALID_INPUT)); if(context.get() == 0) context.reset(new AuthContextPassword); if(!provider->checkPassword(user, data, subMethod)) throw(Core::Exception(Core::Exception::AUTHENTICATION)); return context; } } } }