Compare commits
5 Commits
bdd8ec02dd
...
6c7d92deae
| Author | SHA1 | Date | |
|---|---|---|---|
| 6c7d92deae | |||
| 05668b4a39 | |||
| c5b5f2ba10 | |||
| 82563469bd | |||
| e13cb845bc |
@@ -1,5 +1,5 @@
|
|||||||
const AuthService = require('../services/auth.service');
|
const AuthService = require('../services/auth.service');
|
||||||
const { registerSchema, loginSchema } = require('../helpers/validation');
|
const { registerSchema, loginSchema } = require('../validate/auth.schema')
|
||||||
const { setResponse } = require('../helpers/utils');
|
const { setResponse } = require('../helpers/utils');
|
||||||
const { createCaptcha } = require('../utils/captcha');
|
const { createCaptcha } = require('../utils/captcha');
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
const userService = require("../services/user.service");
|
const userService = require("../services/user.service");
|
||||||
const { ErrorHandler } = require("../helpers/error");
|
const { ErrorHandler } = require("../helpers/error");
|
||||||
const { setResponse } = require("../helpers/utils");
|
const { setResponse } = require("../helpers/utils");
|
||||||
const Joi = require("joi");
|
const { userSchema, newPasswordSchema } = require("../validate/user.schema");
|
||||||
const { userSchema, newPasswordSchema } = require("../helpers/validation");
|
|
||||||
|
|
||||||
class UserController {
|
class UserController {
|
||||||
// Get all users
|
// Get all users
|
||||||
|
|||||||
40
validate/auth.schema.js
Normal file
40
validate/auth.schema.js
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
const Joi = require("joi");
|
||||||
|
|
||||||
|
// ========================
|
||||||
|
// Auth Validation
|
||||||
|
// ========================
|
||||||
|
const registerSchema = Joi.object({
|
||||||
|
fullname: Joi.string().min(3).max(100).required(),
|
||||||
|
name: Joi.string().alphanum().min(3).max(50).required(),
|
||||||
|
email: Joi.string().email().required(),
|
||||||
|
phone: Joi.string()
|
||||||
|
.pattern(/^(?:\+62|0)8\d{7,10}$/)
|
||||||
|
.required()
|
||||||
|
.messages({
|
||||||
|
'string.pattern.base':
|
||||||
|
'Phone number must be a valid Indonesian number in format +628XXXXXXXXX'
|
||||||
|
}),
|
||||||
|
password: Joi.string()
|
||||||
|
.min(8)
|
||||||
|
.pattern(/[A-Z]/, 'uppercase letter')
|
||||||
|
.pattern(/[a-z]/, 'lowercase letter')
|
||||||
|
.pattern(/\d/, 'number')
|
||||||
|
.pattern(/[!@#$%^&*(),.?":{}|<>]/, 'special character')
|
||||||
|
.required()
|
||||||
|
.messages({
|
||||||
|
'string.min': 'Password must be at least 8 characters long',
|
||||||
|
'string.pattern.name': 'Password must contain at least one {#name}'
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
const loginSchema = Joi.object({
|
||||||
|
identifier: Joi.string().required(),
|
||||||
|
password: Joi.string().required(),
|
||||||
|
captcha: Joi.string().required(),
|
||||||
|
captchaText: Joi.string().required()
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
registerSchema,
|
||||||
|
loginSchema,
|
||||||
|
};
|
||||||
@@ -1,50 +1,4 @@
|
|||||||
const Joi = require('joi');
|
const Joi = require("joi");
|
||||||
|
|
||||||
// ========================
|
|
||||||
// Auth Validation
|
|
||||||
// ========================
|
|
||||||
const registerSchema = Joi.object({
|
|
||||||
fullname: Joi.string().min(3).max(100).required(),
|
|
||||||
name: Joi.string().alphanum().min(3).max(50).required(),
|
|
||||||
email: Joi.string().email().required(),
|
|
||||||
phone: Joi.string()
|
|
||||||
.pattern(/^(?:\+62|0)8\d{7,10}$/)
|
|
||||||
.required()
|
|
||||||
.messages({
|
|
||||||
'string.pattern.base':
|
|
||||||
'Phone number must be a valid Indonesian number in format +628XXXXXXXXX'
|
|
||||||
}),
|
|
||||||
password: Joi.string()
|
|
||||||
.min(8)
|
|
||||||
.pattern(/[A-Z]/, 'uppercase letter')
|
|
||||||
.pattern(/[a-z]/, 'lowercase letter')
|
|
||||||
.pattern(/\d/, 'number')
|
|
||||||
.pattern(/[!@#$%^&*(),.?":{}|<>]/, 'special character')
|
|
||||||
.required()
|
|
||||||
.messages({
|
|
||||||
'string.min': 'Password must be at least 8 characters long',
|
|
||||||
'string.pattern.name': 'Password must contain at least one {#name}'
|
|
||||||
})
|
|
||||||
});
|
|
||||||
const loginSchema = Joi.object({
|
|
||||||
identifier: Joi.string().required(),
|
|
||||||
password: Joi.string().required(),
|
|
||||||
captcha: Joi.string().required(),
|
|
||||||
captchaText: Joi.string().required()
|
|
||||||
});
|
|
||||||
const newPasswordSchema = Joi.object({
|
|
||||||
new_password: Joi.string()
|
|
||||||
.min(8)
|
|
||||||
.pattern(/[A-Z]/, 'uppercase letter')
|
|
||||||
.pattern(/[a-z]/, 'lowercase letter')
|
|
||||||
.pattern(/\d/, 'number')
|
|
||||||
.pattern(/[!@#$%^&*(),.?":{}|<>]/, 'special character')
|
|
||||||
.required()
|
|
||||||
.messages({
|
|
||||||
'string.min': 'Password must be at least 8 characters long',
|
|
||||||
'string.pattern.name': 'Password must contain at least one {#name}'
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
// ========================
|
// ========================
|
||||||
// Users Validation
|
// Users Validation
|
||||||
@@ -74,9 +28,21 @@ const userSchema = Joi.object({
|
|||||||
role_id: Joi.number().integer().min(1)
|
role_id: Joi.number().integer().min(1)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const newPasswordSchema = Joi.object({
|
||||||
|
new_password: Joi.string()
|
||||||
|
.min(8)
|
||||||
|
.pattern(/[A-Z]/, 'uppercase letter')
|
||||||
|
.pattern(/[a-z]/, 'lowercase letter')
|
||||||
|
.pattern(/\d/, 'number')
|
||||||
|
.pattern(/[!@#$%^&*(),.?":{}|<>]/, 'special character')
|
||||||
|
.required()
|
||||||
|
.messages({
|
||||||
|
'string.min': 'Password must be at least 8 characters long',
|
||||||
|
'string.pattern.name': 'Password must contain at least one {#name}'
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
registerSchema,
|
userSchema,
|
||||||
loginSchema,
|
newPasswordSchema,
|
||||||
newPasswordSchema,
|
};
|
||||||
userSchema,
|
|
||||||
};
|
|
||||||
Reference in New Issue
Block a user