1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_ucbhelper.hxx" 26 #include <com/sun/star/task/XMasterPasswordHandling.hpp> 27 #include <com/sun/star/ucb/URLAuthenticationRequest.hpp> 28 #include <ucbhelper/simpleauthenticationrequest.hxx> 29 30 using namespace com::sun::star; 31 using namespace ucbhelper; 32 33 //========================================================================= 34 SimpleAuthenticationRequest::SimpleAuthenticationRequest( 35 const rtl::OUString & rURL, 36 const rtl::OUString & rServerName, 37 const rtl::OUString & rRealm, 38 const rtl::OUString & rUserName, 39 const rtl::OUString & rPassword, 40 const rtl::OUString & rAccount ) 41 { 42 // Fill request... 43 ucb::URLAuthenticationRequest aRequest; 44 // aRequest.Message = // OUString 45 // aRequest.Context = // XInterface 46 aRequest.Classification = task::InteractionClassification_ERROR; 47 aRequest.ServerName = rServerName; 48 // aRequest.Diagnostic = // OUString 49 aRequest.HasRealm = ( rRealm.getLength() > 0 ); 50 if ( aRequest.HasRealm ) 51 aRequest.Realm = rRealm; 52 aRequest.HasUserName = sal_True; 53 aRequest.UserName = rUserName; 54 aRequest.HasPassword = sal_True; 55 aRequest.Password = rPassword; 56 aRequest.HasAccount = ( rAccount.getLength() > 0 ); 57 if ( aRequest.HasAccount ) 58 aRequest.Account = rAccount; 59 aRequest.URL = rURL; 60 61 initialize(aRequest, 62 sal_False, 63 sal_True, 64 sal_True, 65 aRequest.HasAccount, 66 sal_True, 67 sal_False ); 68 } 69 //========================================================================= 70 SimpleAuthenticationRequest::SimpleAuthenticationRequest( 71 const rtl::OUString & rURL, 72 const rtl::OUString & rServerName, 73 const rtl::OUString & rRealm, 74 const rtl::OUString & rUserName, 75 const rtl::OUString & rPassword, 76 const rtl::OUString & rAccount, 77 sal_Bool bAllowPersistentStoring, 78 sal_Bool bAllowUseSystemCredentials ) 79 { 80 81 // Fill request... 82 ucb::URLAuthenticationRequest aRequest; 83 // aRequest.Message = // OUString 84 // aRequest.Context = // XInterface 85 aRequest.Classification = task::InteractionClassification_ERROR; 86 aRequest.ServerName = rServerName; 87 // aRequest.Diagnostic = // OUString 88 aRequest.HasRealm = ( rRealm.getLength() > 0 ); 89 if ( aRequest.HasRealm ) 90 aRequest.Realm = rRealm; 91 aRequest.HasUserName = sal_True; 92 aRequest.UserName = rUserName; 93 aRequest.HasPassword = sal_True; 94 aRequest.Password = rPassword; 95 aRequest.HasAccount = ( rAccount.getLength() > 0 ); 96 if ( aRequest.HasAccount ) 97 aRequest.Account = rAccount; 98 aRequest.URL = rURL; 99 100 initialize(aRequest, 101 sal_False, 102 sal_True, 103 sal_True, 104 aRequest.HasAccount, 105 bAllowPersistentStoring, 106 bAllowUseSystemCredentials ); 107 } 108 109 //========================================================================= 110 SimpleAuthenticationRequest::SimpleAuthenticationRequest( 111 const rtl::OUString & rURL, 112 const rtl::OUString & rServerName, 113 EntityType eRealmType, 114 const rtl::OUString & rRealm, 115 EntityType eUserNameType, 116 const rtl::OUString & rUserName, 117 EntityType ePasswordType, 118 const rtl::OUString & rPassword, 119 EntityType eAccountType, 120 const rtl::OUString & rAccount ) 121 { 122 // Fill request... 123 ucb::URLAuthenticationRequest aRequest; 124 // aRequest.Message = // OUString 125 // aRequest.Context = // XInterface 126 aRequest.Classification = task::InteractionClassification_ERROR; 127 aRequest.ServerName = rServerName; 128 // aRequest.Diagnostic = // OUString 129 aRequest.HasRealm = eRealmType != ENTITY_NA; 130 if ( aRequest.HasRealm ) 131 aRequest.Realm = rRealm; 132 aRequest.HasUserName = eUserNameType != ENTITY_NA; 133 if ( aRequest.HasUserName ) 134 aRequest.UserName = rUserName; 135 aRequest.HasPassword = ePasswordType != ENTITY_NA; 136 if ( aRequest.HasPassword ) 137 aRequest.Password = rPassword; 138 aRequest.HasAccount = eAccountType != ENTITY_NA; 139 if ( aRequest.HasAccount ) 140 aRequest.Account = rAccount; 141 aRequest.URL = rURL; 142 143 initialize(aRequest, 144 eRealmType == ENTITY_MODIFY, 145 eUserNameType == ENTITY_MODIFY, 146 ePasswordType == ENTITY_MODIFY, 147 eAccountType == ENTITY_MODIFY, 148 sal_True, 149 sal_False ); 150 } 151 152 //========================================================================= 153 SimpleAuthenticationRequest::SimpleAuthenticationRequest( 154 const rtl::OUString & rURL, 155 const rtl::OUString & rServerName, 156 EntityType eRealmType, 157 const rtl::OUString & rRealm, 158 EntityType eUserNameType, 159 const rtl::OUString & rUserName, 160 EntityType ePasswordType, 161 const rtl::OUString & rPassword, 162 EntityType eAccountType, 163 const rtl::OUString & rAccount, 164 sal_Bool bAllowPersistentStoring, 165 sal_Bool bAllowUseSystemCredentials ) 166 { 167 // Fill request... 168 ucb::URLAuthenticationRequest aRequest; 169 // aRequest.Message = // OUString 170 // aRequest.Context = // XInterface 171 aRequest.Classification = task::InteractionClassification_ERROR; 172 aRequest.ServerName = rServerName; 173 // aRequest.Diagnostic = // OUString 174 aRequest.HasRealm = eRealmType != ENTITY_NA; 175 if ( aRequest.HasRealm ) 176 aRequest.Realm = rRealm; 177 aRequest.HasUserName = eUserNameType != ENTITY_NA; 178 if ( aRequest.HasUserName ) 179 aRequest.UserName = rUserName; 180 aRequest.HasPassword = ePasswordType != ENTITY_NA; 181 if ( aRequest.HasPassword ) 182 aRequest.Password = rPassword; 183 aRequest.HasAccount = eAccountType != ENTITY_NA; 184 if ( aRequest.HasAccount ) 185 aRequest.Account = rAccount; 186 aRequest.URL = rURL; 187 188 initialize(aRequest, 189 eRealmType == ENTITY_MODIFY, 190 eUserNameType == ENTITY_MODIFY, 191 ePasswordType == ENTITY_MODIFY, 192 eAccountType == ENTITY_MODIFY, 193 bAllowPersistentStoring, 194 bAllowUseSystemCredentials ); 195 } 196 197 //========================================================================= 198 void SimpleAuthenticationRequest::initialize( 199 const ucb::URLAuthenticationRequest & rRequest, 200 sal_Bool bCanSetRealm, 201 sal_Bool bCanSetUserName, 202 sal_Bool bCanSetPassword, 203 sal_Bool bCanSetAccount, 204 sal_Bool bAllowPersistentStoring, 205 sal_Bool bAllowUseSystemCredentials ) 206 { 207 setRequest( uno::makeAny( rRequest ) ); 208 209 // Fill continuations... 210 uno::Sequence< ucb::RememberAuthentication > aRememberModes( 211 bAllowPersistentStoring ? 3 : 2 ); 212 aRememberModes[ 0 ] = ucb::RememberAuthentication_NO; 213 aRememberModes[ 1 ] = ucb::RememberAuthentication_SESSION; 214 if (bAllowPersistentStoring) 215 aRememberModes[ 2 ] = ucb::RememberAuthentication_PERSISTENT; 216 217 m_xAuthSupplier 218 = new InteractionSupplyAuthentication( 219 this, 220 bCanSetRealm, 221 bCanSetUserName, 222 bCanSetPassword, 223 bCanSetAccount, 224 aRememberModes, // rRememberPasswordModes 225 ucb::RememberAuthentication_SESSION, // eDefaultRememberPasswordMode 226 aRememberModes, // rRememberAccountModes 227 ucb::RememberAuthentication_SESSION, // eDefaultRememberAccountMode 228 bAllowUseSystemCredentials, // bCanUseSystemCredentials, 229 false // bDefaultUseSystemCredentials 230 ); 231 232 uno::Sequence< 233 uno::Reference< task::XInteractionContinuation > > aContinuations( 3 ); 234 aContinuations[ 0 ] = new InteractionAbort( this ); 235 aContinuations[ 1 ] = new InteractionRetry( this ); 236 aContinuations[ 2 ] = m_xAuthSupplier.get(); 237 238 setContinuations( aContinuations ); 239 } 240