-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bug #13347 : modify user email with dash #2142
base: develop
Are you sure you want to change the base?
Conversation
@@ -90,7 +90,7 @@ export class UserService extends SearchService<User> { | |||
|
|||
exists(email: string): Observable<any> { | |||
const criterionArray: Criterion[] = []; | |||
criterionArray.push({ key: 'email', value: email, operator: Operators.equalsIgnoreCase }); | |||
criterionArray.push({ key: 'email', value: email.toLowerCase(), operator: Operators.equals }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
c'est etrange, rien a voir avec le titre
et tu modifs la valeur ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
j'ai expliqué dans la description que le equalsIgnoreCase considère le "-" et le "." comme étant pareils dans l'email de l'utilsateur , ce qui génère le bug, d'où l'utilisation de equals à sa place.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
En retirant l'ignore case, ça laisse la possibilité de créer une duplication d'une adresse mail existante en changeant la "case" d'un ou plusieurs caractères, ce qui crée un nouveau bug.
La correction est plutôt à trouver dans MongoUtils.getCriteria
qui prends la val
tel quel sans l'échapper => le .
est interprété par la regex comme "tout caractère" au lieu d'un caractère .
(on a une injection regex !).
Le pb de .
vs -
ne se pose pas en equals (vs. equalsIgnoreCase) parce que tant qu'on n'a pas de *
dans la val
, on n'utilise pas de regex dans la requête Mongo. Dans le equalsIgnoreCase, on utilise une regex dans tous les cas, et on interprète donc le .
comme "tout caractère".
À corriger donc (pour equals et equalsIgnoreCase) et créer un test.
fixes the dash and point that were considered the same when using equalsIgnoreCase
ee4553b
to
b1f4425
Compare
Description
Fixes the dash and point that were considered the same when using equalsIgnoreCase
Type de changement
Contributeur