Fix AdminJS: no crash on empty password, proper validation errors
This commit is contained in:
parent
27ad078e07
commit
1236a27c49
38
lib/admin.js
38
lib/admin.js
@ -120,11 +120,19 @@ async function setupAdmin(app) {
|
||||
actions: {
|
||||
edit: {
|
||||
before: async (request) => {
|
||||
const pw = request.payload?.password?.trim();
|
||||
const pw2 = request.payload?.password_confirm?.trim();
|
||||
const pw = (request.payload?.password || '').trim();
|
||||
const pw2 = (request.payload?.password_confirm || '').trim();
|
||||
if (pw) {
|
||||
if (pw !== pw2) throw new Error('Пароли не совпадают');
|
||||
if (pw.length < 6) throw new Error('Пароль минимум 6 символов');
|
||||
if (pw2 && pw !== pw2) {
|
||||
request.payload.errors = request.payload.errors || {};
|
||||
request.payload.errors.password_confirm = { message: 'Пароли не совпадают' };
|
||||
return request;
|
||||
}
|
||||
if (pw.length < 6) {
|
||||
request.payload.errors = request.payload.errors || {};
|
||||
request.payload.errors.password = { message: 'Минимум 6 символов' };
|
||||
return request;
|
||||
}
|
||||
const bcrypt = require('bcrypt');
|
||||
request.payload.password_hash = await bcrypt.hash(pw, 10);
|
||||
}
|
||||
@ -135,11 +143,23 @@ async function setupAdmin(app) {
|
||||
},
|
||||
new: {
|
||||
before: async (request) => {
|
||||
const pw = request.payload?.password?.trim();
|
||||
const pw2 = request.payload?.password_confirm?.trim();
|
||||
if (!pw) throw new Error('Пароль обязателен');
|
||||
if (pw !== pw2) throw new Error('Пароли не совпадают');
|
||||
if (pw.length < 6) throw new Error('Пароль минимум 6 символов');
|
||||
const pw = (request.payload?.password || '').trim();
|
||||
const pw2 = (request.payload?.password_confirm || '').trim();
|
||||
if (!pw) {
|
||||
request.payload.errors = request.payload.errors || {};
|
||||
request.payload.errors.password = { message: 'Пароль обязателен' };
|
||||
return request;
|
||||
}
|
||||
if (pw2 && pw !== pw2) {
|
||||
request.payload.errors = request.payload.errors || {};
|
||||
request.payload.errors.password_confirm = { message: 'Пароли не совпадают' };
|
||||
return request;
|
||||
}
|
||||
if (pw.length < 6) {
|
||||
request.payload.errors = request.payload.errors || {};
|
||||
request.payload.errors.password = { message: 'Минимум 6 символов' };
|
||||
return request;
|
||||
}
|
||||
const bcrypt = require('bcrypt');
|
||||
request.payload.password_hash = await bcrypt.hash(pw, 10);
|
||||
delete request.payload.password;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user