diff --git a/controllers/user.js b/controllers/user.js index 7c4a9dc77a7..ae8f2289d18 100644 --- a/controllers/user.js +++ b/controllers/user.js @@ -93,11 +93,6 @@ exports.getEmailSignup = function(req, res) { */ exports.postEmailSignup = function(req, res, next) { - console.log('post email signup called'); - req.assert('email', 'Email is not valid').isEmail(); - req.assert('password', 'Password must be at least 4 characters long').len(4); - req.assert('confirmPassword', 'Passwords do not match') - .equals(req.body.password); var errors = req.validationErrors(); @@ -108,10 +103,10 @@ exports.postEmailSignup = function(req, res, next) { } var user = new User({ - email: req.body.email, + email: req.body.email.trim(), password: req.body.password, profile : { - username: req.body.username + username: req.body.username.trim() } }); @@ -322,26 +317,26 @@ exports.postUpdateProfile = function(req, res, next) { return res.redirect('/account'); } var user = req.user; - user.email = req.body.email || ''; - user.profile.name = req.body.name || ''; - user.profile.username = req.body.username || ''; - user.profile.location = req.body.location || ''; - user.profile.githubProfile = req.body.githubProfile || ''; - user.profile.coderbyteProfile = req.body.coderbyteProfile || ''; - user.profile.linkedinProfile = req.body.linkedinProfile || ''; - user.profile.codepenProfile = req.body.codepenProfile || ''; - user.profile.twitterHandle = req.body.twitterHandle || ''; - user.profile.bio = req.body.bio || ''; - user.profile.picture = req.body.picture || ''; - user.portfolio.website1Title = req.body.website1Title || ''; - user.portfolio.website1Link = req.body.website1Link || ''; - user.portfolio.website1Image = req.body.website1Image || ''; - user.portfolio.website2Title = req.body.website2Title || ''; - user.portfolio.website2Link = req.body.website2Link || ''; - user.portfolio.website2Image = req.body.website2Image || ''; - user.portfolio.website3Title = req.body.website3Title || ''; - user.portfolio.website3Link = req.body.website3Link || ''; - user.portfolio.website3Image = req.body.website3Image || ''; + user.email = req.body.email.trim() || ''; + user.profile.name = req.body.name.trim() || ''; + user.profile.username = req.body.username.trim() || ''; + user.profile.location = req.body.location.trim() || ''; + user.profile.githubProfile = req.body.githubProfile.trim() || ''; + user.profile.coderbyteProfile = req.body.coderbyteProfile.trim() || ''; + user.profile.linkedinProfile = req.body.linkedinProfile.trim() || ''; + user.profile.codepenProfile = req.body.codepenProfile.trim() || ''; + user.profile.twitterHandle = req.body.twitterHandle.trim() || ''; + user.profile.bio = req.body.bio.trim() || ''; + user.profile.picture = req.body.picture.trim() || ''; + user.portfolio.website1Title = req.body.website1Title.trim() || ''; + user.portfolio.website1Link = req.body.website1Link.trim() || ''; + user.portfolio.website1Image = req.body.website1Image.trim() || ''; + user.portfolio.website2Title = req.body.website2Title.trim() || ''; + user.portfolio.website2Link = req.body.website2Link.trim() || ''; + user.portfolio.website2Image = req.body.website2Image.trim() || ''; + user.portfolio.website3Title = req.body.website3Title.trim() || ''; + user.portfolio.website3Link = req.body.website3Link.trim() || ''; + user.portfolio.website3Image = req.body.website3Image.trim() || ''; user.save(function (err) { diff --git a/views/account/account.jade b/views/account/account.jade index 2612dfe8188..149598b1f0e 100644 --- a/views/account/account.jade +++ b/views/account/account.jade @@ -77,12 +77,15 @@ block content .form-group label.col-sm-3.col-sm-offset-2.control-label(for='email') Link to Profile Photo (1:1 ratio) .col-sm-4 - input.form-control(type='url', name='picture', id='picture', ng-model='user.profile.picture', placeholder='http://') + input.form-control(type='url', name='picture', id='picture', ng-model='user.profile.picture', placeholder='http://www.example.com/image.jpg', ng-pattern="/[\.](jpg|png|jpeg|gif)\s?$/") .col-sm-4.col-sm-offset-5(ng-show="profileForm.picture.$error.url && !profileForm.picture.$pristine") alert(type='danger') span.ion-close-circled - | Please enter a valid URL format (http://www.example.com). - + | Please enter a valid URL format (http://www.example.com/image.jpg). + .col-sm-4.col-sm-offset-5(ng-show="profileForm.picture.$error.pattern") + alert(type='danger') + span.ion-close-circled + | The image URL must end in .jpg, .png, .jpeg or .gif. .form-group label.col-sm-3.col-sm-offset-2.control-label(for='bio') Bio (140 characters) .col-sm-4 @@ -184,11 +187,15 @@ block content .form-group label.col-sm-3.col-sm-offset-2.control-label(for='website1Image') Image Link (4:3 ratio) .col-sm-4 - input.form-control(type='url', name='website1Image', id='website1Image', autocomplete="off", ng-model='user.portfolio.website1Image', placeholder='http://') + input.form-control(type='url', name='website1Image', id='website1Image', autocomplete="off", ng-model='user.portfolio.website1Image', placeholder='http://www.example.com/image.jpg', ng-pattern="/[\.](jpg|png|jpeg|gif)\s?$/") .col-sm-4.col-sm-offset-5(ng-show="profileForm.website1Image.$error.url && !profileForm.website1Image.$pristine") - alert(type='danger') - span.ion-close-circled - | Please enter a valid URL format (http://www.example.com). + alert(type='danger') + span.ion-close-circled + | Please enter a valid URL format (http://www.example.com/image.jpg). + .col-sm-4.col-sm-offset-5(ng-show="profileForm.website1Image.$error.pattern") + alert(type='danger') + span.ion-close-circled + | The image URL must end in .jpg, .png, .jpeg or .gif. .col-sm-4.col-sm-offset-5.flat-top h3 Second Portfolio Project @@ -213,11 +220,15 @@ block content .form-group label.col-sm-3.col-sm-offset-2.control-label(for='website2Image') Image Link (4:3 ratio) .col-sm-4 - input.form-control(type='url', name='website2Image', id='website2Image', autocomplete="off", ng-model='user.portfolio.website2Image', placeholder='http://') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.website2Image.$error.url && !profileForm.website2Image.$pristine") - alert(type='danger') - span.ion-close-circled - | Please enter a valid URL format (http://www.example.com). + input.form-control(type='url', name='website2Image', id='website2Image', autocomplete="off", ng-model='user.portfolio.website2Image', placeholder='http://www.example.com/image.jpg', ng-pattern="/[\.](jpg|png|jpeg|gif)\s?$/") + .col-sm-4.col-sm-offset-5(ng-show="profileForm.website2Image.$error.url && !profileForm.website2Image.$pristine") + alert(type='danger') + span.ion-close-circled + | Please enter a valid URL format (http://www.example.com/image.jpg). + .col-sm-4.col-sm-offset-5(ng-show="profileForm.website2Image.$error.pattern") + alert(type='danger') + span.ion-close-circled + | The image URL must end in .jpg, .png, .jpeg or .gif. .col-sm-4.col-sm-offset-5.flat-top h3 Third Portfolio Project @@ -243,11 +254,15 @@ block content .form-group label.col-sm-3.col-sm-offset-2.control-label(for='website3Image') Image Link (4:3 ratio) .col-sm-4 - input.form-control(type='url', name='website3Image', id='website3Image', autocomplete="off", ng-model='user.portfolio.website3Image', placeholder='http://') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.website3Image.$error.url && !profileForm.website3Image.$pristine") - alert(type='danger') - span.ion-close-circled - | Please enter a valid URL format (http://www.example.com). + input.form-control(type='url', name='website3Image', id='website3Image', autocomplete="off", ng-model='user.portfolio.website3Image', placeholder='http://www.example.com/image.jpg', ng-pattern="/[\.](jpg|png|jpeg|gif)?$/") + .col-sm-4.col-sm-offset-5(ng-show="profileForm.website3Image.$error.url && !profileForm.website3Image.$pristine") + alert(type='danger') + span.ion-close-circled + | Please enter a valid URL format (http://www.example.com/image.jpg). + .col-sm-4.col-sm-offset-5(ng-show="profileForm.website3Image.$error.pattern") + alert(type='danger') + span.ion-close-circled + | The image URL must end in .jpg, .png, .jpeg or .gif. .form-group .col-sm-offset-5.col-sm-4