Giter Site home page Giter Site logo

Comments (6)

jelhub avatar jelhub commented on June 2, 2024 2

It's now fixed in v4.1.3

from scimgateway.

jelhub avatar jelhub commented on June 2, 2024 1

PR not needed.
Will be included in next update

Thanks,
Jarle

from scimgateway.

jelhub avatar jelhub commented on June 2, 2024

Hi,
getUser() should support returning id, and we have to use this method for adding the id to the full user object. If id not supported, it will be set to userName/externalID.

A1)
Returned id will be use and not substituted.
Ref: https://github.com/jelhub/scimgateway/blob/master/lib/scimgateway.js#L1112
Seems your getUser() does not return the id

A2)
Not sure I understand this question?

Regards,
Jarle

from scimgateway.

jelhub avatar jelhub commented on June 2, 2024

I see that code could have been improved by skipping getUser() if the the plugin createUser() do return an object that includes the id.

ref: https://github.com/jelhub/scimgateway/blob/master/lib/scimgateway.js#L1087-L1090

That's probably what you meant with Q2?

Jarle

from scimgateway.

j--wong avatar j--wong commented on June 2, 2024

Thanks for the reply. Yes, if we skip the getUser() call if the object (returned by the plugin) already contains the id would fix the issue we are encountering.

Would you like me to PR that in? I would just put in a check like this:

if (!jsonBody.id) {
  let obj
  try { // retrieve id
    if (handle.createMethod === 'createUser') {
      if (jsonBody.userName) {
        jsonBody.id = jsonBody.userName
        obj = await this[handle.getMethod](ctx.params.baseEntity, { attribute: 'userName', operator: 'eq', value: jsonBody.userName }, ['id', 'userName'])
      } else if (jsonBody.externalId) {
        jsonBody.id = jsonBody.externalId
        obj = await this[handle.getMethod](ctx.params.baseEntity, { attribute: 'externalId', operator: 'eq', value: jsonBody.externalId }, ['id', 'externalId'])
      }
    } else if (handle.createMethod === 'createGroup') {
      if (jsonBody.externalId) {
        jsonBody.id = jsonBody.externalId
        obj = await this[handle.getMethod](ctx.params.baseEntity, { attribute: 'externalId', operator: 'eq', value: jsonBody.externalId }, ['id', 'externalId'])
      } else if (jsonBody.displayName) {
        jsonBody.id = jsonBody.displayName
        obj = await this[handle.getMethod](ctx.params.baseEntity, { attribute: 'displayName', operator: 'eq', value: jsonBody.displayName }, ['id', 'displayName'])
      }
    }
  } catch (err) { }
  if (obj && obj.id) jsonBody.id = obj.id
}

from scimgateway.

j--wong avatar j--wong commented on June 2, 2024

Amazing, thank you @jelhub

from scimgateway.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.