[Git][noosfero/noosfero][master] 2 commits: Fix user email validation

Antonio Terceiro gitlab at gitlab.com
Tue Aug 4 16:25:59 BRT 2015


Antonio Terceiro pushed to branch master at Noosfero / noosfero


Commits:
59c15564 by brenddongontijo at 2015-08-03T19:05:48Z
Fix user email validation

Signed-off-by: Andre Bernardes <andrebsguedes at gmail.com>
Signed-off-by: Brenddon Gontijo <brenddongontijo at msn.com>
Signed-off-by: Filipe Ribeiro <firibeiro77 at live.com>

- - - - -
6193f05c by Antonio Terceiro at 2015-08-04T19:24:08Z
Merge branch 'fix_user_email_validation' into 'master'

Fix user email validation

Add regex to test the email validation.

Fixes #82

See merge request !644

- - - - -


3 changed files:

- app/views/account/_signup_form.html.erb
- lib/noosfero/constants.rb
- test/unit/user_test.rb


Changes:

=====================================
app/views/account/_signup_form.html.erb
=====================================
--- a/app/views/account/_signup_form.html.erb
+++ b/app/views/account/_signup_form.html.erb
@@ -135,6 +135,10 @@
 
 <script type="text/javascript">
 jQuery(function($) {
+  $.validator.addMethod('validEmail', function(value, element) {
+      var regex = /^([^\W_])([\w._-]+)@((?:[-_a-z0-9]+\.)+[a-z]{2,})$/i;
+      return this.optional(element) || regex.test(value);
+  }, 'Please enter a valid e-mail');
 
   $('#signup-form input[type=text], #signup-form textarea').each(function() {
     $(this).bind('blur', function() {
@@ -170,7 +174,7 @@ jQuery(function($) {
     $('#signup-balloon').fadeIn('slow');
   });
   $('#user_login').blur(function() { $('#signup-balloon').fadeOut('slow'); });
-  $('#signup-form').validate({ rules: { 'user[email]': { email: true } }, messages: { 'user[email]' : '' } });
+  $('#signup-form').validate({ rules: { 'user[email]': { email: true, validEmail: true } }, messages: { 'user[email]' : '' } });
   $('#user_email').focus(function() {
     $('#email-balloon').fadeIn('slow');
   });


=====================================
lib/noosfero/constants.rb
=====================================
--- a/lib/noosfero/constants.rb
+++ b/lib/noosfero/constants.rb
@@ -1,5 +1,5 @@
 module Noosfero::Constants
-  EMAIL_FORMAT = /\A([^@\s]+)@((?:[-_a-z0-9]+\.)+[a-z]{2,})\Z/i
+  EMAIL_FORMAT = /\A([^\W_])([\w._-]+)@((?:[-_a-z0-9]+\.)+[a-z]{2,})\Z/i
   INTEGER_FORMAT = /\A\d*\Z/i
   PROFILE_PER_PAGE = 10
 end


=====================================
test/unit/user_test.rb
=====================================
--- a/test/unit/user_test.rb
+++ b/test/unit/user_test.rb
@@ -14,6 +14,24 @@ class UserTest < ActiveSupport::TestCase
     end
   end
 
+  should 'not create user with wrong email' do
+    user = User.new(login: 'test_user', email: 'tes*te at hotmail.com',
+                    password: '123456', password_confirmation: '123456')
+    user.save
+    assert_equal user.valid?, false
+    assert !user.errors[:email].nil?
+
+    user.email = '_teste at hotmail.com'
+    user.save
+    assert_equal user.valid?, false
+    assert !user.errors[:email].nil?
+
+    user.email = 'teste$@hotmail.com'
+    user.save
+    assert_equal user.valid?, false
+    assert !user.errors[:email].nil?
+  end
+
   def test_should_require_login
     assert_no_difference 'User.count' do
       u = new_user(:login => nil)



View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/a7f039c706c85a11ca0990b4912c27f0585911f9...6193f05c704476bf8d09bb1ae73f200d7718f70d
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20150804/f76d9fa1/attachment.html>


More information about the Noosfero-dev mailing list