mirror of
https://github.com/ClaytonWWilson/CS307-Team24.git
synced 2025-12-16 10:18:48 +00:00
Made edit profile data validation more robust.
This commit is contained in:
parent
15f976398a
commit
d05f87c7a7
@ -19,18 +19,12 @@ exports.updateProfileInfo = (req, res) => {
|
|||||||
|
|
||||||
// TODO: Add functionality for adding/updating profile images
|
// TODO: Add functionality for adding/updating profile images
|
||||||
|
|
||||||
// ?: Should users be able to change their handles?
|
|
||||||
const profileData = {
|
|
||||||
firstName: req.body.firstName.trim(), // Can be empty
|
|
||||||
lastName: req.body.lastName.trim(), // Can be empty
|
|
||||||
email: req.body.email.trim(), // Cannot be empty
|
|
||||||
bio: req.body.bio.trim(), // Can be empty
|
|
||||||
};
|
|
||||||
|
|
||||||
// Data validation
|
// Data validation
|
||||||
const {valid, errors} = validateUpdateProfileInfo(profileData);
|
const {valid, errors, profileData} = validateUpdateProfileInfo(req.body);
|
||||||
if (!valid) return res.status(400).json(errors);
|
if (!valid) return res.status(400).json(errors);
|
||||||
|
|
||||||
|
|
||||||
// Update the database entry for this user
|
// Update the database entry for this user
|
||||||
db.collection('users').doc(req.user.handle).set(profileData, {merge: true})
|
db.collection('users').doc(req.user.handle).set(profileData, {merge: true})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|||||||
@ -7,7 +7,6 @@ const FBAuth = require('./util/FBAuth');
|
|||||||
/*------------------------------------------------------------------*
|
/*------------------------------------------------------------------*
|
||||||
* users.js *
|
* users.js *
|
||||||
*------------------------------------------------------------------*/
|
*------------------------------------------------------------------*/
|
||||||
|
|
||||||
const {getProfileInfo, updateProfileInfo} = require('./handlers/users');
|
const {getProfileInfo, updateProfileInfo} = require('./handlers/users');
|
||||||
|
|
||||||
// Returns all profile data of the currently logged in user
|
// Returns all profile data of the currently logged in user
|
||||||
|
|||||||
@ -3,15 +3,34 @@ const isEmpty = (str) => {
|
|||||||
else return false;
|
else return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.validateUpdateProfileInfo = (profileData) => {
|
const isEmail = (str) => {
|
||||||
let errors = {}
|
const emailRegEx = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
||||||
|
if (str.match(emailRegEx)) return true;
|
||||||
|
else return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (isEmpty(profileData.email)) {
|
exports.validateUpdateProfileInfo = (data) => {
|
||||||
|
let errors = {};
|
||||||
|
let profileData = {};
|
||||||
|
|
||||||
|
// ?: Should users be able to change their handles and emails?
|
||||||
|
|
||||||
|
// Only adds the key to the DB if the values are not empty
|
||||||
|
if (!isEmpty(data.firstName)) profileData.firstName = data.firstName.trim();
|
||||||
|
if (!isEmpty(data.lastName)) profileData.lastName = data.lastName.trim();
|
||||||
|
if (!isEmpty(data.bio)) profileData.bio = data.bio.trim();
|
||||||
|
|
||||||
|
if (isEmpty(data.email)) {
|
||||||
errors.email = "Must not be empty.";
|
errors.email = "Must not be empty.";
|
||||||
|
} else if (!isEmail(data.email)) {
|
||||||
|
errors.email = "Must be a valid email."
|
||||||
|
} else {
|
||||||
|
profileData.email = data.email;
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
errors,
|
errors,
|
||||||
valid: Object.keys(errors).length === 0 ? true : false
|
valid: Object.keys(errors).length === 0 ? true : false,
|
||||||
|
profileData
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Loading…
Reference in New Issue
Block a user