qr vcard
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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,
|
||||
}));
|
||||
|
||||
|
||||
@@ -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>
|
||||
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user