<?php
//_________________________________________________________________________________
//Récupération du token
$reqToken = getQueries("api_tokens", array("idToken" => encrypt_decrypt("decrypt", rawurldecode($_GET['element']), $key_user, $iv_user)));
if(!$reqToken['count'])
redirect("index.php?page_slug=api_tokens");
$token = $reqToken['result'][0];
//_________________________________________________________________________________
//_________________________________________________________________________________
//Récupération des utilsateurs de l'application
$reqUsers = getQueries("nx_users LEFT JOIN nx_applications_as_users ON nx_users.idUser = nx_applications_as_users.user_id",
array("nx_applications_as_users.application_id" => $idApplication));
$users = $reqUsers['result'];
//_________________________________________________________________________________
//_________________________________________________________________________________
//Mise à jour du token
if(isset($_POST['update-token'])) {
//Formulaire
$tokenStatus = htmlspecialchars($_POST['token_status']);
$tokenStatusLabel = $tokenStatus ? "Actif" : "Désactivé";
$form = array('token_name' => htmlspecialchars($_POST['token_name']),
'token_status' => $tokenStatus,
'token_status_label' => $tokenStatusLabel,
'user_id' => htmlspecialchars($_POST['user_id']));
$selector = array('idToken' => $token['idToken']);
$flag = dbRowUpdate2("api_tokens", $form, $selector);
if($flag) {
itsLog(array('log_table' => "api_tokens",
'log_operation' => "Mise à jour de la clé API",
'log_request' => json_encode($form),
'log_response' => json_encode($flag),
'log_selector' => json_encode($selector),
'log_color' => "success",
'log_display' => 1,
'log_timeout' => 5000,
'id_log' => $token['idToken'],
'user_id' => $user -> getUserId()
));
} else {
itsLog(array('log_table' => "api_tokens",
'log_operation' => "Erreur durant la mise à jour de la clé API",
'log_request' => json_encode($form),
'log_response' => json_encode($flag),
'log_selector' => json_encode($selector),
'log_color' => "danger",
'log_display' => 1,
'log_timeout' => 5000,
'id_log' => $token['idToken'],
'user_id' => $user -> getUserId()
));
}
//Refresh
redirect($_SERVER['REQUEST_URI']);
}
//_________________________________________________________________________________
?>
<div class="content d-flex flex-column flex-column-fluid" id="kt_content">
<!--begin::Container-->
<div class="container-xxl" id="kt_content_container">
<!--begin::Layout-->
<div class="d-flex flex-column flex-xl-row">
<!--begin::Sidebar-->
<div class="flex-column flex-lg-row-auto w-100 w-xl-350px mb-10">
<!--begin::Card-->
<div class="card mb-5 mb-xl-8">
<!--begin::Card body-->
<div class="card-body">
<!--begin::Summary-->
<!--begin::User Info-->
<div class="d-flex flex-center flex-column py-5">
<!--begin::Name-->
<span class="fs-3 text-gray-800 fw-bolder mb-3"><?= $token['token_name']?></span>
<!--end::Name-->
</div>
<!--end::User Info-->
<!--end::Summary-->
<!--begin::Details toggle-->
<div class="d-flex flex-stack fs-4 py-3">
<div class="fw-bolder rotate collapsible" data-bs-toggle="collapse" href="#kt_user_view_details" role="button" aria-expanded="false" aria-controls="kt_user_view_details">Détails
<span class="ms-2 rotate-180">
<!--begin::Svg Icon | path: icons/duotune/arrows/arr072.svg-->
<span class="svg-icon svg-icon-3">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
<path d="M11.4343 12.7344L7.25 8.55005C6.83579 8.13583 6.16421 8.13584 5.75 8.55005C5.33579 8.96426 5.33579 9.63583 5.75 10.05L11.2929 15.5929C11.6834 15.9835 12.3166 15.9835 12.7071 15.5929L18.25 10.05C18.6642 9.63584 18.6642 8.96426 18.25 8.55005C17.8358 8.13584 17.1642 8.13584 16.75 8.55005L12.5657 12.7344C12.2533 13.0468 11.7467 13.0468 11.4343 12.7344Z" fill="black" />
</svg>
</span>
<!--end::Svg Icon-->
</span></div>
</div>
<!--end::Details toggle-->
<div class="separator"></div>
<!--begin::Details content-->
<div id="kt_user_view_details" class="collapse show">
<div class="pb-5 fs-6">
<!--begin::Details item-->
<div class="fw-bolder mt-5">Identifiant de la clé API</div>
<div class="text-gray-600">ID-<?= $token['idToken']?></div>
<!--begin::Details item-->
<!--begin::Details item-->
<div class="fw-bolder mt-5">Clé</div>
<div class="text-gray-600">
<?= $token['token_value']?>
</div>
<!--begin::Details item-->
<!--begin::Details item-->
<div class="fw-bolder mt-5">Nom</div>
<div class="text-gray-600">
<?= $token['token_name']?>
</div>
<!--begin::Details item-->
</div>
</div>
<!--end::Details content-->
</div>
<!--end::Card body-->
</div>
<!--end::Card-->
</div>
<!--end::Sidebar-->
<!--begin::Content-->
<div class="flex-lg-row-fluid ms-lg-15">
<!--begin:::Tabs-->
<ul class="nav nav-custom nav-tabs nav-line-tabs nav-line-tabs-2x border-0 fs-4 fw-bold mb-8">
<!--begin:::Tab item-->
<li class="nav-item">
<a class="nav-link text-active-primary pb-4 active" data-bs-toggle="tab" href="#kt_user_view_overview_tab">Modifier</a>
</li>
<!--end:::Tab item-->
<!--begin:::Tab item-->
<li class="nav-item ms-auto">
<!--begin::Action menu-->
<a href="#" class="btn btn-primary ps-7" data-kt-menu-trigger="click" data-kt-menu-attach="parent" data-kt-menu-placement="bottom-end">Actions
<!--begin::Svg Icon | path: icons/duotune/arrows/arr072.svg-->
<span class="svg-icon svg-icon-2 me-0">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
<path d="M11.4343 12.7344L7.25 8.55005C6.83579 8.13583 6.16421 8.13584 5.75 8.55005C5.33579 8.96426 5.33579 9.63583 5.75 10.05L11.2929 15.5929C11.6834 15.9835 12.3166 15.9835 12.7071 15.5929L18.25 10.05C18.6642 9.63584 18.6642 8.96426 18.25 8.55005C17.8358 8.13584 17.1642 8.13584 16.75 8.55005L12.5657 12.7344C12.2533 13.0468 11.7467 13.0468 11.4343 12.7344Z" fill="black" />
</svg>
</span>
<!--end::Svg Icon--></a>
<!--begin::Menu-->
<div class="menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-800 menu-state-bg-light-primary fw-bold py-4 w-250px fs-6" data-kt-menu="true">
<!--begin::Menu item-->
<div class="menu-item px-5">
<div class="menu-content text-muted pb-2 px-5 fs-7 text-uppercase">Clé API</div>
</div>
<!--end::Menu item-->
<!--begin::Menu item-->
<div class="menu-item px-5">
<a href="#" class="menu-link text-danger px-5" data-action="delete" data-table="<?= encrypt_decrypt("encrypt", "api_tokens", $key_user, $iv_user)?>" data-column_primary="<?= encrypt_decrypt("encrypt", "idToken", $key_user, $iv_user)?>" data-id="<?= encrypt_decrypt("encrypt", $token['idToken'], $key_user, $iv_user)?>" data-method="custom">Supprimer la clé API</a>
</div>
<!--end::Menu item-->
</div>
<!--end::Menu-->
<!--end::Menu-->
</li>
<!--end:::Tab item-->
</ul>
<!--end:::Tabs-->
<!--begin:::Tab content-->
<div class="tab-content" id="myTabContent">
<!--begin:::Tab pane-->
<div class="tab-pane fade show active" id="edit_icon" role="tabpanel">
<form method="post" action="">
<!--begin::Card-->
<div class="card card-flush mb-6 mb-xl-9">
<!--begin::Card body-->
<div class="card-body border-top p-9">
<!--begin::Input group-->
<div class="row mb-6">
<!--begin::Label-->
<label class="col-lg-4 col-form-label required fw-bold fs-6">Nom</label>
<!--end::Label-->
<!--begin::Col-->
<div class="col-lg-8 fv-row">
<input type="text" class="form-control form-control-lg form-control-solid" value="<?= $token['token_name']?>" name="token_name"/>
</div>
<!--end::Col-->
</div>
<!--end::Input group-->
<!--begin::Input group-->
<div class="row mb-6">
<!--begin::Label-->
<label class="col-lg-4 col-form-label required fw-bold fs-6">Utilisateur</label>
<!--end::Label-->
<!--begin::Col-->
<div class="col-lg-8 fv-row">
<!--begin::Input-->
<select data-control="select2" data-placeholder="Choisir un utilisateur..." class="form-select form-select-solid form-select-lg fw-bold" name="user_id">
<?php
foreach($users as $userInfo) {
$selected = ($userInfo['idUser'] == $token['user_id']) ? "selected" : "";
echo '<option value="'.$userInfo['idUser'].'" '.$selected.'>'.encrypt_decrypt("decrypt", $userInfo['user_firstname'], $key_user, $iv_user).' '.encrypt_decrypt("decrypt", $userInfo['user_lastname'], $key_user, $iv_user).'</option>';
}
?>
</select>
<!--end::Input-->
</div>
<!--end::Col-->
</div>
<!--end::Input group-->
<!--begin::Input group-->
<div class="row mb-6">
<!--begin::Label-->
<label class="col-lg-4 col-form-label required fw-bold fs-6">Statut</label>
<!--end::Label-->
<!--begin::Accessibilité-->
<div class="col-lg-8">
<!--begin::Input row-->
<div class="d-flex fv-row">
<!--begin::Radio-->
<div class="form-check form-check-custom form-check-solid">
<!--begin::Input-->
<input class="form-check-input me-3" name="token_status" type="radio" value="1" id="token_status_1" <?= ( ($token['token_status'] == 1) ? "checked" : "" )?> />
<!--end::Input-->
<!--begin::Label-->
<label class="form-check-label" for="token_status_1">
<div class="fw-bolder text-gray-800">Activer</div>
<div class="text-gray-600">La clé API pourra être utilisé dans des requêtes externes d'authentification.</div>
</label>
<!--end::Label-->
</div>
<!--end::Radio-->
<div class='separator separator-dashed my-5'></div>
</div>
<!--end::Input row-->
<!--begin::Input row-->
<div class="d-flex fv-row">
<!--begin::Radio-->
<div class="form-check form-check-custom form-check-solid">
<!--begin::Input-->
<input class="form-check-input me-3" name="token_status" type="radio" value="0" id="token_status_0" <?= ( ($token['token_status'] == 0) ? "checked" : "" )?> />
<!--end::Input-->
<!--begin::Label-->
<label class="form-check-label" for="token_status_0">
<div class="fw-bolder text-gray-800">Désactiver</div>
<div class="text-gray-600">Désactiver la clé API le temps d'un debuggage. Si la clé n'a plus d'utilité, il est préférable de la supprimer.</div>
</label>
<!--end::Label-->
</div>
<!--end::Radio-->
<div class='separator separator-dashed my-5'></div>
</div>
<!--end::Input row-->
</div>
<!--end::Accessibilité-->
</div>
<!--end::Input group-->
</div>
<!--end::Card body-->
<!--begin::Actions-->
<div class="card-footer d-flex justify-content-end py-6 px-9">
<button type="submit" class="btn btn-primary" name="update-token">Enregistrer</button>
</div>
<!--end::Actions-->
</div>
<!--end::Card-->
</form>
</div>
<!--end:::Tab pane-->
</div>
<!--end:::Tab content-->
</div>
<!--end::Content-->
</div>
<!--end::Layout-->
</div>
<!--end::Container-->
</div>