Merge pull request #363 from wrongecho/services-certs

Add functionality to link certificates to services
This commit is contained in:
Johnny 2022-02-18 18:00:18 -05:00 committed by GitHub
commit af4e09f534
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 105 additions and 28 deletions

View File

@ -154,7 +154,7 @@
</select>
</div>
<!-- TODO: Services related to other services & certificates -->
<!-- TODO: Services related to other services -->
</div>
@ -207,6 +207,23 @@
?>
</select>
</div>
<div class="form-group">
<label for="certificates">Certificates</label>
<p></p>
<select class="form-select" id="certificates" name="certificates[]" multiple="multiple">
<option value="">- Certificates -</option>
<?php
$sql = mysqli_query($mysqli, "SELECT * FROM certificates WHERE certificate_client_id = '$client_id'");
while($row = mysqli_fetch_array($sql)){
$cert_id = $row['certificate_id'];
$cert_name = $row['certificate_name'];
$cert_domain = $row['certificate_domain'];
echo "<option value=\"$cert_id\">$cert_name ($cert_domain)</option>";
}
?>
</select>
</div>
</div>
</div>

View File

@ -89,17 +89,6 @@
</div>
</div>
<!-- TODO: We need a way of adding multiple (optional) URLs? Ideas? -->
<!-- <div class="form-group">
<label>URL</label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-link"></i></span>
</div>
<input type="text" class="form-control" name="url" placeholder="URL" autofocus>
</div>
</div> -->
<div class="form-group">
<label>Notes</label>
<textarea class="form-control" rows="3" placeholder="Enter some notes" name="note"><?php echo $service_notes ?></textarea>
@ -184,7 +173,7 @@
</select>
</div>
<!-- TODO: Services related to other services & certificates -->
<!-- TODO: Services related to other services -->
</div>
@ -262,6 +251,31 @@
?>
</select>
</div>
<div class="form-group">
<label for="certificates">Certificates</label>
<p></p>
<select class="form-select" id="certificates" name="certificates[]" multiple="multiple">
<option value="">- Certificates -</option>
<?php
$selected_ids = array_column(mysqli_fetch_all($sql_certificates,MYSQLI_ASSOC), "certificate_id");
$sql_all = mysqli_query($mysqli, "SELECT * FROM certificates WHERE certificate_client_id = '$client_id'");
while($row_all = mysqli_fetch_array($sql_all)){
$cert_id = $row_all['certificate_id'];
$cert_name = $row_all['certificate_name'];
if(in_array($cert_id, $selected_ids)){
echo "<option value=\"$cert_id\" selected>$cert_name</option>";
}
else{
echo "<option value=\"$cert_id\">$cert_name</option>";
}
}
?>
</select>
</div>
</div>
</div>

View File

