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: {
|
actions: {
|
||||||
edit: {
|
edit: {
|
||||||
before: async (request) => {
|
before: async (request) => {
|
||||||
const pw = request.payload?.password?.trim();
|
const pw = (request.payload?.password || '').trim();
|
||||||
const pw2 = request.payload?.password_confirm?.trim();
|
const pw2 = (request.payload?.password_confirm || '').trim();
|
||||||
if (pw) {
|
if (pw) {
|
||||||
if (pw !== pw2) throw new Error('Пароли не совпадают');
|
if (pw2 && pw !== pw2) {
|
||||||
if (pw.length < 6) throw new Error('Пароль минимум 6 символов');
|
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');
|
const bcrypt = require('bcrypt');
|
||||||
request.payload.password_hash = await bcrypt.hash(pw, 10);
|
request.payload.password_hash = await bcrypt.hash(pw, 10);
|
||||||
}
|
}
|
||||||
@ -135,11 +143,23 @@ async function setupAdmin(app) {
|
|||||||
},
|
},
|
||||||
new: {
|
new: {
|
||||||
before: async (request) => {
|
before: async (request) => {
|
||||||
const pw = request.payload?.password?.trim();
|
const pw = (request.payload?.password || '').trim();
|
||||||
const pw2 = request.payload?.password_confirm?.trim();
|
const pw2 = (request.payload?.password_confirm || '').trim();
|
||||||
if (!pw) throw new Error('Пароль обязателен');
|
if (!pw) {
|
||||||
if (pw !== pw2) throw new Error('Пароли не совпадают');
|
request.payload.errors = request.payload.errors || {};
|
||||||
if (pw.length < 6) throw new Error('Пароль минимум 6 символов');
|
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');
|
const bcrypt = require('bcrypt');
|
||||||
request.payload.password_hash = await bcrypt.hash(pw, 10);
|
request.payload.password_hash = await bcrypt.hash(pw, 10);
|
||||||
delete request.payload.password;
|
delete request.payload.password;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user