/** * @param Request $request * @param DbObject|Authenticatable $admin * @return array|\Illuminate\Http\JsonResponse */ protected function validateAndGetAdminProfileUpdates(Request $request, DbObject $admin) { $validationRules = ['old_password' => 'required', 'new_password' => 'min:6']; $fieldsToUpdate = []; if ($admin->_hasField('language')) { $validationRules['language'] = 'required|in:' . implode(CmfConfig::getInstance()->locales()); $fieldsToUpdate[] = 'language'; } if ($admin->_hasField('name')) { $validationRules['name'] = 'max:200'; $fieldsToUpdate[] = 'name'; } if ($admin->_hasField('timezone')) { $validationRules['timezone'] = 'required|exists2:pg_timezone_names,name'; $fieldsToUpdate[] = 'timezone'; } $usersTable = CmfConfig::getInstance()->users_table_name(); $userLoginCol = CmfConfig::getInstance()->user_login_column(); if ($admin->_hasField('email')) { if ($userLoginCol === 'email') { $validationRules['email'] = "required|email|unique:{$usersTable},email,{$admin->getAuthIdentifier()},id"; } else { $validationRules['email'] = 'email'; } $fieldsToUpdate[] = 'email'; } if ($userLoginCol !== 'email') { $validationRules[$userLoginCol] = "required|regex:%^[a-zA-Z0-9_@.-]+\$%is|min:4|unique:{$usersTable},{$userLoginCol},{$admin->getAuthIdentifier()},id"; $fieldsToUpdate[] = $userLoginCol; } foreach (CmfConfig::getInstance()->additional_user_profile_fields() as $fieldName => $rules) { if (is_int($fieldName)) { $fieldName = $rules; } else { $validationRules[$fieldName] = $rules; } $fieldsToUpdate[] = $fieldName; } $validator = \Validator::make($request->data(), $validationRules, Set::flatten(CmfConfig::transCustom('.page.profile.errors'))); $errors = []; if ($validator->fails()) { $errors = $validator->getMessageBag()->toArray(); } else { if (!\Hash::check($request->data('old_password'), $admin->getAuthPassword())) { $errors['old_password'] = CmfConfig::transCustom('.page.profile.errors.old_password.match'); } } if (!empty($errors)) { return cmfJsonResponseForValidationErrors($errors); } return $request->only($fieldsToUpdate); }
/** * @param Request $request * @param Admin $admin * @return array|\Illuminate\Http\JsonResponse */ protected function validateAndGetAdminProfileUpdates(Request $request, Admin $admin) { $validationRules = ['old_password' => 'required', 'new_password' => 'min:6']; $fieldsToUpdate = []; if ($admin->_hasField('language')) { $validationRules['language'] = 'required|in:' . implode(CmfConfig::getInstance()->locales()); $fieldsToUpdate[] = 'language'; } if ($admin->_hasField('name')) { $validationRules['name'] = 'max:200'; $fieldsToUpdate[] = 'name'; } $usersTable = CmfConfig::getInstance()->users_table_name(); $userLoginCol = CmfConfig::getInstance()->user_login_column(); if ($admin->_hasField('email')) { if ($userLoginCol === 'email') { $validationRules['email'] = "required|email|unique:{$usersTable},email,{$admin->id},id"; } else { $validationRules['email'] = "email"; } $fieldsToUpdate[] = 'email'; } if ($userLoginCol !== 'email') { $validationRules[$userLoginCol] = "required|alpha_dash|min:4|unique:{$usersTable},{$userLoginCol},{$admin->id},id"; $fieldsToUpdate[] = $userLoginCol; } $validator = \Validator::make($request->data(), $validationRules, Set::flatten(CmfConfig::transCustom('.page.profile.errors'))); $errors = []; if ($validator->fails()) { $errors = $validator->getMessageBag()->toArray(); } else { if (!\Hash::check($request->data('old_password'), $admin->password)) { $errors['old_password'] = CmfConfig::transCustom('.page.profile.errors.old_password.match'); } } if (!empty($errors)) { return response()->json(['errors' => $errors, 'message' => CmfConfig::transBase('.form.validation_errors')], HttpCode::INVALID); } return $request->only($fieldsToUpdate); }