RocketChat / RocketChat/Rocket.Chat
Cannot import ldap user when he has more than one email
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 46.1k
- Forks
- 13.9k
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 130
Description
`# ldapsearch -LLL -x -d 256 -h ldap1 -b dc=testdc,dc=ru '(uid=romank)' mail
request done: ld 0x83f3878 msgid 1
dn: uid=romank,ou=People,dc=testdc,dc=ru
mail: r.kravtzov@testdc.ru
mail: r.kravtsov@testdc.ru
mail: romank@testdc.ru
request done: ld 0x83f3878 msgid 2
20180328-07:12:37.099(0) [34mLDAPHandler ➔ info Init LDAP login romank
[20180328-07:12:37.099(0) [34mLDAP ➔ Connection.info Init setup
[20180328-07:12:37.101(0) [34mLDAP ➔ Connection.info Connecting ldap://ldap-proxy:389
[20180328-07:12:37.102(0) [34mLDAP ➔ Connection.info Starting TLS
[20180328-07:12:37.123(0) [34mLDAP ➔ Connection.info TLS connected
[20180328-07:12:37.124(0) [34mLDAP ➔ Search.info Searching user romank
[20180328-07:12:37.131(0) [34mLDAP ➔ Search.info Search result count 1
[20180328-07:12:37.132(0) [34mLDAP ➔ Auth.info Authenticating uid=romank,ou=People,dc=testdc,dc=ru
[20180328-07:12:37.168(0) [34mLDAP ➔ Auth.info Authenticated uid=romank,ou=People,dc=testdc,dc=ru
[20180328-07:12:37.168(0) [34mLDAPHandler ➔ info Querying user
[20180328-07:12:37.170(0) [34mLDAPHandler ➔ info User does not exist, creating romank
[20180328-07:12:37.172(0) rocketchat_logger rocketchat_logger.js:278 [31mLDAPSync ➔ error Error creating user { Error: Match error: Expected string, got object in field email at check (/app/bundle/programs/server/packages/check.js:62:15) at createUser (/app/bundle/programs/server/packages/accounts-password.js:1186:3) at AccountsServer.Accounts.createUser (/app/bundle/programs/server/packages/accounts-password.js:1273:10) at addLdapUser (/app/bundle/programs/server/packages/rocketchat_ldap.js:1273:31) at MethodInvocation. (/app/bundle/programs/server/packages/rocketchat_ldap.js:728:18) at /app/bundle/programs/server/packages/accounts-base.js:874:30 at tryLoginMethod (/app/bundle/programs/server/packages/accounts-base.js:700:14) at AccountsServer.Ap._runLoginHandlers (/app/bundle/programs/server/packages/accounts-base.js:873:18) at AccountsServer.Accounts._runLoginHandlers (/app/bundle/programs/server/packages/rocketchat_lib.js:2741:36) at MethodInvocation.methods.login (/app/bundle/programs/server/packages/accounts-base.js:931:27) at MethodInvocation.methodMap.(anonymous function) (packages/rocketchat_monitoring.js:2731:30) at maybeAuditArgumentChecks (/app/bundle/programs/server/packages/ddp-server.js:1877:12) at DDP._CurrentMethodInvocation.withValue (/app/bundle/programs/server/packages/ddp-server.js:902:126) at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1186:15) at DDPServer._CurrentWriteFence.withValue (/app/bundle/programs/server/packages/ddp-server.js:902:98) at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1186:15) at Promise (/app/bundle/programs/server/packages/ddp-server.js:902:46) at new Promise (:null:null) at Session.method (/app/bundle/programs/server/packages/ddp-server.js:875:23) at /app/bundle/programs/server/packages/ddp-server.js:754:85 message: 'Match error: Expected string, got object in field email', path: 'email', sanitizedError: { Error: Match failed [400] at errorClass. (/app/bundle/programs/server/packages/check.js:105:27) at new errorClass (packages/meteor.js:607:17) at check (/app/bundle/programs/server/packages/check.js:62:15) at createUser (/app/bundle/programs/server/packages/accounts-password.js:1186:3) at AccountsServer.Accounts.createUser (/app/bundle/programs/server/packages/accounts-password.js:1273:10) at addLdapUser (/app/bundle/programs/server/packages/rocketchat_ldap.js:1273:31) at MethodInvocation. (/app/bundle/programs/server/packages/rocketchat_ldap.js:728:18) at /app/bundle/programs/server/packages/accounts-base.js:874:30 at tryLoginMethod (/app/bundle/programs/server/packages/accounts-base.js:700:14) at AccountsServer.Ap._runLoginHandlers (/app/bundle/programs/server/packages/accounts-base.js:873:18) at AccountsServer.Accounts._runLoginHandlers (/app/bundle/programs/server/packages/rocketchat_lib.js:2741:36) at MethodInvocation.methods.login (/app/bundle/programs/server/packages/accounts-base.js:931:27) at MethodInvocation.methodMap.(anonymous function) (packages/rocketchat_monitoring.js:2731:30) at maybeAuditArgumentChecks (/app/bundle/programs/server/packages/ddp-server.js:1877:12) at DDP._CurrentMethodInvocation.withValue (/app/bundle/programs/server/packages/ddp-server.js:902:126) at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1186:15) at DDPServer._CurrentWriteFence.withValue (/app/bundle/programs/server/packages/ddp-server.js:902:98) at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1186:15) at Promise (/app/bundle/programs/server/packages/ddp-server.js:902:46) at new Promise (:null:null) at Session.method (/app/bundle/programs/server/packages/ddp-server.js:875:23) at /app/bundle/programs/server/packages/ddp-server.js:754:85 isClientSafe: true, error: 400, reason: 'Match failed', details: undefined, message: 'Match failed [400]', errorType: 'Meteor.Error' }, errorType: 'Match.Error' }
[20180328-07:12:37.172(0) Exception while invoking method 'login' Error: Match error: Expected string, got object in field email at check (/app/bundle/programs/server/packages/check.js:62:15) at createUser (/app/bundle/programs/server/packages/accounts-password.js:1186:3) at AccountsServer.Accounts.createUser (/app/bundle/programs/server/packages/accounts-password.js:1273:10) at addLdapUser (/app/bundle/programs/server/packages/rocketchat_ldap.js:1273:31) at MethodInvocation. (/app/bundle/programs/server/packages/rocketchat_ldap.js:728:18) at /app/bundle/programs/server/packages/accounts-base.js:874:30 at tryLoginMethod (/app/bundle/programs/server/packages/accounts-base.js:700:14) at AccountsServer.Ap._runLoginHandlers (/app/bundle/programs/server/packages/accounts-base.js:873:18) at AccountsServer.Accounts._runLoginHandlers (/app/bundle/programs/server/packages/rocketchat_lib.js:2741:36) at MethodInvocation.methods.login (/app/bundle/programs/server/packages/accounts-base.js:931:27) at MethodInvocation.methodMap.(anonymous function) (packages/rocketchat_monitoring.js:2731:30) at maybeAuditArgumentChecks (/app/bundle/programs/server/packages/ddp-server.js:1877:12) at DDP._CurrentMethodInvocation.withValue (/app/bundle/programs/server/packages/ddp-server.js:902:126) at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1186:15) at DDPServer._CurrentWriteFence.withValue (/app/bundle/programs/server/packages/ddp-server.js:902:98) at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1186:15) at Promise (/app/bundle/programs/server/packages/ddp-server.js:902:46) at new Promise (:null:null) at Session.method (/app/bundle/programs/server/packages/ddp-server.js:875:23) at /app/bundle/programs/server/packages/ddp-server.js:754:85
[20180328-07:12:37.173(0) Sanitized and reported to the client as: Match failed [400]
[20180328-07:12:37.173(0) undefined undefined
[20180328-07:12:38.166(0) [34mLDAP ➔ Search.info Idle
[20180328-07:12:38.167(0) [34mLDAP ➔ Connection.info Disconecting
[20180328-07:12:38.169(0) [34mLDAP ➔ Search.info Closed
`
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in packages/rocketchat_ldap.js at addLdapUser, using the reported LDAP response with multiple mail values and the createUser validation error as the reproduction. Trace how the email field is passed into user creation, then verify that importing this LDAP user completes successfully without the expected-string error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- authentication
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100