Version 4.0.0.1, tag libreoffice-4.0.0.1
[LibreOffice.git] / uui / source / passwordcontainer.hxx
blobaf9fdb16dd9b82a40ab0cf592b610048d7353bd0
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_UUI_PASSWORDCONTAINER_HXX
21 #define INCLUDED_UUI_PASSWORDCONTAINER_HXX
23 #include "cppuhelper/implbase2.hxx"
25 #include "com/sun/star/lang/XServiceInfo.hpp"
26 #include "com/sun/star/lang/XSingleServiceFactory.hpp"
27 #include "com/sun/star/task/XInteractionHandler2.hpp"
28 #include "com/sun/star/task/XPasswordContainer2.hpp"
30 namespace com {
31 namespace sun {
32 namespace star {
33 namespace lang {
34 class XMultiServiceFactory;
36 namespace ucb {
37 class AuthenticationRequest;
38 class XInteractionSupplyAuthentication;
39 } } } }
41 namespace uui {
43 // ============================================================================
45 /** Passwordcontainer UNO service (com.sun.star.task.PasswordContainer) helper.
47 class PasswordContainerHelper
49 public:
50 PasswordContainerHelper(
51 com::sun::star::uno::Reference<
52 com::sun::star::uno::XComponentContext > const &
53 xContext );
55 // ------------------------------------------------------------------------
57 /** This member function tries to handle an authentication interaction
58 request by looking up credentials for the given URL in the password
59 container service.
61 In case of success the given interaction continuation
62 (XInteractionSupplyAuthentication) is filled with the credentials found
63 in the password container.
65 Please note the the continuation gets not "selected" by this
66 implementation. "Selecting" the continuation is up to the caller (e.g.
67 an implementation of XInteractionHandler::handle) of this function.
69 @param rRequest
70 The authentication request.
72 @param xSupplyAuthentication
73 The "supply authentication" interaction continuation.
75 @param rURL
76 The URL to lookup credentials for.
78 @param xIH
79 The interaction handler to use, for example if a master password is
80 needed to access the password container.
82 @return
83 True, if the authentication request was handled successfully.
84 False, otherwise.
86 bool handleAuthenticationRequest(
87 com::sun::star::ucb::AuthenticationRequest const & rRequest,
88 com::sun::star::uno::Reference<
89 com::sun::star::ucb::XInteractionSupplyAuthentication > const &
90 xSupplyAuthentication,
91 rtl::OUString const & rURL,
92 com::sun::star::uno::Reference<
93 com::sun::star::task::XInteractionHandler2 > const & xIH )
94 SAL_THROW( (com::sun::star::uno::RuntimeException) );
96 /** This member function adds credentials for the given URL to the password
97 container.
99 @param rURL
100 The URL the credentials are valid for. rURL must not be empty.
102 @param rUsername
103 The user name.
105 @param rPasswords
106 This list of passwords.
108 @param xIH
109 The interaction handler to use, for example if a master password is
110 needed to access the password container.
112 @param bPersist
113 True, the record will get stored persistently; restored upon
114 password container initialization
115 False, the record will be stored until password container instance
116 gets destroyed.
118 @return
119 True, if the record was added successfully.
120 False, otherwise.
123 bool addRecord( rtl::OUString const & rURL,
124 rtl::OUString const & rUsername,
125 com::sun::star::uno::Sequence< rtl::OUString > const &
126 rPasswords,
127 com::sun::star::uno::Reference<
128 com::sun::star::task::XInteractionHandler2 > const & xIH,
129 bool bPersist )
130 SAL_THROW( (com::sun::star::uno::RuntimeException) );
132 // ------------------------------------------------------------------------
134 private:
135 com::sun::star::uno::Reference<
136 com::sun::star::task::XPasswordContainer2 > m_xPasswordContainer;
139 // ============================================================================
141 class PasswordContainerInteractionHandler :
142 public cppu::WeakImplHelper2< com::sun::star::lang::XServiceInfo,
143 com::sun::star::task::XInteractionHandler2 >
145 public:
146 PasswordContainerInteractionHandler(
147 const com::sun::star::uno::Reference<
148 com::sun::star::uno::XComponentContext >& xContext );
149 virtual ~PasswordContainerInteractionHandler();
151 // XServiceInfo
152 virtual ::rtl::OUString SAL_CALL getImplementationName()
153 throw ( com::sun::star::uno::RuntimeException );
155 virtual sal_Bool SAL_CALL
156 supportsService( const ::rtl::OUString& ServiceName )
157 throw ( com::sun::star::uno::RuntimeException );
159 virtual com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
160 getSupportedServiceNames()
161 throw ( com::sun::star::uno::RuntimeException );
163 // XInteractionHandler2
164 virtual void SAL_CALL
165 handle( const ::com::sun::star::uno::Reference<
166 ::com::sun::star::task::XInteractionRequest >& Request )
167 throw (::com::sun::star::uno::RuntimeException);
169 virtual sal_Bool SAL_CALL
170 handleInteractionRequest( const ::com::sun::star::uno::Reference<
171 ::com::sun::star::task::XInteractionRequest >& Request )
172 throw (::com::sun::star::uno::RuntimeException);
174 // Non-UNO interfaces
175 static rtl::OUString
176 getImplementationName_Static();
178 static com::sun::star::uno::Sequence< rtl::OUString >
179 getSupportedServiceNames_Static();
181 static com::sun::star::uno::Reference<
182 com::sun::star::lang::XSingleServiceFactory >
183 createServiceFactory( const com::sun::star::uno::Reference<
184 com::sun::star::lang::XMultiServiceFactory > & rxServiceMgr );
186 private:
187 //com::sun::star::uno::Reference<
188 // com::sun::star::lang::XMultiServiceFactory > m_xSMgr;
189 PasswordContainerHelper m_aPwContainerHelper;
192 } // namespace uui
194 #endif
196 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */