This commit is contained in:
Lizandro Guarnizo
2025-04-18 07:38:32 -05:00
parent 462eb0d42c
commit 79d6cca94d
23 changed files with 821 additions and 73 deletions
@@ -28,7 +28,7 @@
</button>
</form>
<div class="mt-4 text-sm text-gray-600 hover:text-green-500 transition-all">
<a href="#">¿Olvidaste tu contraseña?</a>
<a href="/request-password-reset">¿Olvidaste tu contraseña?</a>
</div>
</div>
@@ -1,8 +1,8 @@
<h1 class="h1">Reset my password!</h1>
<form action="/do/reset-password" method="POST">
<div class="container">
<label for="Usuario"><b>Codigo de usuario</b></label>
<input id="Usuario" type="text" placeholder="Ingrese su usuario" name="email" required>
<label for="nombre_usuario"><b>Codigo de usuario</b></label>
<input id="nombre_usuario" type="text" placeholder="Ingrese su usuario" name="nombre_usuario" required>
<button type="submit">Let me reset password!!</button>
</div>
+55 -12
View File
@@ -16,7 +16,8 @@
</div>
<div class="flex items-center justify-end mb-4 gap-2 md:mb-0">
<button @click="addModal = true" class="bg-[#8eb02f] text-white px-4 py-2 rounded text-sm">Nuevo</button>
<button @click="addModal = true"
class="bg-[#8eb02f] text-white px-4 py-2 rounded text-sm">Nuevo</button>
</div>
</div>
@@ -27,6 +28,7 @@
<th class="py-2 px-3 border-b">Usuario</th>
<th class="py-2 px-3 border-b">Puerto</th>
<th class="py-2 px-3 border-b">Servidor</th>
<th class="py-2 px-3 border-b">Entrar</th>
<th class="py-2 px-3 border-b"></th>
</tr>
</thead>
@@ -36,8 +38,23 @@
<td class="py-3 text-xs px-3 border-b" x-text="data.usuario"></td>
<td class="py-3 text-xs px-3 border-b" x-text="data.puerto"></td>
<td class="py-3 text-xs px-3 border-b">
<span x-text="`${servidores.find(serv => serv.ID == data.servidor_id).nombre} - ${servidores.find(serv => serv.ID == data.servidor_id).ip_servidor}`"></span>
<span
x-text="`${servidores.find(serv => serv.ID == data.servidor_id).nombre} - ${servidores.find(serv => serv.ID == data.servidor_id).ip_servidor}`"></span>
</td>
<td>
<!-- Botón abrir consola -->
<a target="_blank" x-bind:href="`/app/ssh/${data.id}`">
<button title="Entrar">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
stroke-width="1.5" stroke="currentColor" class="w-5 text-orange-400">
<path stroke-linecap="round" stroke-linejoin="round"
d="M6 12 3.269 3.125A59.769 59.769 0 0 1 21.485 12 59.768 59.768 0 0 1 3.27 20.875L5.999 12Zm0 0h7.5" />
</svg>
</button>
</a>
</td>
<td class="py-3 text-xs px-3 border-b w-24">
<div class="flex items-center gap-2">
@@ -98,20 +115,29 @@
<div class="flex flex-col sm:flex-row justify-between gap-4 mb-4">
<div class="w-full">
<label class="block mb-2">Usuario:</label>
<input type="text" x-model="selectedItem.usuario" disabled class="border border-gray-300 rounded p-2 w-full" placeholder="Usuario" />
<input type="text" x-model="selectedItem.usuario" disabled
class="border border-gray-300 rounded p-2 w-full" placeholder="Usuario" />
</div>
<div class="w-full">
<label class="block mb-2">Password:</label>
<input type="text" x-model="selectedItem.password" disabled
class="border border-gray-300 rounded p-2 w-full" placeholder="Password" />
</div>
<div class="w-full">
<label class="block mb-2">Puerto:</label>
<input type="text" x-model="selectedItem.puerto" disabled class="border border-gray-300 rounded p-2 w-full" placeholder="Puerto" />
<input type="text" x-model="selectedItem.puerto" disabled
class="border border-gray-300 rounded p-2 w-full" placeholder="Puerto" />
</div>
</div>
<div class="flex flex-col sm:flex-row justify-between gap-4 mb-4">
<div class="w-full">
<label class="block mb-2">Servidor:</label>
<select x-model="selectedItem.servidor_id" disabled class="border border-gray-300 rounded p-2 w-full">
<select x-model="selectedItem.servidor_id" disabled
class="border border-gray-300 rounded p-2 w-full">
<option value="">Selecciona un servidor</option>
<template x-for="servidor in servidores" :key="servidor.ID">
<option :value="servidor.ID" x-text="`${servidor.nombre} - ${servidor.ip_servidor}`"></option>
<option :value="servidor.ID" x-text="`${servidor.nombre} - ${servidor.ip_servidor}`">
</option>
</template>
</select>
</div>
@@ -131,11 +157,18 @@
<div class="flex flex-col sm:flex-row justify-between gap-4 mb-4">
<div class="w-full">
<label class="block mb-2">Usuario:</label>
<input type="text" x-model="selectedItem.usuario" class="border border-gray-300 rounded p-2 w-full" placeholder="Usuario" />
<input type="text" x-model="selectedItem.usuario" class="border border-gray-300 rounded p-2 w-full"
placeholder="Usuario" />
</div>
<div class="w-full">
<label class="block mb-2">Password:</label>
<input type="text" x-model="selectedItem.password" class="border border-gray-300 rounded p-2 w-full"
placeholder="Password" />
</div>
<div class="w-full">
<label class="block mb-2">Puerto:</label>
<input type="text" x-model="selectedItem.puerto" class="border border-gray-300 rounded p-2 w-full" placeholder="Puerto" />
<input type="text" x-model="selectedItem.puerto" class="border border-gray-300 rounded p-2 w-full"
placeholder="Puerto" />
</div>
</div>
<div class="flex flex-col sm:flex-row justify-between gap-4 mb-4">
@@ -144,7 +177,8 @@
<select x-model="selectedItem.servidor_id" class="border border-gray-300 rounded p-2 w-full">
<option value="">Selecciona un servidor</option>
<template x-for="servidor in servidores" :key="servidor.ID">
<option :value="servidor.ID" x-text="`${servidor.nombre} - ${servidor.ip_servidor}`"></option>
<option :value="servidor.ID" x-text="`${servidor.nombre} - ${servidor.ip_servidor}`">
</option>
</template>
</select>
</div>
@@ -165,11 +199,18 @@
<div class="flex flex-col sm:flex-row justify-between gap-4 mb-4">
<div class="w-full">
<label class="block mb-2">Usuario:</label>
<input type="text" x-model="selectedItem.usuario" class="border border-gray-300 rounded p-2 w-full" placeholder="Usuario" />
<input type="text" x-model="selectedItem.usuario" class="border border-gray-300 rounded p-2 w-full"
placeholder="Usuario" />
</div>
<div class="w-full">
<label class="block mb-2">Password:</label>
<input type="text" x-model="selectedItem.password" class="border border-gray-300 rounded p-2 w-full"
placeholder="Password" />
</div>
<div class="w-full">
<label class="block mb-2">Puerto:</label>
<input type="text" x-model="selectedItem.puerto" class="border border-gray-300 rounded p-2 w-full" placeholder="Puerto" />
<input type="text" x-model="selectedItem.puerto" class="border border-gray-300 rounded p-2 w-full"
placeholder="Puerto" />
</div>
</div>
<div class="flex flex-col sm:flex-row justify-between gap-4 mb-4">
@@ -178,7 +219,8 @@
<select x-model="selectedItem.servidor_id" class="border border-gray-300 rounded p-2 w-full">
<option value="">Selecciona un servidor</option>
<template x-for="servidor in servidores" :key="servidor.ID">
<option :value="servidor.ID" x-text="`${servidor.nombre} - ${servidor.ip_servidor}`"></option>
<option :value="servidor.ID" x-text="`${servidor.nombre} - ${servidor.ip_servidor}`">
</option>
</template>
</select>
</div>
@@ -249,6 +291,7 @@
usuario: data.usuario,
puerto: data.puerto,
servidor_id: data.servidor_id,
passwprd : data.password,
created_at: data.CreatedAt,
}));
+31
View File
@@ -0,0 +1,31 @@
<div>
<h2>Consola SSH en Vivo</h2>
<pre id="terminal"></pre>
<input type="text" id="command" placeholder="Escribe un comando">
<button onclick="sendCommand()">Enviar</button>
<script>
let id = "{{.id}}"; // Reemplaza con el ID real
const socket = new WebSocket("ws://localhost:8084/app/ws/ssh/" + id);
const terminal = document.getElementById("terminal");
socket.onopen = () => {
terminal.textContent = "Conexión SSH establecida...\n";
};
socket.onmessage = (event) => {
terminal.textContent += event.data;
terminal.scrollTop = terminal.scrollHeight;
};
socket.onerror = (error) => {
console.error("Error en WebSocket:", error);
};
function sendCommand() {
const command = document.getElementById("command").value + "\n";
socket.send(command);
document.getElementById("command").value = "";
}
</script>
</div>
+1 -1
View File
@@ -4,7 +4,7 @@
<h1 class="text-2xl font-bold mb-4">Token Vencido</h1>
<div class="justify-between w-full md:flex">
<p class="mb-4 text-sm">Tu token ha expirado. Por favor, intenta restablecer tu contraseña nuevamente.</p>
<a href="/request-password-reset"><button type="submit"
<a href="/"><button type="submit"
class="bg-[#8eb02f] text-white px-4 py-2 rounded flex space-x-2">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
stroke="currentColor" class="w-5">