Comments (6)
It's now fixed in v4.1.3
from scimgateway.
PR not needed.
Will be included in next update
Thanks,
Jarle
from scimgateway.
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.
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.
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.
Amazing, thank you @jelhub
from scimgateway.
Related Issues (20)
- Is it possible to set 401 or 403 status HOT 5
- How to change ServiceProviderConfig HOT 2
- How to limit the attributes in default schema? HOT 2
- Feature request: option to disable ping success logging HOT 2
- Problem with modifyUser when user does not exist HOT 3
- createUser is returning userName instead of id HOT 5
- Cannot distinguish PATCH/add and PUT in modifyGroups HOT 2
- Configurable path for plugin-config.json HOT 2
- Override base URL for metadata.location HOT 3
- Support for PATCH with replace used on an array to set it to empty HOT 2
- 500 with PATCH and no members from Okta HOT 1
- PATCH replace empty members is not calling modifyGroup HOT 5
- Azure Soft Delete (IsSoftDeleted) -> scimgateway.modifyUser() not triggered HOT 7
- createUser error: Cannot read properties of undefined (reading 'value') from plugin-mssql.js HOT 1
- Azure modifyUser throws exception if deleting a user HOT 6
- Groups names are not being updated HOT 2
- User implementation of groups attribute incorrect HOT 1
- Issues with default? behavior for generating "id" value on created resources HOT 4
- Azure User Provisioning HOT 3
- Azure function HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from scimgateway.