feathers-authentication-management icon indicating copy to clipboard operation
feathers-authentication-management copied to clipboard

[dove] SQLite 3 incompatibility with verifyChanges ?

Open mdartic opened this issue 3 years ago • 1 comments

In dove version, but maybe in previous ones, I'm trying to use a SQLite 3 database. This issue is for SQLite 3, and concerns verifyChanges.

When the user verify its signup, fam will use the eraseVerifyPropsSetPassword function to merge actual verifyChanges to new properties if needed.

In SQLite 3, the verifyChanges arrives in the eraseVerifyPropsSetPassword as a string, not an object.

In JavaScript,

const newObject = Object.assign({}, "{}")
console.log(newObject) // { 0: "{", 1: "}" }

After that, the query run against the database will look like update users set 0 = '{', 1 = '}', ....

That's not working...

I don't know how to handle this properly, but before discussing the way we have to fix it, am I the only one with this issue ?

This issue doesn't occur with PostGreSQL.

mdartic avatar Nov 09 '22 13:11 mdartic

After digging a bit more, I add a property resolver :

    verifyChanges: async (verifyChanges) => {
      if (typeof verifyChanges === 'string') {
        return JSON.parse(verifyChanges)
      }
    },

This allows a conversion of a string in JSON.

Don't know if others meet this issue, but this "hack" solves this bug. It's working also for PostgreSQL as it first checks the type of data.

mdartic avatar Nov 09 '22 16:11 mdartic