mirror of
https://github.com/jambonz/jambonz-api-server.git
synced 2026-02-09 02:29:59 +00:00
* update package-lock.json * Feat: password settings for account (#65) * feat: password settings for account * feat: password settings for account * fix: review comments * fix: review comments * fix: review comments * return empty json * fix: after review Co-authored-by: xquanluu <110280845+xquanluu@users.noreply.github.com>
43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
const router = require('express').Router();
|
|
const sysError = require('../error');
|
|
const PasswordSettings = require('../../models/password-settings');
|
|
const { DbErrorBadRequest } = require('../../utils/errors');
|
|
|
|
const validate = (obj) => {
|
|
if (obj.min_password_length && (
|
|
obj.min_password_length < 8 ||
|
|
obj.min_password_length > 20
|
|
)) {
|
|
throw new DbErrorBadRequest('invalid min_password_length property: should be between 8-20');
|
|
}
|
|
};
|
|
|
|
router.post('/', async(req, res) => {
|
|
const logger = req.app.locals.logger;
|
|
try {
|
|
validate(req.body);
|
|
const [existing] = (await PasswordSettings.retrieve() || []);
|
|
if (existing) {
|
|
await PasswordSettings.update(req.body);
|
|
} else {
|
|
await PasswordSettings.make(req.body);
|
|
}
|
|
res.status(201).json({});
|
|
}
|
|
catch (err) {
|
|
sysError(logger, res, err);
|
|
}
|
|
});
|
|
|
|
router.get('/', async(req, res) => {
|
|
const logger = req.app.locals.logger;
|
|
try {
|
|
const [results] = (await PasswordSettings.retrieve() || []);
|
|
return res.status(200).json(results || {min_password_length: 8});
|
|
}
|
|
catch (err) {
|
|
sysError(logger, res, err);
|
|
}
|
|
});
|
|
module.exports = router;
|