Create user doesn’t work if DBPATH folder does not exist

Wednesday, 31 May 2017 · 2 messages
SC
Simon Chatelain31 May 2017 13:34 #

Hello all,

I just faced an issue in my application using BaseX 8.6.4 when trying to create a user.

If the folder that will contain the databases (DBPATH in .basex configuration file) does not exist when you try to create a user, the creation of the “users.xml” file fails.

To reproduce, make sure that the folder defined by DBPATH does not exist, and execute:

final Context ctx = new Context();

try (final Session session = new LocalSession(ctx);) {

session.execute(new CreateUser("USERNAME", "USERPASSWORD"));

}

Then nothing happens. The users.xml file is not created.

While executing this:

final Context ctx = new Context();

try (final Session session = new LocalSession(ctx);) {

session.execute(new CreateDB("TESTDB"));

session.execute(new CreateUser("USERNAME", "USERPASSWORD"));

}

Works as expected as the CreateDB() command will create the missing folder.

Is it on purpose or was it overlooked?

Best regards

Simon Chatelain

CG
Christian Grün31 May 2017 14:19 #

Dear Simon,

Thanks for the hint, the problem has been fixed [1,2]. We forgot to create the directory because in former times the user data was not stored in the db directory.

Best, Christian

[1] https://github.com/BaseXdb/basex/commit/a8ed0936ab422e3cb3a260c9ebfa47dd0e753a85 [2] http://files.basex.org/releases/latest/

Quoted text · Simon Chatelain · 55 lines
On Wed, May 31, 2017 at 1:34 PM, Simon Chatelain <schatela at gmail.com> wrote: > Hello all, > > > > I just faced an issue in my application using BaseX 8.6.4 when trying to > create a user. > > > If the folder that will contain the databases (DBPATH in .basex > configuration file) does not exist when you try to create a user, the > creation of the “users.xml” file fails. > > To reproduce, make sure that the folder defined by DBPATH does not exist, > and execute: > > > final Context ctx = new Context(); > > try (final Session session = new LocalSession(ctx);) { > > session.execute(new CreateUser("USERNAME", "USERPASSWORD")); > > } > > > Then nothing happens. The users.xml file is not created. > > While executing this: > > > final Context ctx = new Context(); > > try (final Session session = new LocalSession(ctx);) { > > session.execute(new CreateDB("TESTDB")); > > session.execute(new CreateUser("USERNAME", "USERPASSWORD")); > > } > > > Works as expected as the CreateDB() command will create the missing folder. > > > > Is it on purpose or was it overlooked? > > > > Best regards > > > > Simon Chatelain

⚡Generated with XQuery