fix login bugs

This commit is contained in:
Dennis Eichhorn 2023-03-31 00:25:51 +02:00
parent 14c59e1a1b
commit dd6f194beb
2 changed files with 97 additions and 3 deletions

View File

@ -16,6 +16,7 @@ namespace Modules\ClientManagement\Controller;
use Modules\Admin\Models\Account;
use Modules\Admin\Models\Address;
use Modules\Admin\Models\AddressMapper;
use Modules\Admin\Models\NullAccount;
use Modules\Auditor\Models\Audit;
use Modules\Auditor\Models\AuditMapper;
@ -125,8 +126,8 @@ final class ApiController extends Controller
AuditMapper::create()->execute($audit);
if (($validate['status'] === 0
&& $validate['vat'] === true
&& $validate['name'] === true
&& $validate['vat'] === true
&& $validate['name'] === true
&& $validate['city'] === true)
|| $validate['status'] !== 0 // Api out of order -> accept it -> @todo: test it during invoice creation
) {
@ -232,6 +233,100 @@ final class ApiController extends Controller
return [];
}
/**
* Api method to update an account
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @api
*
* @since 1.0.0
*/
public function apiMainAddressUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateMainAddressUpdate($request))) {
$response->set('client_main_address', new FormValidation($val));
$response->header->status = RequestStatusCode::R_400;
return;
}
$clientMapper = $client = ClientMapper::get()
->with('mainAddress');
if ($request->hasData('account')) {
$clientMapper->where('account', $request->getDataInt('account'))
->where('unit', $request->getDataInt('unit'));
} elseif ($request->hasData('client')) {
$clientMapper->where('id', $request->getDataInt('client'));
} else {
$clientMapper->where('account', $request->header->account)
->where('unit', $request->getDataInt('unit'));
}
$client = $clientMapper->execute();
$old = $client->mainAddress;
$new = $this->updateMainAddressFromRequest($request, clone $old);
$this->updateModel($request->header->account, $old, $new, AddressMapper::class, 'address', $request->getOrigin());
$this->fillJsonResponse(
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulUpdate'),
$new
);
}
/**
* Validate news create request
*
* @param RequestAbstract $request Request
*
* @return array<string, bool>
*
* @since 1.0.0
*/
private function validateMainAddressUpdate(RequestAbstract $request) : array
{
$val = [];
if (($val['client'] = (empty($request->getData('client') && empty($request->getData('account')))))
) {
return $val;
}
return [];
}
/**
* Method to update an account from a request
*
* @param RequestAbstract $request Request
* @param Address $address Address
* @param bool $allowPassword Allow to change password
*
* @return Address
*
* @since 1.0.0
*/
private function updateMainAddressFromRequest(RequestAbstract $request, Address $address) : Address
{
$address->address = $request->getDataString('address') ?? $address->address;
$address->postal = $request->getDataString('postal') ?? $address->postal;
$address->city = $request->getDataString('city') ?? $address->city;
$address->setCountry($request->getDataString('country') ?? $address->getCountry());
$address->state = $request->getDataString('state') ?? $address->state;
return $address;
}
/**
* Api method to create client l11n
*

View File

@ -128,7 +128,6 @@ final class ClientMapper extends DataMapperFactory
'mapper' => ClientAttributeMapper::class,
'table' => 'clientmgmt_client_attr',
'self' => 'clientmgmt_client_attr_client',
'conditional' => true,
'external' => null,
],
];