1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-23 00:22:19 +01:00

fix: after encryption some emails end up being too long (#7828)

Encountered this case after encrypting an already long email address.
This should mitigate the issue in demo instance. I don't think it's a
big issue to ignore the length when validating an email address cause
this is already limited at the DB layer by the column length
This commit is contained in:
Gastón Fournier 2024-08-09 19:18:19 +02:00 committed by GitHub
parent 6af23ecbdc
commit f9d077209f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 22 additions and 5 deletions

View File

@ -220,7 +220,11 @@ class UserService {
}
if (email) {
Joi.assert(email, Joi.string().email(), 'Email');
Joi.assert(
email,
Joi.string().email({ ignoreLength: true }),
'Email',
);
}
const exists = await this.store.hasUser({ username, email });
@ -264,7 +268,11 @@ class UserService {
const preUser = await this.getUser(id);
if (email) {
Joi.assert(email, Joi.string().email(), 'Email');
Joi.assert(
email,
Joi.string().email({ ignoreLength: true }),
'Email',
);
}
if (rootRole) {

View File

@ -39,8 +39,17 @@ test('Should create user with only email defined', () => {
test('Should require valid email', () => {
expect(() => {
new User({ id: 11, email: 'some@' }); // eslint-disable-line
}).toThrowError(Error('Email "value" must be a valid email'));
new User({ id: 11, email: 'some@' });
}).toThrow(Error('Email "value" must be a valid email'));
});
test('Should allow long emails on demo', () => {
expect(() => {
new User({
id: 11,
email: '0a1c1b6a59a582fdbe853739eefc599dxd1eb365eee385e345b5fc41f59172022a8f69c09f61121d8b4a155b792314ee@unleash.run',
});
}).not.toThrow();
});
test('Should create user with only username defined', () => {

View File

@ -83,7 +83,7 @@ export default class User implements IUser {
if (!id) {
throw new ValidationError('Id is required', [], undefined);
}
Joi.assert(email, Joi.string().email(), 'Email');
Joi.assert(email, Joi.string().email({ ignoreLength: true }), 'Email');
Joi.assert(username, Joi.string(), 'Username');
Joi.assert(name, Joi.string(), 'Name');