mirror of
https://github.com/ClaytonWWilson/CS307-Team24.git
synced 2025-12-16 02:08:47 +00:00
Made edit profile data validation more robust.
This commit is contained in:
parent
15f976398a
commit
d05f87c7a7
@ -19,17 +19,11 @@ exports.updateProfileInfo = (req, res) => {
|
||||
|
||||
// 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
|
||||
const {valid, errors} = validateUpdateProfileInfo(profileData);
|
||||
const {valid, errors, profileData} = validateUpdateProfileInfo(req.body);
|
||||
if (!valid) return res.status(400).json(errors);
|
||||
|
||||
|
||||
// Update the database entry for this user
|
||||
db.collection('users').doc(req.user.handle).set(profileData, {merge: true})
|
||||
|
||||
@ -7,7 +7,6 @@ const FBAuth = require('./util/FBAuth');
|
||||
/*------------------------------------------------------------------*
|
||||
* users.js *
|
||||
*------------------------------------------------------------------*/
|
||||
|
||||
const {getProfileInfo, updateProfileInfo} = require('./handlers/users');
|
||||
|
||||
// Returns all profile data of the currently logged in user
|
||||
|
||||
@ -3,15 +3,34 @@ const isEmpty = (str) => {
|
||||
else return false;
|
||||
};
|
||||
|
||||
exports.validateUpdateProfileInfo = (profileData) => {
|
||||
let errors = {}
|
||||
const isEmail = (str) => {
|
||||
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.";
|
||||
} else if (!isEmail(data.email)) {
|
||||
errors.email = "Must be a valid email."
|
||||
} else {
|
||||
profileData.email = data.email;
|
||||
}
|
||||
|
||||
return {
|
||||
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