Joywork/engine/classes/WebAppRaiser/forms/ApiSettingsForm.php

217 lines
6.7 KiB
PHP
Raw Normal View History

2026-05-22 20:21:54 +02:00
<?php
class ApiSettingsForm extends WebAppRaiserForm
{
public function __construct($form_id)
{
parent::__construct($form_id);
global $user;
//print_r($user);
if(!$user->api['is_owner']){
unset($this->form['api_header_markup']);
unset($this->form['war_username']);
unset($this->form['war_client_id']);
unset($this->form['war_client_secret']);
unset($this->form['war_access_token']);
unset($this->form['war_refresh_token']);
unset($this->form['war_pincode']);
unset($this->form['submit']);
}
}
public function form()
{
$form = parent::form();
$header = function ($text) {
return '<div style="border-bottom: 2px solid rgb(67, 160, 71); margin-bottom: 1.5em;"><h3>'.$text.'</h3></div>';
};
$label = function($text) {
return array('#text' => $text, '#class' => ['label'], '#style' => ['width:33%;']);
};
//$form['form_attributes']['enctype'] = 'multipart/form-data';
$form['form_attributes']['js'][] = 'engine/classes/WebAppRaiser/forms/ApiSettingsForm.js';
$form['war_id'] = array(
'inputs' => array(
'#type'=> 'hidden',
),
);
$form['war_user_id'] = array(
'inputs' => array(
'#type'=> 'hidden',
),
);
$form['api_header_markup'] = array(
'#prefix' => '<div class="row"><div class="col col-12 col-md-4" style="width:42%;float:left;padding: 0px 2%;">',
'#markup' => $header('Интеграция API ВебОценщик'),
);
$form['war_username'] = array(
'label'=> $label('Email пользователя в системе ВебОценщик'),
'inputs' => array(
'#type'=> 'text',
'#required'=> true,
),
);
$form['war_client_id'] = array(
'label'=> $label('Логин для доступа к API'),
'inputs' => array(
'#type'=> 'text',
'#required'=> true,
'#attributes' => array(
'placeholder' => 'client_id',
),
//'#inputs_style' => 'float:none; width:90%',
),
);
$form['war_client_secret'] = array(
'label'=> $label('Секретный код для API'),
'inputs' => array(
'#type'=> 'password',
'#required'=> true,
'#attributes' => array(
'placeholder' => 'client_secret',
),
//'#inputs_style' => 'float:none; width:90%',
),
);
$form['war_access_token'] = array(
'label'=> $label('Токен для доступа к данным'),
'inputs' => array(
'#type'=> 'text',
'#attributes' => array(
'disabled' => 'disabled',
),
),
);
$form['war_refresh_token'] = array(
'label'=> $label('Токен для обновления авторизационных данных'),
'inputs' => array(
'#type'=> 'text',
'#attributes' => array(
'disabled' => 'disabled',
),
//'#required'=> true,
//'#inputs_style' => 'float:none; width:90%',
),
'#suffix' => '</div>',
);
$form['access_header_markup'] = array(
'#prefix' => '<div class="col col-md-8" style="width:54%;float:left;padding: 0px 2%;">',
'#markup' => $header('Общий доступ к API ВебОценщик'),
);
$form['war_pincode'] = array(
'label'=> $label('Пинкод для доступа'),
'inputs' => array(
'#type'=> 'number',
'#attributes' => array(
'min' => 11111,
'max' => 99999,
'placeholder' => 'xxxxx',
'maxlength' => 5,
),
'#inputs_style' => 'width:120px;',
),
);
$form['war_attached_users'] = array(
'#markup' => 'Пользователи, имеющие доступ к вашему API',
'#suffix' => '</div><div class="clear">&nbsp;</div>',
);
$form['submit'] = array(
'#markup' => '
<div class="lw-settings-block_submit-row">
<div class="control-inputs" style="clear:both;">
<div class="inputs-group" style="margin-bottom: -60px;">
<button class="top-line__button button-fl-right medium-button">Сохранить</button>
</div>
</div>
</div>',
);
return $form;
}
public function validate()
{
$status = parent::validate();
return $status;
}
public function submit($status, &$page, WebAppRaiserAPI $WebAppRaiserAPI){
parent::submit($status, $page, $WebAppRaiserAPI);
$page['status'] = $status['code'];
$page['msg'] = array_merge($page['msg'], $status['message']);
if($status['code'] == 'success'){
//todo запрос авторизации
$res = $WebAppRaiserAPI->auth_request('password', $status['post']);
//todo если успех то сохраняем
if($res['status'] == 'success'){
$page['msg'][] = $res['msg'];
$page['msg'][] = 'Настройки сохранены!';
}
else {
$page['msg'][] = 'Произошла ошибка при сохренении настроек!';
$page['msg'][] = $res['result']['message'];
}
$page['status'] = $res['status'];
}
else {
$page['msg'][] = 'Произошла ошибки при проверке формы!';
}
parent::redirect($page);
}
public static function getApiUsersInForm($api_id){
global $user;
$sql = "SELECT wu.*, u.fio, u.first_name, u.last_name, u.phone, wa.id as user_api_id
FROM war_users wu
INNER JOIN users u ON u.id = wu.uid
LEFT JOIN user_api_war wa ON wa.user_id = wu.uid
WHERE wu.api_id = $api_id";
$res = mysql_query($sql);
$output = '<h3>Пользователи, имеющие доступ к вашему API</h3>';
$output .= '<div class="jw__NB"><div class="jw__NB__flat-list" style="max-height: 250px;overflow-y: scroll;">';
$output .= '<table>'.PHP_EOL;
$output .= '<thead><tr>
<th>Имя</th>
<th>Фамилия</th>
<th>ФИО</th>
<th>тел</th>
<th>дата</th>
<th>действия</th>
</tr></thead><tbody>'.PHP_EOL;
while ($row = mysql_fetch_assoc($res)) {
$output .= '<tr id="wid-tr-'.$row['uid'].'-'.$row['api_id'].'">'.PHP_EOL;
$output .= '<td>'.$row['first_name'].'</td>'.PHP_EOL;
$output .= '<td>'.$row['last_name'].'</td>'.PHP_EOL;
$output .= '<td>'.$row['fio'].'</td>'.PHP_EOL;
$output .= '<td>'.$row['phone'].'</td>'.PHP_EOL;
$output .= '<td>'.date('d.m.Y', $row['updateDate']).'</td>'.PHP_EOL;
if(!empty($row['user_api_id']) && $row['user_api_id'] == $api_id){
$output .= '<td>Владелец</td>'.PHP_EOL;
}
elseif(!$user->api['is_owner'] && $row['uid'] != $user->id){
$output .= '<td></td>'.PHP_EOL;
}
else{
$output .= '<td>
<a href="javascript:{};" data-uid="'.$row['uid'].'" data-apiid="'.$row['api_id'].'" class="wid-delete" title="Удалить"><i class="ti-trash"></i></a></td>'.PHP_EOL;
}
$output .= '</tr>'.PHP_EOL;
}
$output .= '</tbody></table></div></div>'.PHP_EOL;
return $output;
}
}