feathersjs-ecosystem/feathers-authentication-management

[dove] SQLite 3 incompatibility with verifyChanges ?

Opened this issue · 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.

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.