Skip to content

Commit

Permalink
Merge pull request #119 from milaroisin/86-user-phone-number-backend
Browse files Browse the repository at this point in the history
[#86] Added phone number to Model and modified POST api for createUser
  • Loading branch information
Songtone committed Nov 14, 2019
2 parents 08a0f65 + c3e3ff9 commit 16adc10
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 8 deletions.
7 changes: 3 additions & 4 deletions backend/controllers/UserController.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,13 @@ const userController = express.Router();
const userService = new UserService();

const loginFields = ['email', 'password']
const registerFields = ['email', 'password', 'first_name', 'last_name', 'type']
const registerFields = ['email', 'password', 'first_name', 'last_name', 'phone_number', 'type']

// register API
userController.post('/', validateBody(registerFields), async (req, res) => {
try {
const { email, password, first_name, last_name, type } = req.body;
const user = await userService.register(email, password, first_name, last_name,
type);
const { email, password, first_name, last_name, phone_number, type } = req.body;
const user = await userService.register(email, password, first_name, last_name, phone_number, type);
return res.status(200).json(user);
} catch (err) {
return handleError(err, res);
Expand Down
6 changes: 4 additions & 2 deletions backend/gateways/UserGateway.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@ const UserGateway = {
return user;
},

async createUser(email, password_hash, first_name, last_name, type) {
async createUser(email, password_hash, first_name, last_name, phone_number, type) {
user = new User({
email: email,
password_hash: password_hash,
first_name: first_name,
last_name: last_name,
phone_number,
type: type
});
try {
Expand All @@ -30,7 +31,7 @@ const UserGateway = {
}
},

async updateUser(id, email, password_hash, first_name, last_name, type) {
async updateUser(id, email, password_hash, first_name, last_name, phone_number, type) {
user = this.getUserById(id);
try {
return await User.updateOne({id: id},
Expand All @@ -40,6 +41,7 @@ const UserGateway = {
password_hash: password_hash,
first_name: first_name,
last_name: last_name,
phone_number: phone_number,
type: type
}
}
Expand Down
10 changes: 10 additions & 0 deletions backend/models/User.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,16 @@ const UserSchema = mongoose.Schema({
required : true,
trim : true
},
phone_number:{
type: String,
required : true,
trim: true,
validate: value => {
if (!validator.isMobilePhone(value)) {
throw new Error('Invalid Phone Number')
}
}
},
type: {
type: String,
required : true,
Expand Down
4 changes: 2 additions & 2 deletions backend/services/UserService.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class UserService {
return true
}

async register(email, password, first_name, last_name, type) {
async register(email, password, first_name, last_name, phone_number, type) {
if (!passwordValidator.validate(password)) {
throw new BadRequestError('Password must be at least 8 characters' +
' and must include at least one digit.')
Expand All @@ -30,7 +30,7 @@ class UserService {
throw new ResourceExistsError("Email " + email + " already in use.");
}
try {
return await UserGateway.createUser(email, hashedPassword, first_name, last_name, type);
return await UserGateway.createUser(email, hashedPassword, first_name, last_name, phone_number, type);
} catch (err) {
throw new BadRequestError(err.message);
}
Expand Down

0 comments on commit 16adc10

Please sign in to comment.