connectivity/source/drivers/firebird/User.cxx  |   11 +++++++++--
 connectivity/source/drivers/firebird/User.hxx  |    7 +++++--
 connectivity/source/drivers/firebird/Users.cxx |    4 ++--
 3 files changed, 16 insertions(+), 6 deletions(-)

New commits:
commit 358d34e12d8f88543ddca8c0e852712e6ef1b10c
Author:     Julien Nabet <serval2...@yahoo.fr>
AuthorDate: Sat Mar 7 23:15:13 2020 +0100
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Tue Mar 10 07:26:33 2020 +0100

    tdf#131212: Implement change user password in Firebird
    
    Command retrieved from 
https://firebirdsql.org/refdocs/langrefupd25-security-sql-user-mgmt.html
    
    Change-Id: Idd16c74cd3b00f8a5c9cc135e11ac032811557f3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90177
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90182

diff --git a/connectivity/source/drivers/firebird/User.cxx 
b/connectivity/source/drivers/firebird/User.cxx
index 024d7eb4958a..a2e6f71e3bed 100644
--- a/connectivity/source/drivers/firebird/User.cxx
+++ b/connectivity/source/drivers/firebird/User.cxx
@@ -16,15 +16,22 @@ using namespace ::connectivity::sdbcx;
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::sdbc;
 
-User::User():
+User::User(const css::uno::Reference< css::sdbc::XConnection >& rConnection):
     OUser(true) // Case Sensitive
+    , m_xConnection(rConnection)
 {}
 
-User::User(const OUString& rName):
+User::User(const css::uno::Reference< css::sdbc::XConnection >& rConnection, 
const OUString& rName):
     OUser(rName,
           true) // Case Sensitive
+    , m_xConnection(rConnection)
 {}
 
+void User::changePassword(const OUString&, const OUString& newPassword)
+{
+    m_xConnection->createStatement()->execute("ALTER USER " + m_Name + " 
PASSWORD '" + newPassword + "'");
+}
+
 //----- IRefreshableGroups ----------------------------------------------------
 void User::refreshGroups()
 {
diff --git a/connectivity/source/drivers/firebird/User.hxx 
b/connectivity/source/drivers/firebird/User.hxx
index d2cc091000b9..ff1de34ea5fb 100644
--- a/connectivity/source/drivers/firebird/User.hxx
+++ b/connectivity/source/drivers/firebird/User.hxx
@@ -11,6 +11,7 @@
 #define INCLUDED_CONNECTIVITY_SOURCE_DRIVERS_FIREBIRD_USER_HXX
 
 #include <connectivity/sdbcx/VUser.hxx>
+#include <com/sun/star/sdbc/XConnection.hpp>
 
 namespace connectivity
 {
@@ -22,17 +23,19 @@ namespace connectivity
          */
         class User: public ::connectivity::sdbcx::OUser
         {
+            css::uno::Reference< css::sdbc::XConnection > m_xConnection;
 
         public:
             /**
              * Create a "new" descriptor, which isn't yet in the database.
              */
-            User();
+            User(const css::uno::Reference< css::sdbc::XConnection >& 
rConnection);
             /**
              * For a user that already exists in the db.
              */
-            User(const OUString& rName);
+            User(const css::uno::Reference< css::sdbc::XConnection >& 
rConnection, const OUString& rName);
 
+            virtual void SAL_CALL changePassword(const OUString&, const 
OUString& newPassword) override;
             // IRefreshableGroups::
             virtual void refreshGroups() override;
         };
diff --git a/connectivity/source/drivers/firebird/Users.cxx 
b/connectivity/source/drivers/firebird/Users.cxx
index 0423d9c33181..061200fde5d3 100644
--- a/connectivity/source/drivers/firebird/Users.cxx
+++ b/connectivity/source/drivers/firebird/Users.cxx
@@ -47,7 +47,7 @@ void Users::impl_refresh()
 
 ObjectType Users::createObject(const OUString& rName)
 {
-    return new User(rName);
+    return new User(m_xMetaData->getConnection(), rName);
 }
 
 uno::Reference< XPropertySet > Users::createDescriptor()
@@ -55,7 +55,7 @@ uno::Reference< XPropertySet > Users::createDescriptor()
     // There is some internal magic so that the same class can be used as 
either
     // a descriptor or as a normal user. See VUser.cxx for the details. In our
     // case we just need to ensure we use the correct constructor.
-    return new User;
+    return new User(m_xMetaData->getConnection());
 }
 
 //----- XAppend ---------------------------------------------------------------
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to