feathersjs-ecosystem / feathers-authentication-management

Adds sign up verification, forgotten password reset, and other capabilities to local feathers-authentication
https://feathers-a-m.netlify.app/
MIT License
246 stars 98 forks source link

[dove] SQLite 3 incompatibility with verifyChanges ? #197

Open mdartic opened 1 year ago

mdartic commented 1 year ago

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 commented 1 year ago

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.