@ -139,6 +139,27 @@
}
?>
<!-- Certificates -->
<?php
if(mysqli_num_rows($sql_certificates) > 0){ ?>
<h5><i class="nav-icon fas fa-lock"></i> Certificates</h5>
<ul>
<?php
// Reset the $sql_certificates pointer to the start
mysqli_data_seek($sql_certificates, 0);
// Showing linked certs
while($row = mysqli_fetch_array($sql_certificates)){
if(!empty($row['certificate_name'])){
echo "<li><a href=\"client.php?client_id=$client_id&tab=certificates&q=$row[certificate_name]\">$row[certificate_name] ($row[certificate_domain])</a></li>";
}
}
?>
</ul>
<?php
}
?>
</div>
</div>
@ -245,17 +266,6 @@
}
?>
<!-- <h5><i class="nav-icon fas fa-lock"></i> Certificates</h5>-->
<!-- <ul>-->
<!-- <li>SSLs related to a domain - Coming soon!</li>-->
<!-- </ul>-->
<!---->
<!-- <h5><i class="nav-icon fas fa-hdd"></i> Backed up by</h5>-->
<!-- <ul>-->
<!-- <li>Asset - Coming soon!</li>-->
<!-- </ul>-->
<!-- Documents -->
<?php
if(mysqli_num_rows($sql_docs) > 0){ ?>

View File

@ -123,6 +123,11 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli,"SELECT FOUND_ROWS()"));
LEFT JOIN domains
ON service_domains.domain_id = domains.domain_id
WHERE service_id = '$service_id'");
// Associated Certificates
$sql_certificates = mysqli_query($mysqli, "SELECT * FROM service_certificates
LEFT JOIN certificates
ON service_certificates.certificate_id = certificates.certificate_id
WHERE service_id = '$service_id'");
// Associated URLs ---- REMOVED for now
//$sql_urls = mysqli_query($mysqli, "SELECT * FROM service_urls

13
db.sql
View File

@ -978,6 +978,19 @@ CREATE TABLE `service_assets` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `service_certificates`
--
DROP TABLE IF EXISTS `service_certificates`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `service_certificates` (
`service_id` int(11) NOT NULL,
`certificate_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `service_contacts`
--

View File

@ -5731,8 +5731,6 @@ if(isset($_POST['add_service'])){
// Create Service
$service_sql = mysqli_query($mysqli, "INSERT INTO services SET service_name = '$service_name', service_description = '$service_description', service_category = '$service_category', service_importance = '$service_importance', service_backup = '$service_backup', service_notes = '$service_notes', service_created_at = NOW(), service_client_id = '$client_id', company_id = '$session_company_id'");
// TODO: Support for URLs
// Create links to assets
if($service_sql){
$service_id = $mysqli->insert_id;
@ -5782,7 +5780,7 @@ if(isset($_POST['add_service'])){
}
}
if(!empty($_POST['logins'])){
if(!empty($_POST['domains'])){
$service_domain_ids = $_POST['domains'];
foreach($service_domain_ids as $domain_id){
if(intval($domain_id)){
@ -5791,6 +5789,15 @@ if(isset($_POST['add_service'])){
}
}
if(!empty($_POST['certificates'])){
$service_cert_ids = $_POST['certificates'];
foreach($service_cert_ids as $cert_id){
if(intval($cert_id)){
mysqli_query($mysqli, "INSERT INTO service_certificates SET service_id = '$service_id', certificate_id = '$cert_id'");
}
}
}
//Logging
mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Service', log_action = 'Create', log_description = '$session_name created service $service_name', log_created_at = NOW(), log_client_id = $client_id, company_id = $session_company_id, log_user_id = $session_user_id");
@ -5824,6 +5831,7 @@ if(isset($_POST['edit_service'])){
mysqli_query($mysqli, "DELETE FROM service_assets WHERE service_id = '$service_id'");
mysqli_query($mysqli, "DELETE FROM service_logins WHERE service_id = '$service_id'");
mysqli_query($mysqli, "DELETE FROM service_domains WHERE service_id = '$service_id'");
mysqli_query($mysqli, "DELETE FROM service_certificates WHERE service_id = '$service_id'");
// Relink
if(!empty($_POST['contacts'])){
@ -5871,7 +5879,7 @@ if(isset($_POST['edit_service'])){
}
}
if(!empty($_POST['logins'])){
if(!empty($_POST['domains'])){
$service_domain_ids = $_POST['domains'];
foreach($service_domain_ids as $domain_id){
if(intval($domain_id)){
@ -5880,6 +5888,15 @@ if(isset($_POST['edit_service'])){
}
}
if(!empty($_POST['certificates'])){
$service_cert_ids = $_POST['certificates'];
foreach($service_cert_ids as $cert_id){
if(intval($cert_id)){
mysqli_query($mysqli, "INSERT INTO service_certificates SET service_id = '$service_id', certificate_id = '$cert_id'");
}
}
}
//Logging
mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Service', log_action = 'Modified', log_description = '$session_name modified service $service_name', log_created_at = NOW(), company_id = $session_company_id, log_user_id = $session_user_id");
@ -5903,6 +5920,7 @@ if(isset($_GET['delete_service'])){
mysqli_query($mysqli, "DELETE FROM service_assets WHERE service_id = '$service_id'");
mysqli_query($mysqli, "DELETE FROM service_logins WHERE service_id = '$service_id'");
mysqli_query($mysqli, "DELETE FROM service_domains WHERE service_id = '$service_id'");
mysqli_query($mysqli, "DELETE FROM service_certificates WHERE service_id = '$service_id'");
//Logging
mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Service', log_action = 'Deleted', log_description = '$session_name deleted service $service_id', log_created_at = NOW(), company_id = $session_company_id, log_user_id = $session_user_id");