diff --git a/app/Controllers/Http/Admin/AdminuserController.ts b/app/Controllers/Http/Admin/AdminuserController.ts index ce99724..2962cbd 100644 --- a/app/Controllers/Http/Admin/AdminuserController.ts +++ b/app/Controllers/Http/Admin/AdminuserController.ts @@ -85,7 +85,9 @@ export default class AdminuserController { // return response.badRequest(error.messages); throw error; } - const input = request.only(['login', 'email', 'password', 'first_name', 'last_name']); + + const input: Record = request.only(['login', 'email','first_name', 'last_name']); + input.password = request.input('new_password'); const user = await User.create(input); if (request.input('roles')) { const roles: Array = request.input('roles'); @@ -95,7 +97,6 @@ export default class AdminuserController { session.flash('message', 'User has been created successfully'); return response.redirect().toRoute('settings.user.index'); } - public async show({ request, inertia }: HttpContext) { const id = request.param('id'); const user = await User.query().where('id', id).firstOrFail(); @@ -139,9 +140,11 @@ export default class AdminuserController { }); // password is optional - let input; - if (request.input('password')) { - input = request.only(['login', 'email', 'password', 'first_name', 'last_name']); + let input: Record; + + if (request.input('new_password')) { + input = request.only(['login', 'email', 'first_name', 'last_name']); + input.password = request.input('new_password'); } else { input = request.only(['login', 'email', 'first_name', 'last_name']); } @@ -156,7 +159,6 @@ export default class AdminuserController { session.flash('message', 'User has been updated successfully'); return response.redirect().toRoute('settings.user.index'); } - public async destroy({ request, response, session }: HttpContext) { const id = request.param('id'); const user = await User.findOrFail(id); diff --git a/app/validators/user.ts b/app/validators/user.ts index c87d467..b7bbd70 100644 --- a/app/validators/user.ts +++ b/app/validators/user.ts @@ -16,7 +16,7 @@ export const createUserValidator = vine.compile( first_name: vine.string().trim().minLength(3).maxLength(255), last_name: vine.string().trim().minLength(3).maxLength(255), email: vine.string().maxLength(255).email().normalizeEmail().isUnique({ table: 'accounts', column: 'email' }), - password: vine.string().confirmed().trim().minLength(3).maxLength(60), + new_password: vine.string().confirmed({ confirmationField: 'password_confirmation' }).trim().minLength(3).maxLength(60), roles: vine.array(vine.number()).minLength(1), // define at least one role for the new user }), ); @@ -42,7 +42,7 @@ export const updateUserValidator = vine.withMetaData<{ objId: number }>().compil .email() .normalizeEmail() .isUnique({ table: 'accounts', column: 'email', whereNot: (field) => field.meta.objId }), - password: vine.string().confirmed().trim().minLength(3).maxLength(60).optional(), + new_password: vine.string().confirmed({ confirmationField: 'password_confirmation' }).trim().minLength(3).maxLength(60).optional(), roles: vine.array(vine.number()).minLength(1), // define at least one role for the new user }), ); diff --git a/resources/js/Components/SimplePasswordMeter/password-meter.vue b/resources/js/Components/SimplePasswordMeter/password-meter.vue index 310cd54..e2dffd1 100644 --- a/resources/js/Components/SimplePasswordMeter/password-meter.vue +++ b/resources/js/Components/SimplePasswordMeter/password-meter.vue @@ -6,10 +6,29 @@ import FormField from '@/Components/FormField.vue'; import FormControl from '@/Components/FormControl.vue'; // Define props -const props = defineProps<{ - modelValue: string; - errors: Partial>; -}>(); +// const props = defineProps<{ +// modelValue: string, +// errors: Partial>, +// showRequiredMessage: boolean, +// }>(); + +const props = defineProps({ + modelValue: { + type: String, + }, + errors: { + type: Object, + default: () => ({} as Partial>), + }, + showRequiredMessage: { + type: Boolean, + default:true, + }, + fieldLabel: { + type: String, + default: 'New password', + } +}); const emit = defineEmits(['update:modelValue', 'score']); @@ -61,8 +80,8 @@ const passwordMetrics = computed(() => {