CWS-TOOLING: integrate CWS kso32fixes2
2009-09-14 kso #i104767# - 64 bit build breaker 2009-09-14 kso #i14767# - compiler warning 2009-09-08 kso i104767# - Removed obsolete header. 2009-09-08 kso i104767# - Removed obsolete header include. 2009-09-08 kso #i104767# - Fixed build breaker. 2009-09-07 kso #i104767# - merged in dev300 m57. 2009-09-07 kso #i104767# - support for system credentials usage 2009-09-07 kso #i104767# - support for system credentials usage 2009-09-07 kso #i104767# - support for system credentials usage 2009-09-07 kso #i104767# - support for system credentials usage 2009-09-07 kso #i104767# - support for system credentials usage 2009-09-07 Kai Sommerfeld #i104767# - support for system credentials usage 2009-09-07 Kai Sommerfeld #i104767# - support for system credentials usage 2009-09-07 ks93798 #i104767# - adaptions for NTLM SSO
This commit is contained in:
parent
85d32ee148
commit
84a850128d
8 changed files with 340 additions and 181 deletions
|
@ -34,13 +34,14 @@
|
|||
#include <vector>
|
||||
#include <map>
|
||||
#include <com/sun/star/task/XPasswordContainer.hpp>
|
||||
#include <com/sun/star/task/XUrlContainer.hpp>
|
||||
#include <com/sun/star/task/PasswordRequestMode.hpp>
|
||||
#include <com/sun/star/lang/XServiceInfo.hpp>
|
||||
#include <com/sun/star/lang/XSingleServiceFactory.hpp>
|
||||
#include <com/sun/star/lang/XEventListener.hpp>
|
||||
#include <com/sun/star/lang/XComponent.hpp>
|
||||
#include <com/sun/star/task/XMasterPasswordHandling2.hpp>
|
||||
#include <cppuhelper/implbase4.hxx>
|
||||
#include <cppuhelper/implbase5.hxx>
|
||||
#include <cppuhelper/typeprovider.hxx>
|
||||
#include <cppuhelper/queryinterface.hxx>
|
||||
#include <cppuhelper/factory.hxx>
|
||||
|
@ -52,6 +53,8 @@
|
|||
#include <rtl/ref.hxx>
|
||||
#include <osl/mutex.hxx>
|
||||
|
||||
#include "syscreds.hxx"
|
||||
|
||||
#define MEMORY_RECORD 0
|
||||
#define PERSISTENT_RECORD 1
|
||||
|
||||
|
@ -241,9 +244,10 @@ enum PasswordState {
|
|||
cancelled
|
||||
};
|
||||
|
||||
class PasswordContainer : public ::cppu::WeakImplHelper4<
|
||||
class PasswordContainer : public ::cppu::WeakImplHelper5<
|
||||
::com::sun::star::task::XPasswordContainer,
|
||||
::com::sun::star::task::XMasterPasswordHandling2,
|
||||
::com::sun::star::task::XUrlContainer,
|
||||
::com::sun::star::lang::XServiceInfo,
|
||||
::com::sun::star::lang::XEventListener >
|
||||
{
|
||||
|
@ -253,6 +257,7 @@ private:
|
|||
::osl::Mutex mMutex;
|
||||
::rtl::OUString m_aMasterPasswd; // master password is set when the string is not empty
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > mComponent;
|
||||
SysCredentialsConfig mUrlContainer;
|
||||
|
||||
::com::sun::star::uno::Sequence< ::com::sun::star::task::UserRecord > CopyToUserRecordSequence(
|
||||
const ::std::list< NamePassRecord >& original,
|
||||
|
@ -269,6 +274,19 @@ private:
|
|||
const ::rtl::OUString& name,
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& Handler )
|
||||
throw(::com::sun::star::uno::RuntimeException);
|
||||
bool createUrlRecord(
|
||||
const PassMap::iterator & rIter,
|
||||
bool bName,
|
||||
const ::rtl::OUString & aName,
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& aHandler,
|
||||
::com::sun::star::task::UrlRecord & rRec )
|
||||
throw( ::com::sun::star::uno::RuntimeException );
|
||||
|
||||
::com::sun::star::task::UrlRecord find(
|
||||
const ::rtl::OUString& aURL,
|
||||
const ::rtl::OUString& aName,
|
||||
bool bName, // only needed to support empty user names
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& aHandler ) throw(::com::sun::star::uno::RuntimeException);
|
||||
|
||||
::rtl::OUString GetDefaultMasterPassword();
|
||||
|
||||
|
@ -369,6 +387,12 @@ public:
|
|||
virtual ::sal_Bool SAL_CALL useDefaultMasterPassword( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& xHandler ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::sal_Bool SAL_CALL isDefaultMasterPasswordUsed( ) throw (::com::sun::star::uno::RuntimeException);
|
||||
|
||||
// XUrlContainer
|
||||
virtual void SAL_CALL addUrl( const ::rtl::OUString& Url, ::sal_Bool MakePersistent ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::rtl::OUString SAL_CALL findUrl( const ::rtl::OUString& Url ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual void SAL_CALL removeUrl( const ::rtl::OUString& Url ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getUrls( ::sal_Bool OnlyPersistent ) throw (::com::sun::star::uno::RuntimeException);
|
||||
|
||||
void Notify();
|
||||
};
|
||||
|
||||
|
|
|
@ -54,7 +54,6 @@ SLOFILES=\
|
|||
$(SLO)$/inettype.obj \
|
||||
$(SLO)$/iniadrtk.obj \
|
||||
$(SLO)$/lngmisc.obj \
|
||||
$(SLO)$/loginerr.obj \
|
||||
$(SLO)$/PasswordHelper.obj
|
||||
|
||||
SRS1NAME=$(TARGET)
|
||||
|
|
|
@ -43,7 +43,8 @@ DLLPRE=
|
|||
# --- Files -------------------------------------
|
||||
|
||||
SLOFILES= \
|
||||
$(SLO)$/passwordcontainer.obj
|
||||
$(SLO)$/passwordcontainer.obj\
|
||||
$(SLO)$/syscreds.obj
|
||||
|
||||
SHL1TARGET= $(TARGET)
|
||||
SHL1IMPLIB= i$(TARGET)
|
||||
|
|
|
@ -152,10 +152,17 @@ static vector< ::rtl::OUString > getInfoFromInd( ::rtl::OUString aInd )
|
|||
static sal_Bool shorterUrl( ::rtl::OUString& aURL )
|
||||
{
|
||||
sal_Int32 aInd = aURL.lastIndexOf( sal_Unicode( '/' ) );
|
||||
if( aInd > 0 && aURL.indexOf( ::rtl::OUString::createFromAscii( "://" ) ) != aInd-2 )
|
||||
|
||||
if( aInd > 0 )
|
||||
{
|
||||
aURL = aURL.copy( 0, aInd );
|
||||
return sal_True;
|
||||
sal_Int32 aPrevInd = aURL.lastIndexOf( sal_Unicode( '/' ), aInd );
|
||||
if ( aURL.indexOf( ::rtl::OUString::createFromAscii( "://" ) )
|
||||
!= aPrevInd - 2 ||
|
||||
aInd != aURL.getLength() - 1 )
|
||||
{
|
||||
aURL = aURL.copy( 0, aInd );
|
||||
return sal_True;
|
||||
}
|
||||
}
|
||||
|
||||
return sal_False;
|
||||
|
@ -753,37 +760,14 @@ void PasswordContainer::PrivateAdd( const ::rtl::OUString& Url, const ::rtl::OUS
|
|||
|
||||
UrlRecord SAL_CALL PasswordContainer::find( const ::rtl::OUString& aURL, const Reference< XInteractionHandler >& aHandler ) throw(RuntimeException)
|
||||
{
|
||||
::osl::MutexGuard aGuard( mMutex );
|
||||
return find( aURL, rtl::OUString(), false, aHandler );
|
||||
}
|
||||
|
||||
if( !m_aContainer.empty() )
|
||||
{
|
||||
::rtl::OUString aUrl( aURL );
|
||||
PassMap::iterator aIter = m_aContainer.find( aUrl );
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
if( aIter != m_aContainer.end() )
|
||||
return UrlRecord( aIter->first, CopyToUserRecordSequence( aIter->second, aHandler ) );
|
||||
|
||||
// each iteration remove last '/...' section from the aUrl
|
||||
// while it's possible, up to the most left '://'
|
||||
while( shorterUrl( aUrl ) )
|
||||
{
|
||||
// first look for <url>/somename and then look for <url>/somename/...
|
||||
aIter = m_aContainer.find( aUrl );
|
||||
if( aIter != m_aContainer.end() )
|
||||
return UrlRecord( aIter->first, CopyToUserRecordSequence( aIter->second, aHandler ) );
|
||||
else
|
||||
{
|
||||
::rtl::OUString tmpUrl( aUrl );
|
||||
tmpUrl += ::rtl::OUString::createFromAscii( "/" );
|
||||
|
||||
aIter = m_aContainer.lower_bound( aUrl );
|
||||
if( aIter != m_aContainer.end() )
|
||||
return UrlRecord( aIter->first, CopyToUserRecordSequence( aIter->second, aHandler ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return UrlRecord();
|
||||
UrlRecord SAL_CALL PasswordContainer::findForName( const ::rtl::OUString& aURL, const ::rtl::OUString& aName, const Reference< XInteractionHandler >& aHandler ) throw(RuntimeException)
|
||||
{
|
||||
return find( aURL, aName, true, aHandler );
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
@ -810,48 +794,76 @@ Sequence< UserRecord > PasswordContainer::FindUsr( const list< NamePassRecord >&
|
|||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
UrlRecord SAL_CALL PasswordContainer::findForName( const ::rtl::OUString& aURL, const ::rtl::OUString& aName, const Reference< XInteractionHandler >& aHandler ) throw(RuntimeException)
|
||||
bool PasswordContainer::createUrlRecord(
|
||||
const PassMap::iterator & rIter,
|
||||
bool bName,
|
||||
const ::rtl::OUString & aName,
|
||||
const Reference< XInteractionHandler >& aHandler,
|
||||
UrlRecord & rRec )
|
||||
throw( RuntimeException )
|
||||
{
|
||||
if ( bName )
|
||||
{
|
||||
Sequence< UserRecord > aUsrRec
|
||||
= FindUsr( rIter->second, aName, aHandler );
|
||||
if( aUsrRec.getLength() )
|
||||
{
|
||||
rRec = UrlRecord( rIter->first, aUsrRec );
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
rRec = UrlRecord(
|
||||
rIter->first,
|
||||
CopyToUserRecordSequence( rIter->second, aHandler ) );
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
UrlRecord PasswordContainer::find(
|
||||
const ::rtl::OUString& aURL,
|
||||
const ::rtl::OUString& aName,
|
||||
bool bName, // only needed to support empty user names
|
||||
const Reference< XInteractionHandler >& aHandler ) throw(RuntimeException)
|
||||
{
|
||||
::osl::MutexGuard aGuard( mMutex );
|
||||
if( !m_aContainer.empty() )
|
||||
|
||||
if( !m_aContainer.empty() && aURL.getLength() )
|
||||
{
|
||||
::rtl::OUString aUrl( aURL );
|
||||
PassMap::iterator aIter = m_aContainer.find( aUrl );
|
||||
|
||||
if( aIter != m_aContainer.end() )
|
||||
{
|
||||
Sequence< UserRecord > aUsrRec = FindUsr( aIter->second, aName, aHandler );
|
||||
if( aUsrRec.getLength() )
|
||||
return UrlRecord( aIter->first, aUsrRec );
|
||||
}
|
||||
|
||||
// each iteration remove last '/...' section from the aUrl
|
||||
// while it's possible, up to the most left '://'
|
||||
while( shorterUrl( aUrl ) )
|
||||
do
|
||||
{
|
||||
// first look for <url>/somename and then look for <url>/somename/...
|
||||
aIter = m_aContainer.find( aUrl );
|
||||
PassMap::iterator aIter = m_aContainer.find( aUrl );
|
||||
if( aIter != m_aContainer.end() )
|
||||
{
|
||||
Sequence< UserRecord > aUsrRec = FindUsr( aIter->second, aName, aHandler );
|
||||
if( aUsrRec.getLength() )
|
||||
return UrlRecord( aIter->first, aUsrRec );
|
||||
UrlRecord aRec;
|
||||
if ( createUrlRecord( aIter, bName, aName, aHandler, aRec ) )
|
||||
return aRec;
|
||||
}
|
||||
else
|
||||
{
|
||||
::rtl::OUString tmpUrl( aUrl );
|
||||
tmpUrl += ::rtl::OUString::createFromAscii( "/" );
|
||||
if ( tmpUrl.getStr()[tmpUrl.getLength() - 1] != (sal_Unicode)'/' )
|
||||
tmpUrl += ::rtl::OUString::createFromAscii( "/" );
|
||||
|
||||
aIter = m_aContainer.lower_bound( aUrl );
|
||||
if( aIter != m_aContainer.end() )
|
||||
aIter = m_aContainer.lower_bound( tmpUrl );
|
||||
if( aIter != m_aContainer.end() && aIter->first.match( tmpUrl ) )
|
||||
{
|
||||
Sequence< UserRecord > aUsrRec = FindUsr( aIter->second, aName, aHandler );
|
||||
if( aUsrRec.getLength() )
|
||||
return UrlRecord( aIter->first, aUsrRec );
|
||||
UrlRecord aRec;
|
||||
if ( createUrlRecord( aIter, bName, aName, aHandler, aRec ) )
|
||||
return aRec;
|
||||
}
|
||||
}
|
||||
}
|
||||
while( shorterUrl( aUrl ) && aUrl.getLength() );
|
||||
}
|
||||
|
||||
return UrlRecord();
|
||||
|
@ -1355,6 +1367,35 @@ void SAL_CALL PasswordContainer::removeMasterPassword()
|
|||
return ( m_pStorageFile->useStorage() && m_pStorageFile->getEncodedMP( aEncodedMP ) && !aEncodedMP.getLength() );
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
void SAL_CALL PasswordContainer::addUrl( const ::rtl::OUString& Url, ::sal_Bool MakePersistent )
|
||||
throw (uno::RuntimeException)
|
||||
{
|
||||
mUrlContainer.add( Url, MakePersistent );
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
::rtl::OUString SAL_CALL PasswordContainer::findUrl( const ::rtl::OUString& Url )
|
||||
throw (uno::RuntimeException)
|
||||
{
|
||||
return mUrlContainer.find( Url );
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
void SAL_CALL PasswordContainer::removeUrl( const ::rtl::OUString& Url )
|
||||
throw (uno::RuntimeException)
|
||||
{
|
||||
mUrlContainer.remove( Url );
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
uno::Sequence< ::rtl::OUString > SAL_CALL PasswordContainer::getUrls( ::sal_Bool OnlyPersistent )
|
||||
throw (uno::RuntimeException)
|
||||
{
|
||||
return mUrlContainer.list( OnlyPersistent );
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
void PasswordContainer::Notify()
|
||||
|
@ -1487,7 +1528,9 @@ MasterPasswordRequest_Impl::MasterPasswordRequest_Impl( PasswordRequestMode Mode
|
|||
aRememberModes, // rRememberPasswordModes
|
||||
RememberAuthentication_NO, // eDefaultRememberPasswordMode
|
||||
aRememberModes, // rRememberAccountModes
|
||||
RememberAuthentication_NO // eDefaultRememberAccountMode
|
||||
RememberAuthentication_NO, // eDefaultRememberAccountMode
|
||||
sal_False, // bCanUseSystemCredentials
|
||||
sal_False // bDefaultUseSystemCredentials
|
||||
);
|
||||
|
||||
Sequence<
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
#include <com/sun/star/task/XInteractionApprove.hpp>
|
||||
#include <com/sun/star/task/XInteractionDisapprove.hpp>
|
||||
#include <com/sun/star/ucb/XInteractionReplaceExistingData.hpp>
|
||||
#include <com/sun/star/ucb/XInteractionSupplyAuthentication.hpp>
|
||||
#include <com/sun/star/ucb/XInteractionSupplyAuthentication2.hpp>
|
||||
#include <com/sun/star/ucb/XInteractionSupplyName.hpp>
|
||||
#include <rtl/ref.hxx>
|
||||
#include <cppuhelper/weak.hxx>
|
||||
|
@ -342,7 +342,7 @@ public:
|
|||
class UCBHELPER_DLLPUBLIC InteractionSupplyAuthentication :
|
||||
public InteractionContinuation,
|
||||
public com::sun::star::lang::XTypeProvider,
|
||||
public com::sun::star::ucb::XInteractionSupplyAuthentication
|
||||
public com::sun::star::ucb::XInteractionSupplyAuthentication2
|
||||
{
|
||||
com::sun::star::uno::Sequence< com::sun::star::ucb::RememberAuthentication >
|
||||
m_aRememberPasswordModes;
|
||||
|
@ -360,6 +360,9 @@ class UCBHELPER_DLLPUBLIC InteractionSupplyAuthentication :
|
|||
unsigned m_bCanSetUserName : 1;
|
||||
unsigned m_bCanSetPassword : 1;
|
||||
unsigned m_bCanSetAccount : 1;
|
||||
unsigned m_bCanUseSystemCredentials : 1;
|
||||
unsigned m_bDefaultUseSystemCredentials : 1;
|
||||
unsigned m_bUseSystemCredentials : 1;
|
||||
|
||||
public:
|
||||
/**
|
||||
|
@ -382,7 +385,7 @@ public:
|
|||
sal_Bool bCanSetRealm,
|
||||
sal_Bool bCanSetUserName,
|
||||
sal_Bool bCanSetPassword,
|
||||
sal_Bool bCanSetAccount );
|
||||
sal_Bool bCanSetAccount);
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
|
@ -408,6 +411,11 @@ public:
|
|||
* @param eDefaultRememberAccountMode specifies the default
|
||||
* authentication-remember-mode for accounts preferred by the
|
||||
* requesting client.
|
||||
* @param bCanUseSystemCredentials indicates whether issuer of the
|
||||
* authetication request can obtain and use system credentials
|
||||
* for authentication.
|
||||
* @param bDefaultUseSystemCredentials specifies the default system
|
||||
* credentials usage preferred by the requesting client
|
||||
*
|
||||
* @see com::sun::star::ucb::AuthenticationRequest
|
||||
* @see com::sun::star::ucb::RememberAuthentication
|
||||
|
@ -427,7 +435,9 @@ public:
|
|||
com::sun::star::ucb::RememberAuthentication > &
|
||||
rRememberAccountModes,
|
||||
const com::sun::star::ucb::RememberAuthentication
|
||||
eDefaultRememberAccountMode );
|
||||
eDefaultRememberAccountMode,
|
||||
sal_Bool bCanUseSystemCredentials,
|
||||
sal_Bool bDefaultUseSystemCredentials );
|
||||
|
||||
// XInterface
|
||||
virtual com::sun::star::uno::Any SAL_CALL
|
||||
|
@ -497,6 +507,12 @@ public:
|
|||
setRememberAccount( com::sun::star::ucb::RememberAuthentication Remember )
|
||||
throw( com::sun::star::uno::RuntimeException );
|
||||
|
||||
// XInteractionSupplyAuthentication2
|
||||
virtual ::sal_Bool SAL_CALL canUseSystemCredentials( ::sal_Bool& Default )
|
||||
throw ( ::com::sun::star::uno::RuntimeException );
|
||||
virtual void SAL_CALL setUseSystemCredentials( ::sal_Bool UseSystemCredentials )
|
||||
throw ( ::com::sun::star::uno::RuntimeException );
|
||||
|
||||
// Non-interface methods.
|
||||
|
||||
/**
|
||||
|
@ -548,6 +564,8 @@ public:
|
|||
*/
|
||||
const com::sun::star::ucb::RememberAuthentication &
|
||||
getRememberAccountMode() const { return m_eRememberAccountMode; }
|
||||
|
||||
sal_Bool getUseSystemCredentials() const { return m_bUseSystemCredentials; }
|
||||
};
|
||||
|
||||
//============================================================================
|
||||
|
@ -571,7 +589,10 @@ inline InteractionSupplyAuthentication::InteractionSupplyAuthentication(
|
|||
m_bCanSetRealm( bCanSetRealm ),
|
||||
m_bCanSetUserName( bCanSetUserName ),
|
||||
m_bCanSetPassword( bCanSetPassword ),
|
||||
m_bCanSetAccount( bCanSetAccount )
|
||||
m_bCanSetAccount( bCanSetAccount ),
|
||||
m_bCanUseSystemCredentials( sal_False ),
|
||||
m_bDefaultUseSystemCredentials( sal_False ),
|
||||
m_bUseSystemCredentials( sal_False )
|
||||
{
|
||||
m_aRememberPasswordModes[ 0 ]
|
||||
= com::sun::star::ucb::RememberAuthentication_NO;
|
||||
|
@ -593,7 +614,9 @@ inline InteractionSupplyAuthentication::InteractionSupplyAuthentication(
|
|||
const com::sun::star::uno::Sequence<
|
||||
com::sun::star::ucb::RememberAuthentication > & rRememberAccountModes,
|
||||
const com::sun::star::ucb::RememberAuthentication
|
||||
eDefaultRememberAccountMode )
|
||||
eDefaultRememberAccountMode,
|
||||
sal_Bool bCanUseSystemCredentials,
|
||||
sal_Bool bDefaultUseSystemCredentials )
|
||||
: InteractionContinuation( pRequest ),
|
||||
m_aRememberPasswordModes( rRememberPasswordModes ),
|
||||
m_aRememberAccountModes( rRememberAccountModes ),
|
||||
|
@ -604,7 +627,10 @@ inline InteractionSupplyAuthentication::InteractionSupplyAuthentication(
|
|||
m_bCanSetRealm( bCanSetRealm ),
|
||||
m_bCanSetUserName( bCanSetUserName ),
|
||||
m_bCanSetPassword( bCanSetPassword ),
|
||||
m_bCanSetAccount( bCanSetAccount )
|
||||
m_bCanSetAccount( bCanSetAccount ),
|
||||
m_bCanUseSystemCredentials( bCanUseSystemCredentials ),
|
||||
m_bDefaultUseSystemCredentials( bDefaultUseSystemCredentials ),
|
||||
m_bUseSystemCredentials( bDefaultUseSystemCredentials & bCanUseSystemCredentials )
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -33,9 +33,12 @@
|
|||
|
||||
#include <rtl/ref.hxx>
|
||||
#include <ucbhelper/interactionrequest.hxx>
|
||||
#include <com/sun/star/ucb/AuthenticationRequest.hpp>
|
||||
#include "ucbhelper/ucbhelperdllapi.h"
|
||||
|
||||
namespace com { namespace sun { namespace star { namespace ucb {
|
||||
class URLAuthenticationRequest;
|
||||
} } } }
|
||||
|
||||
namespace ucbhelper {
|
||||
|
||||
/**
|
||||
|
@ -63,12 +66,13 @@ class UCBHELPER_DLLPUBLIC SimpleAuthenticationRequest : public ucbhelper::Intera
|
|||
ucbhelper::InteractionSupplyAuthentication > m_xAuthSupplier;
|
||||
|
||||
private:
|
||||
void initialize( ::com::sun::star::ucb::AuthenticationRequest aRequest,
|
||||
const sal_Bool & bCanSetRealm,
|
||||
const sal_Bool & bCanSetUserName,
|
||||
const sal_Bool & bCanSetPassword,
|
||||
const sal_Bool & bCanSetAccount,
|
||||
const sal_Bool & bAllowPersistentStoring );
|
||||
void initialize( const ::com::sun::star::ucb::URLAuthenticationRequest & rRequest,
|
||||
sal_Bool bCanSetRealm,
|
||||
sal_Bool bCanSetUserName,
|
||||
sal_Bool bCanSetPassword,
|
||||
sal_Bool bCanSetAccount,
|
||||
sal_Bool bAllowPersistentStoring,
|
||||
sal_Bool bAllowUseSystemCredentials );
|
||||
|
||||
public:
|
||||
/** Specification whether some entity (realm, username, password, account)
|
||||
|
@ -84,6 +88,7 @@ public:
|
|||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param rURL contains a URL for which authentication is requested.
|
||||
* @param rServerName contains a server name.
|
||||
* @param rRealm contains a realm, if applicable.
|
||||
* @param rUserName contains a username, if available (for instance from
|
||||
|
@ -92,7 +97,8 @@ public:
|
|||
* a previous try).
|
||||
* @param rAccount contains an account, if applicable.
|
||||
*/
|
||||
SimpleAuthenticationRequest( const rtl::OUString & rServerName,
|
||||
SimpleAuthenticationRequest( const rtl::OUString & rURL,
|
||||
const rtl::OUString & rServerName,
|
||||
const rtl::OUString & rRealm,
|
||||
const rtl::OUString & rUserName,
|
||||
const rtl::OUString & rPassword,
|
||||
|
@ -102,6 +108,7 @@ public:
|
|||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param rURL contains a URL for which authentication is requested.
|
||||
* @param rServerName contains a server name.
|
||||
* @param rRealm contains a realm, if applicable.
|
||||
* @param rUserName contains a username, if available (for instance from
|
||||
|
@ -109,14 +116,19 @@ public:
|
|||
* @param rPassword contains a password, if available (for instance from
|
||||
* a previous try).
|
||||
* @param rAccount contains an account, if applicable.
|
||||
* @param bAllowPersistentStoring specifies if the credentials should stored in the passowrd container persistently
|
||||
* @param bAllowPersistentStoring specifies if the credentials should
|
||||
* be stored in the passowrd container persistently
|
||||
* @param bAllowUseSystemCredntials specifies if requesting client is
|
||||
* able to obtain and use system credentials for authentication
|
||||
*/
|
||||
SimpleAuthenticationRequest( const rtl::OUString & rServerName,
|
||||
SimpleAuthenticationRequest( const rtl::OUString & rURL,
|
||||
const rtl::OUString & rServerName,
|
||||
const rtl::OUString & rRealm,
|
||||
const rtl::OUString & rUserName,
|
||||
const rtl::OUString & rPassword,
|
||||
const rtl::OUString & rAccount,
|
||||
const sal_Bool & bAllowPersistentStoring);
|
||||
sal_Bool bAllowPersistentStoring,
|
||||
sal_Bool bAllowUseSystemCredentials );
|
||||
|
||||
|
||||
/**
|
||||
|
@ -138,7 +150,8 @@ public:
|
|||
modifiable.
|
||||
* @param rAccount contains an account, if applicable.
|
||||
*/
|
||||
SimpleAuthenticationRequest( const rtl::OUString & rServerName,
|
||||
SimpleAuthenticationRequest( const rtl::OUString & rURL,
|
||||
const rtl::OUString & rServerName,
|
||||
EntityType eRealmType,
|
||||
const rtl::OUString & rRealm,
|
||||
EntityType eUserNameType,
|
||||
|
@ -152,6 +165,7 @@ public:
|
|||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param rURL contains a URL for which authentication is requested.
|
||||
* @param rServerName contains a server name.
|
||||
* @param eRealmType specifies whether a realm is applicable and
|
||||
modifiable.
|
||||
|
@ -167,9 +181,13 @@ public:
|
|||
* @param eAccountType specifies whether an account is applicable and
|
||||
modifiable.
|
||||
* @param rAccount contains an account, if applicable.
|
||||
* @param bAllowPersistentStoring specifies if the credentials should stored in the passowrd container persistently
|
||||
* @param bAllowPersistentStoring specifies if the credentials should
|
||||
* be stored in the passowrd container persistently
|
||||
* @param bAllowUseSystemCredntials specifies if requesting client is
|
||||
* able to obtain and use system credentials for authentication
|
||||
*/
|
||||
SimpleAuthenticationRequest( const rtl::OUString & rServerName,
|
||||
SimpleAuthenticationRequest( const rtl::OUString & rURL,
|
||||
const rtl::OUString & rServerName,
|
||||
EntityType eRealmType,
|
||||
const rtl::OUString & rRealm,
|
||||
EntityType eUserNameType,
|
||||
|
@ -178,7 +196,8 @@ public:
|
|||
const rtl::OUString & rPassword,
|
||||
EntityType eAccountType,
|
||||
const rtl::OUString & rAccount,
|
||||
const sal_Bool & bAllowPersistentStoring);
|
||||
sal_Bool bAllowPersistentStoring,
|
||||
sal_Bool bAllowUseSystemCredentials );
|
||||
|
||||
/**
|
||||
* This method returns the supplier for the missing authentication data,
|
||||
|
|
|
@ -704,7 +704,8 @@ InteractionSupplyAuthentication::queryInterface( const uno::Type & rType )
|
|||
uno::Any aRet = cppu::queryInterface( rType,
|
||||
static_cast< lang::XTypeProvider * >( this ),
|
||||
static_cast< task::XInteractionContinuation * >( this ),
|
||||
static_cast< ucb::XInteractionSupplyAuthentication * >( this ) );
|
||||
static_cast< ucb::XInteractionSupplyAuthentication * >( this ),
|
||||
static_cast< ucb::XInteractionSupplyAuthentication2 * >( this ));
|
||||
|
||||
return aRet.hasValue()
|
||||
? aRet : InteractionContinuation::queryInterface( rType );
|
||||
|
@ -750,7 +751,7 @@ uno::Sequence< uno::Type > SAL_CALL InteractionSupplyAuthentication::getTypes()
|
|||
uno::Reference< lang::XTypeProvider > * >( 0 ) ),
|
||||
getCppuType( static_cast<
|
||||
uno::Reference<
|
||||
ucb::XInteractionSupplyAuthentication > * >( 0 ) ) );
|
||||
ucb::XInteractionSupplyAuthentication2 > * >( 0 ) ) );
|
||||
pCollection = &collection;
|
||||
}
|
||||
}
|
||||
|
@ -904,6 +905,33 @@ void SAL_CALL InteractionSupplyAuthentication::setRememberAccount(
|
|||
m_eRememberAccountMode = Remember;
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
//
|
||||
// XInteractionSupplyAuthentication2 methods.
|
||||
//
|
||||
//=========================================================================
|
||||
|
||||
// virtual
|
||||
::sal_Bool SAL_CALL
|
||||
InteractionSupplyAuthentication::canUseSystemCredentials(
|
||||
::sal_Bool& Default )
|
||||
throw ( uno::RuntimeException )
|
||||
{
|
||||
Default = m_bDefaultUseSystemCredentials;
|
||||
return m_bCanUseSystemCredentials;
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
// virtual
|
||||
void SAL_CALL InteractionSupplyAuthentication::setUseSystemCredentials(
|
||||
::sal_Bool UseSystemCredentials )
|
||||
throw ( uno::RuntimeException )
|
||||
{
|
||||
if ( m_bCanUseSystemCredentials )
|
||||
m_bUseSystemCredentials = UseSystemCredentials;
|
||||
}
|
||||
|
||||
|
||||
//=========================================================================
|
||||
//=========================================================================
|
||||
//
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
// MARKER(update_precomp.py): autogen include statement, do not remove
|
||||
#include "precompiled_ucbhelper.hxx"
|
||||
#include <com/sun/star/task/XMasterPasswordHandling.hpp>
|
||||
#include <com/sun/star/ucb/URLAuthenticationRequest.hpp>
|
||||
#include <ucbhelper/simpleauthenticationrequest.hxx>
|
||||
|
||||
using namespace com::sun::star;
|
||||
|
@ -38,14 +39,15 @@ using namespace ucbhelper;
|
|||
|
||||
//=========================================================================
|
||||
SimpleAuthenticationRequest::SimpleAuthenticationRequest(
|
||||
const rtl::OUString & rURL,
|
||||
const rtl::OUString & rServerName,
|
||||
const rtl::OUString & rRealm,
|
||||
const rtl::OUString & rUserName,
|
||||
const rtl::OUString & rPassword,
|
||||
const rtl::OUString & rAccount )
|
||||
{
|
||||
// Fill request...
|
||||
ucb::AuthenticationRequest aRequest;
|
||||
// Fill request...
|
||||
ucb::URLAuthenticationRequest aRequest;
|
||||
// aRequest.Message = // OUString
|
||||
// aRequest.Context = // XInterface
|
||||
aRequest.Classification = task::InteractionClassification_ERROR;
|
||||
|
@ -61,26 +63,30 @@ SimpleAuthenticationRequest::SimpleAuthenticationRequest(
|
|||
aRequest.HasAccount = ( rAccount.getLength() > 0 );
|
||||
if ( aRequest.HasAccount )
|
||||
aRequest.Account = rAccount;
|
||||
aRequest.URL = rURL;
|
||||
|
||||
initialize(aRequest,
|
||||
initialize(aRequest,
|
||||
sal_False,
|
||||
sal_True,
|
||||
sal_True,
|
||||
aRequest.HasAccount,
|
||||
sal_False);
|
||||
sal_False,
|
||||
sal_False );
|
||||
}
|
||||
//=========================================================================
|
||||
SimpleAuthenticationRequest::SimpleAuthenticationRequest(
|
||||
const rtl::OUString & rURL,
|
||||
const rtl::OUString & rServerName,
|
||||
const rtl::OUString & rRealm,
|
||||
const rtl::OUString & rUserName,
|
||||
const rtl::OUString & rPassword,
|
||||
const rtl::OUString & rAccount,
|
||||
const sal_Bool & bAllowPersistentStoring )
|
||||
sal_Bool bAllowPersistentStoring,
|
||||
sal_Bool bAllowUseSystemCredentials )
|
||||
{
|
||||
|
||||
// Fill request...
|
||||
ucb::AuthenticationRequest aRequest;
|
||||
// Fill request...
|
||||
ucb::URLAuthenticationRequest aRequest;
|
||||
// aRequest.Message = // OUString
|
||||
// aRequest.Context = // XInterface
|
||||
aRequest.Classification = task::InteractionClassification_ERROR;
|
||||
|
@ -96,24 +102,116 @@ SimpleAuthenticationRequest::SimpleAuthenticationRequest(
|
|||
aRequest.HasAccount = ( rAccount.getLength() > 0 );
|
||||
if ( aRequest.HasAccount )
|
||||
aRequest.Account = rAccount;
|
||||
aRequest.URL = rURL;
|
||||
|
||||
initialize(aRequest,
|
||||
initialize(aRequest,
|
||||
sal_False,
|
||||
sal_True,
|
||||
sal_True,
|
||||
aRequest.HasAccount,
|
||||
bAllowPersistentStoring);
|
||||
bAllowPersistentStoring,
|
||||
bAllowUseSystemCredentials );
|
||||
}
|
||||
|
||||
void SimpleAuthenticationRequest::initialize(
|
||||
ucb::AuthenticationRequest aRequest,
|
||||
const sal_Bool & bCanSetRealm,
|
||||
const sal_Bool & bCanSetUserName,
|
||||
const sal_Bool & bCanSetPassword,
|
||||
const sal_Bool & bCanSetAccount,
|
||||
const sal_Bool & bAllowPersistentStoring )
|
||||
//=========================================================================
|
||||
SimpleAuthenticationRequest::SimpleAuthenticationRequest(
|
||||
const rtl::OUString & rURL,
|
||||
const rtl::OUString & rServerName,
|
||||
EntityType eRealmType,
|
||||
const rtl::OUString & rRealm,
|
||||
EntityType eUserNameType,
|
||||
const rtl::OUString & rUserName,
|
||||
EntityType ePasswordType,
|
||||
const rtl::OUString & rPassword,
|
||||
EntityType eAccountType,
|
||||
const rtl::OUString & rAccount )
|
||||
{
|
||||
setRequest( uno::makeAny( aRequest ) );
|
||||
// Fill request...
|
||||
ucb::URLAuthenticationRequest aRequest;
|
||||
// aRequest.Message = // OUString
|
||||
// aRequest.Context = // XInterface
|
||||
aRequest.Classification = task::InteractionClassification_ERROR;
|
||||
aRequest.ServerName = rServerName;
|
||||
// aRequest.Diagnostic = // OUString
|
||||
aRequest.HasRealm = eRealmType != ENTITY_NA;
|
||||
if ( aRequest.HasRealm )
|
||||
aRequest.Realm = rRealm;
|
||||
aRequest.HasUserName = eUserNameType != ENTITY_NA;
|
||||
if ( aRequest.HasUserName )
|
||||
aRequest.UserName = rUserName;
|
||||
aRequest.HasPassword = ePasswordType != ENTITY_NA;
|
||||
if ( aRequest.HasPassword )
|
||||
aRequest.Password = rPassword;
|
||||
aRequest.HasAccount = eAccountType != ENTITY_NA;
|
||||
if ( aRequest.HasAccount )
|
||||
aRequest.Account = rAccount;
|
||||
aRequest.URL = rURL;
|
||||
|
||||
initialize(aRequest,
|
||||
eRealmType == ENTITY_MODIFY,
|
||||
eUserNameType == ENTITY_MODIFY,
|
||||
ePasswordType == ENTITY_MODIFY,
|
||||
eAccountType == ENTITY_MODIFY,
|
||||
sal_False,
|
||||
sal_False );
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
SimpleAuthenticationRequest::SimpleAuthenticationRequest(
|
||||
const rtl::OUString & rURL,
|
||||
const rtl::OUString & rServerName,
|
||||
EntityType eRealmType,
|
||||
const rtl::OUString & rRealm,
|
||||
EntityType eUserNameType,
|
||||
const rtl::OUString & rUserName,
|
||||
EntityType ePasswordType,
|
||||
const rtl::OUString & rPassword,
|
||||
EntityType eAccountType,
|
||||
const rtl::OUString & rAccount,
|
||||
sal_Bool bAllowPersistentStoring,
|
||||
sal_Bool bAllowUseSystemCredentials )
|
||||
{
|
||||
// Fill request...
|
||||
ucb::URLAuthenticationRequest aRequest;
|
||||
// aRequest.Message = // OUString
|
||||
// aRequest.Context = // XInterface
|
||||
aRequest.Classification = task::InteractionClassification_ERROR;
|
||||
aRequest.ServerName = rServerName;
|
||||
// aRequest.Diagnostic = // OUString
|
||||
aRequest.HasRealm = eRealmType != ENTITY_NA;
|
||||
if ( aRequest.HasRealm )
|
||||
aRequest.Realm = rRealm;
|
||||
aRequest.HasUserName = eUserNameType != ENTITY_NA;
|
||||
if ( aRequest.HasUserName )
|
||||
aRequest.UserName = rUserName;
|
||||
aRequest.HasPassword = ePasswordType != ENTITY_NA;
|
||||
if ( aRequest.HasPassword )
|
||||
aRequest.Password = rPassword;
|
||||
aRequest.HasAccount = eAccountType != ENTITY_NA;
|
||||
if ( aRequest.HasAccount )
|
||||
aRequest.Account = rAccount;
|
||||
aRequest.URL = rURL;
|
||||
|
||||
initialize(aRequest,
|
||||
eRealmType == ENTITY_MODIFY,
|
||||
eUserNameType == ENTITY_MODIFY,
|
||||
ePasswordType == ENTITY_MODIFY,
|
||||
eAccountType == ENTITY_MODIFY,
|
||||
bAllowPersistentStoring,
|
||||
bAllowUseSystemCredentials );
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
void SimpleAuthenticationRequest::initialize(
|
||||
const ucb::URLAuthenticationRequest & rRequest,
|
||||
sal_Bool bCanSetRealm,
|
||||
sal_Bool bCanSetUserName,
|
||||
sal_Bool bCanSetPassword,
|
||||
sal_Bool bCanSetAccount,
|
||||
sal_Bool bAllowPersistentStoring,
|
||||
sal_Bool bAllowUseSystemCredentials )
|
||||
{
|
||||
setRequest( uno::makeAny( rRequest ) );
|
||||
|
||||
// Fill continuations...
|
||||
uno::Sequence< ucb::RememberAuthentication > aRememberModes( bAllowPersistentStoring ? 3 : 2 );
|
||||
|
@ -132,7 +230,9 @@ void SimpleAuthenticationRequest::initialize(
|
|||
aRememberModes, // rRememberPasswordModes
|
||||
ucb::RememberAuthentication_SESSION, // eDefaultRememberPasswordMode
|
||||
aRememberModes, // rRememberAccountModes
|
||||
ucb::RememberAuthentication_SESSION // eDefaultRememberAccountMode
|
||||
ucb::RememberAuthentication_SESSION, // eDefaultRememberAccountMode
|
||||
bAllowUseSystemCredentials, // bCanUseSystemCredentials,
|
||||
false // bDefaultUseSystemCredentials
|
||||
);
|
||||
|
||||
uno::Sequence<
|
||||
|
@ -143,84 +243,3 @@ void SimpleAuthenticationRequest::initialize(
|
|||
|
||||
setContinuations( aContinuations );
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
SimpleAuthenticationRequest::SimpleAuthenticationRequest(
|
||||
const rtl::OUString & rServerName,
|
||||
EntityType eRealmType,
|
||||
const rtl::OUString & rRealm,
|
||||
EntityType eUserNameType,
|
||||
const rtl::OUString & rUserName,
|
||||
EntityType ePasswordType,
|
||||
const rtl::OUString & rPassword,
|
||||
EntityType eAccountType,
|
||||
const rtl::OUString & rAccount )
|
||||
{
|
||||
// Fill request...
|
||||
ucb::AuthenticationRequest aRequest;
|
||||
// aRequest.Message = // OUString
|
||||
// aRequest.Context = // XInterface
|
||||
aRequest.Classification = task::InteractionClassification_ERROR;
|
||||
aRequest.ServerName = rServerName;
|
||||
// aRequest.Diagnostic = // OUString
|
||||
aRequest.HasRealm = eRealmType != ENTITY_NA;
|
||||
if ( aRequest.HasRealm )
|
||||
aRequest.Realm = rRealm;
|
||||
aRequest.HasUserName = eUserNameType != ENTITY_NA;
|
||||
if ( aRequest.HasUserName )
|
||||
aRequest.UserName = rUserName;
|
||||
aRequest.HasPassword = ePasswordType != ENTITY_NA;
|
||||
if ( aRequest.HasPassword )
|
||||
aRequest.Password = rPassword;
|
||||
aRequest.HasAccount = eAccountType != ENTITY_NA;
|
||||
if ( aRequest.HasAccount )
|
||||
aRequest.Account = rAccount;
|
||||
|
||||
initialize(aRequest,
|
||||
eRealmType == ENTITY_MODIFY,
|
||||
eUserNameType == ENTITY_MODIFY,
|
||||
ePasswordType == ENTITY_MODIFY,
|
||||
eAccountType == ENTITY_MODIFY,
|
||||
sal_False);
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
SimpleAuthenticationRequest::SimpleAuthenticationRequest(
|
||||
const rtl::OUString & rServerName,
|
||||
EntityType eRealmType,
|
||||
const rtl::OUString & rRealm,
|
||||
EntityType eUserNameType,
|
||||
const rtl::OUString & rUserName,
|
||||
EntityType ePasswordType,
|
||||
const rtl::OUString & rPassword,
|
||||
EntityType eAccountType,
|
||||
const rtl::OUString & rAccount,
|
||||
const sal_Bool & bAllowPersistentStoring )
|
||||
{
|
||||
// Fill request...
|
||||
ucb::AuthenticationRequest aRequest;
|
||||
// aRequest.Message = // OUString
|
||||
// aRequest.Context = // XInterface
|
||||
aRequest.Classification = task::InteractionClassification_ERROR;
|
||||
aRequest.ServerName = rServerName;
|
||||
// aRequest.Diagnostic = // OUString
|
||||
aRequest.HasRealm = eRealmType != ENTITY_NA;
|
||||
if ( aRequest.HasRealm )
|
||||
aRequest.Realm = rRealm;
|
||||
aRequest.HasUserName = eUserNameType != ENTITY_NA;
|
||||
if ( aRequest.HasUserName )
|
||||
aRequest.UserName = rUserName;
|
||||
aRequest.HasPassword = ePasswordType != ENTITY_NA;
|
||||
if ( aRequest.HasPassword )
|
||||
aRequest.Password = rPassword;
|
||||
aRequest.HasAccount = eAccountType != ENTITY_NA;
|
||||
if ( aRequest.HasAccount )
|
||||
aRequest.Account = rAccount;
|
||||
|
||||
initialize(aRequest,
|
||||
eRealmType == ENTITY_MODIFY,
|
||||
eUserNameType == ENTITY_MODIFY,
|
||||
ePasswordType == ENTITY_MODIFY,
|
||||
eAccountType == ENTITY_MODIFY,
|
||||
bAllowPersistentStoring);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue