/************************************************************************* * * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: ldapuserprofilebe.hxx,v $ * * $Revision: 1.5 $ * * last change: $Author: rt $ $Date: 2005-09-08 19:23:53 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. * * * GNU Lesser General Public License Version 2.1 * ============================================= * Copyright 2005 by Sun Microsystems, Inc. * 901 San Antonio Road, Palo Alto, CA 94303, USA * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License version 2.1, as published by the Free Software Foundation. * * This library 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 library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * ************************************************************************/ #ifndef EXTENSIONS_CONFIG_LDAP_LDAPUSERPROFILEBE_HXX_ #define EXTENSIONS_CONFIG_LDAP_LDAPUSERPROFILEBE_HXX_ #ifndef EXTENSIONS_CONFIG_LDAP_LDAPUSERPROF_HXX_ #include "ldapuserprof.hxx" #endif #ifndef EXTENSIONS_CONFIG_LDAP_LDAPACCESS_HXX_ #include "ldapaccess.hxx" #endif #ifndef EXTENSIONS_CONFIG_LDAP_LADPUSERPROFILELAYER_HXX_ #include "ldapuserprofilelayer.hxx" #endif #ifndef _COM_SUN_STAR_CONFIGURATION_BACKEND_XSINGLELAYERSTRATUM_HPP_ #include #endif #ifndef _COM_SUN_STAR_LANG_XINITIALIZATION_HPP_ #include #endif // _COM_SUN_STAR_LANG_XINITIALIZATION_HPP_ #ifndef _COM_SUN_STAR_UNO_XCOMPONENTCONTEXT_HPP_ #include #endif #ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_ #include #endif // _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_ #ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_ #include #endif // _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_ #ifndef _COM_SUN_STAR_CONFIGURATION_BACKEND_CANNOTCONNECTEXCEPTION_HPP_ #include #endif #ifndef _COM_SUN_STAR_CONFIGURATION_BACKEND_INSUFFICIENTACCESSRIGHTSEXCEPTION_HPP_ #include #endif // _COM_SUN_STAR_CONFIGURATION_BACKEND_INSUFFICIENTACCESSRIGHTSEXCEPTION_HPP_ #ifndef _COM_SUN_STAR_CONFIGURATION_BACKEND_CONNECTIONLOSTEXCEPTION_HPP_ #include #endif // _COM_SUN_STAR_CONFIGURATION_BACKEND_CONNECTIONLOSTEXCEPTION_HPP_ #ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_ #include #endif #ifndef _COM_SUN_STAR_LANG_ILLEGALARGUMENTEXCEPTION_HPP_ #include #endif // _COM_SUN_STAR_LANG_ILLEGALARGUMENTEXCEPTION_HPP_ #ifndef _CPPUHELPER_COMPBASE2_HXX_ #include #endif // _CPPUHELPER_COMPBASE3_HXX_ #define CONTEXT_ITEM_PREFIX_ "/modules/com.sun.star.configuration/bootstrap/" namespace extensions { namespace config { namespace ldap { namespace css = com::sun::star ; namespace uno = css::uno ; namespace lang = css::lang ; namespace ldap= css::ldap ; namespace backend = css::configuration::backend ; namespace container = css::container; //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ typedef cppu::WeakComponentImplHelper2 BackendBase ; struct LdapProfileMutexHolder { osl::Mutex mMutex; }; /** Implements the PlatformBackend service, a specialization of the SingleLayerStratum service for retreiving LDAP user profile configuration settings from a LDAP repsoitory. */ class LdapUserProfileBe : private LdapProfileMutexHolder, public BackendBase { public : LdapUserProfileBe(const uno::Reference& xContext); // throw(backend::BackendAccessException, backend::BackendSetupException, RuntimeException); ~LdapUserProfileBe(void) ; // XServiceInfo virtual rtl::OUString SAL_CALL getImplementationName( ) throw (uno::RuntimeException) ; virtual sal_Bool SAL_CALL supportsService( const rtl::OUString& aServiceName ) throw (uno::RuntimeException) ; virtual uno::Sequence SAL_CALL getSupportedServiceNames( ) throw (uno::RuntimeException) ; //XSingleLayerStratum virtual uno::Reference SAL_CALL getLayer( const rtl::OUString& aLayerId, const rtl::OUString& aTimestamp ) throw (backend::BackendAccessException, lang::IllegalArgumentException, uno::RuntimeException) ; virtual uno::Reference SAL_CALL getUpdatableLayer( const rtl::OUString& aLayerId ) throw (backend::BackendAccessException, lang::NoSupportException, lang::IllegalArgumentException, uno::RuntimeException) ; /** Provides the implementation name. @return implementation name */ static rtl::OUString SAL_CALL getLdapUserProfileBeName(void) ; /** Provides the supported services names @return service names */ static uno::Sequence SAL_CALL getLdapUserProfileBeServiceNames(void) ; private: /** Build OO/LDAP attribute mapping table */ void initializeMappingTable (const rtl::OUString& aFileMapName); /** Check if LDAP is configured */ bool readLdapConfiguration(LdapDefinition& aDefinition); bool getLdapStringParam(uno::Reference& xAccess, const rtl::OUString& aLdapSetting, rtl::OString& aServerParameter); void mapGenericException(ldap::LdapGenericException& aException) throw (backend::InsufficientAccessRightsException, backend::ConnectionLostException, backend::BackendAccessException); /** Connect to LDAP server */ void connectToLdapServer(const LdapDefinition& aDefinition ); /** Get URL of OO-to-LDAP Mapping File */ rtl::OUString getMappingFileUrl(const rtl::OUString& aFileMapName) const; /** Service Factory object */ uno::Reference mFactory; /** Component Context */ uno::Reference mContext ; /** Object for LDAP functionality */ LdapUserProfileSourceRef mLdapSource; /**Currently logged in user */ rtl::OUString mLoggedOnUser ; /** DN of currently logged in user */ rtl::OString mUserDN; } ; //------------------------------------------------------------------------------ }}} #endif // EXTENSIONS_CONFIG_LDAP_LDAPUSERPROFILE_HXX_