init
This commit is contained in:
60
src/validations/auth.validation.js
Normal file
60
src/validations/auth.validation.js
Normal file
@@ -0,0 +1,60 @@
|
||||
const Joi = require('joi');
|
||||
const { password } = require('./custom.validation');
|
||||
|
||||
const register = {
|
||||
body: Joi.object().keys({
|
||||
email: Joi.string().required().email(),
|
||||
password: Joi.string().required().custom(password),
|
||||
name: Joi.string().required(),
|
||||
}),
|
||||
};
|
||||
|
||||
const login = {
|
||||
body: Joi.object().keys({
|
||||
email: Joi.string().required(),
|
||||
password: Joi.string().required(),
|
||||
}),
|
||||
};
|
||||
|
||||
const logout = {
|
||||
body: Joi.object().keys({
|
||||
refreshToken: Joi.string().required(),
|
||||
}),
|
||||
};
|
||||
|
||||
const refreshTokens = {
|
||||
body: Joi.object().keys({
|
||||
refreshToken: Joi.string().required(),
|
||||
}),
|
||||
};
|
||||
|
||||
const forgotPassword = {
|
||||
body: Joi.object().keys({
|
||||
email: Joi.string().email().required(),
|
||||
}),
|
||||
};
|
||||
|
||||
const resetPassword = {
|
||||
query: Joi.object().keys({
|
||||
token: Joi.string().required(),
|
||||
}),
|
||||
body: Joi.object().keys({
|
||||
password: Joi.string().required().custom(password),
|
||||
}),
|
||||
};
|
||||
|
||||
const verifyEmail = {
|
||||
query: Joi.object().keys({
|
||||
token: Joi.string().required(),
|
||||
}),
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
register,
|
||||
login,
|
||||
logout,
|
||||
refreshTokens,
|
||||
forgotPassword,
|
||||
resetPassword,
|
||||
verifyEmail,
|
||||
};
|
||||
21
src/validations/custom.validation.js
Normal file
21
src/validations/custom.validation.js
Normal file
@@ -0,0 +1,21 @@
|
||||
const objectId = (value, helpers) => {
|
||||
if (!value.match(/^[0-9a-fA-F]{24}$/)) {
|
||||
return helpers.message('"{{#label}}" must be a valid mongo id');
|
||||
}
|
||||
return value;
|
||||
};
|
||||
|
||||
const password = (value, helpers) => {
|
||||
if (value.length < 8) {
|
||||
return helpers.message('password must be at least 8 characters');
|
||||
}
|
||||
if (!value.match(/\d/) || !value.match(/[a-zA-Z]/)) {
|
||||
return helpers.message('password must contain at least 1 letter and 1 number');
|
||||
}
|
||||
return value;
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
objectId,
|
||||
password,
|
||||
};
|
||||
2
src/validations/index.js
Normal file
2
src/validations/index.js
Normal file
@@ -0,0 +1,2 @@
|
||||
module.exports.authValidation = require('./auth.validation');
|
||||
module.exports.userValidation = require('./user.validation');
|
||||
54
src/validations/user.validation.js
Normal file
54
src/validations/user.validation.js
Normal file
@@ -0,0 +1,54 @@
|
||||
const Joi = require('joi');
|
||||
const { password, objectId } = require('./custom.validation');
|
||||
|
||||
const createUser = {
|
||||
body: Joi.object().keys({
|
||||
email: Joi.string().required().email(),
|
||||
password: Joi.string().required().custom(password),
|
||||
name: Joi.string().required(),
|
||||
role: Joi.string().required().valid('user', 'admin'),
|
||||
}),
|
||||
};
|
||||
|
||||
const getUsers = {
|
||||
query: Joi.object().keys({
|
||||
name: Joi.string(),
|
||||
role: Joi.string(),
|
||||
sortBy: Joi.string(),
|
||||
limit: Joi.number().integer(),
|
||||
page: Joi.number().integer(),
|
||||
}),
|
||||
};
|
||||
|
||||
const getUser = {
|
||||
params: Joi.object().keys({
|
||||
userId: Joi.string().custom(objectId),
|
||||
}),
|
||||
};
|
||||
|
||||
const updateUser = {
|
||||
params: Joi.object().keys({
|
||||
userId: Joi.required().custom(objectId),
|
||||
}),
|
||||
body: Joi.object()
|
||||
.keys({
|
||||
email: Joi.string().email(),
|
||||
password: Joi.string().custom(password),
|
||||
name: Joi.string(),
|
||||
})
|
||||
.min(1),
|
||||
};
|
||||
|
||||
const deleteUser = {
|
||||
params: Joi.object().keys({
|
||||
userId: Joi.string().custom(objectId),
|
||||
}),
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
createUser,
|
||||
getUsers,
|
||||
getUser,
|
||||
updateUser,
|
||||
deleteUser,
|
||||
};
|
||||
Reference in New Issue
Block a user