diff --git a/packages/rocketchat-lib/server/functions/setUsername.coffee b/packages/rocketchat-lib/server/functions/setUsername.coffee index 664b48e9e8544f19331e09aef9aac9b33ab106b9..de418b6486aa406a1e0302d5212f9a83e2718623 100644 --- a/packages/rocketchat-lib/server/functions/setUsername.coffee +++ b/packages/rocketchat-lib/server/functions/setUsername.coffee @@ -3,7 +3,7 @@ RocketChat.setUsername = (user, username) -> if not user or not username return false - if not /^[0-9a-zA-Z-_.]+$/.test username + if not /^[0-9a-zA-Z-_.\u00C0-\u017F]+$/.test username return false # User already has desired username, return diff --git a/packages/rocketchat-lib/server/methods/setUsername.coffee b/packages/rocketchat-lib/server/methods/setUsername.coffee index 44bad046e86b54a52c56b521e0bd2d2e011b2dac..a501a9a3cee617d9b0788ee47f6613e2863382c3 100644 --- a/packages/rocketchat-lib/server/methods/setUsername.coffee +++ b/packages/rocketchat-lib/server/methods/setUsername.coffee @@ -10,7 +10,7 @@ Meteor.methods if user.username is username return username - if not /^[0-9a-zA-Z-_.]+$/.test username + if not /^[0-9a-zA-Z-_.\u00C0-\u017F]+$/.test username throw new Meteor.Error 'username-invalid', "#{username} is not a valid username, use only letters, numbers, dots and dashes" if not RocketChat.checkUsernameAvailability username diff --git a/packages/rocketchat-mentions/client.coffee b/packages/rocketchat-mentions/client.coffee index 2e981a1512130f41ca2fc25c072c9f5481ab0db6..083cd174b12986b046f1142f409c31cbae5b1c18 100644 --- a/packages/rocketchat-mentions/client.coffee +++ b/packages/rocketchat-mentions/client.coffee @@ -9,7 +9,8 @@ class MentionsClient msg = message.html mentions = [] - message.msg.replace /(?:^|\s|\n)(?:@)([A-Za-z0-9-_.]+)/g, (match, mention) -> + + message.msg.replace /(?:^|\s|\n)(?:@)([0-9a-zA-Z-_.\u00C0-\u017F]+)/g, (match, mention) -> mentions.push mention me = Meteor.user()?.username @@ -32,7 +33,7 @@ class MentionsClient return match.replace mention, "<a href=\"\" class=\"#{classes}\" data-username=\"#{username}\">#{mention}</a>" channels = [] - message.msg.replace /(?:^|\s|\n)(?:#)([A-Za-z0-9-_.]+)/g, (match, mention) -> + message.msg.replace /(?:^|\s|\n)(?:#)([A-Za-z0-9-_.\u00C0-\u017F]+)/g, (match, mention) -> channels.push mention if channels.length isnt 0 @@ -48,4 +49,4 @@ class MentionsClient message.html = msg return message -RocketChat.callbacks.add 'renderMessage', MentionsClient \ No newline at end of file +RocketChat.callbacks.add 'renderMessage', MentionsClient diff --git a/packages/rocketchat-mentions/server.coffee b/packages/rocketchat-mentions/server.coffee index e51e5bed70c32a1a3625e75fecaa8f97ce5a58df..1a971366f3ef1b47d6c2d1ab140860e916c0ee2c 100644 --- a/packages/rocketchat-mentions/server.coffee +++ b/packages/rocketchat-mentions/server.coffee @@ -7,7 +7,7 @@ class MentionsServer constructor: (message) -> # If message starts with /me, replace it for text formatting mentions = [] - message.msg.replace /(?:^|\s|\n)(?:@)([A-Za-z0-9-_.]+)/g, (match, mention) -> + message.msg.replace /(?:^|\s|\n)(?:@)([A-Za-z0-9-_.\u00C0-\u017F]+)/g, (match, mention) -> mentions.push mention if mentions.length isnt 0 mentions = _.unique mentions @@ -25,7 +25,7 @@ class MentionsServer message.mentions = verifiedMentions channels = [] - message.msg.replace /(?:^|\s|\n)(?:#)([A-Za-z0-9-_.]+)/g, (match, mention) -> + message.msg.replace /(?:^|\s|\n)(?:#)([A-Za-z0-9-_.\u00C0-\u017F]+)/g, (match, mention) -> channels.push mention if channels.length isnt 0 diff --git a/server/methods/createChannel.coffee b/server/methods/createChannel.coffee index c3dff18c170b06fda7c9a9cec613a466acfb2532..a5c6feaf868626f0e59d2d70dc0e6cd821525d93 100644 --- a/server/methods/createChannel.coffee +++ b/server/methods/createChannel.coffee @@ -3,7 +3,7 @@ Meteor.methods if not Meteor.userId() throw new Meteor.Error 'invalid-user', "[methods] createChannel -> Invalid user" - if not /^[0-9a-z-_]+$/.test name + if not /^[0-9a-zA-Z-_\u00C0-\u017F]+$/.test name throw new Meteor.Error 'name-invalid' if RocketChat.authz.hasPermission(Meteor.userId(), 'create-c') isnt true diff --git a/server/methods/createPrivateGroup.coffee b/server/methods/createPrivateGroup.coffee index 81f20a0bd4d1ed61aedf0d2bc07c011e1f6afe8b..f208d4562aae0316de71dd0638218ab3e80153e8 100644 --- a/server/methods/createPrivateGroup.coffee +++ b/server/methods/createPrivateGroup.coffee @@ -8,7 +8,7 @@ Meteor.methods console.log '[methods] createPrivateGroup -> '.green, 'userId:', Meteor.userId(), 'arguments:', arguments - if not /^[0-9a-z-_]+$/.test name + if not /^[0-9a-zA-Z-_\u00C0-\u017F]+$/.test name throw new Meteor.Error 'name-invalid' now = new Date() diff --git a/server/methods/saveRoomName.coffee b/server/methods/saveRoomName.coffee index 7dba0b2d710a8774f4cd5e6d4b97ddd5c35c5442..621be3975ec340bc96a2e7ba081a2e7809895023 100644 --- a/server/methods/saveRoomName.coffee +++ b/server/methods/saveRoomName.coffee @@ -12,7 +12,7 @@ Meteor.methods #if room.u._id isnt Meteor.userId() and not hasPermission throw new Meteor.Error 403, 'Not allowed' - if not /^[0-9a-z-_]+$/.test name + if not /^[0-9a-zA-Z-_\u00C0-\u017F]+$/.test name throw new Meteor.Error 'name-invalid' name = _.slugify name diff --git a/server/methods/setAvatarFromService.coffee b/server/methods/setAvatarFromService.coffee index 90df44e2ad2b8a63d9852e1a75c4664ca63d0ec7..8ed563d6ccc6a9715590b6204fb133cc816a2125 100644 --- a/server/methods/setAvatarFromService.coffee +++ b/server/methods/setAvatarFromService.coffee @@ -14,7 +14,7 @@ Meteor.methods {image, contentType} = RocketChatFile.dataURIParse dataURI rs = RocketChatFile.bufferToStream new Buffer(image, 'base64') - ws = RocketChatFileAvatarInstance.createWriteStream "#{user.username}.jpg", contentType + ws = RocketChatFileAvatarInstance.createWriteStream encodeURIComponent("#{user.username}.jpg"), contentType ws.on 'end', Meteor.bindEnvironment -> Meteor.setTimeout -> RocketChat.models.Users.setAvatarOrigin user._id, service diff --git a/server/restapi/restapi.coffee b/server/restapi/restapi.coffee index 90ba65e19b124ed1a2a935520b835c535a8d863d..4d04853ffabbe232bc2ea6e2afb38be6751ea209 100644 --- a/server/restapi/restapi.coffee +++ b/server/restapi/restapi.coffee @@ -61,7 +61,7 @@ Api.testapiValidateUsers = (users) -> if user.name? if user.email? if user.pass? - if /^[0-9a-z-_]+$/i.test user.name + if /^[0-9a-zA-Z-_\u00C0-\u017F]+$/i.test user.name if /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]+\b/i.test user.email continue throw new Meteor.Error 'invalid-user-record', "[restapi] bulk/register -> record #" + i + " is invalid" @@ -125,7 +125,7 @@ Api.testapiValidateRooms = (rooms) -> if room.name? if room.members? if room.members.length > 1 - if /^[0-9a-z-_]+$/i.test room.name + if /^[0-9a-zA-Z-_\u00C0-\u017F]+$/i.test room.name continue throw new Meteor.Error 'invalid-room-record', "[restapi] bulk/createRoom -> record #" + i + " is invalid" return