Files
ibiza_sistema/views/users/profile.php
Administrador Ibiza 5289fd4133 Primer version funcional
2025-12-29 23:37:11 -06:00

136 lines
5.6 KiB
PHP
Executable File

<div class="row mb-4">
<div class="col-12">
<h2><i class="bi bi-person"></i> Mi Perfil</h2>
<p class="text-muted">Actualiza tu información personal y contraseña</p>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">Información Personal</h5>
</div>
<div class="card-body">
<form id="profileForm">
<div class="mb-3">
<label class="form-label">Usuario</label>
<input type="text" class="form-control" value="<?= Auth::user()['username'] ?>" disabled>
</div>
<div class="mb-3">
<label class="form-label">Email</label>
<input type="email" class="form-control" name="email" value="<?= Auth::user()['email'] ?>" required>
</div>
<div class="mb-3">
<label class="form-label">Nombre</label>
<input type="text" class="form-control" name="first_name" value="<?= Auth::user()['first_name'] ?>" required>
</div>
<div class="mb-3">
<label class="form-label">Apellido</label>
<input type="text" class="form-control" name="last_name" value="<?= Auth::user()['last_name'] ?>" required>
</div>
<button type="submit" class="btn btn-primary">
<i class="bi bi-check"></i> Guardar Cambios
</button>
</form>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">Cambiar Contraseña</h5>
</div>
<div class="card-body">
<form id="passwordForm">
<div class="mb-3">
<label class="form-label">Contraseña Actual</label>
<input type="password" class="form-control" name="current_password" required>
</div>
<div class="mb-3">
<label class="form-label">Nueva Contraseña</label>
<input type="password" class="form-control" name="new_password" id="newPassword" required>
</div>
<div class="mb-3">
<label class="form-label">Confirmar Contraseña</label>
<input type="password" class="form-control" name="confirm_password" id="confirmPassword" required>
</div>
<button type="submit" class="btn btn-warning">
<i class="bi bi-lock"></i> Cambiar Contraseña
</button>
</form>
</div>
</div>
<div class="card mt-3">
<div class="card-header">
<h5 class="card-title mb-0">Información de Cuenta</h5>
</div>
<div class="card-body">
<p><strong>Rol:</strong> <span class="badge bg-<?= (Auth::isAdmin() ? 'danger' : (Auth::isCapturist() ? 'warning' : 'info')) ?>"><?= Auth::user()['role'] ?></span></p>
<p><strong>Estado:</strong> <span class="badge bg-success">Activo</span></p>
<p><strong>Último acceso:</strong> <?= Auth::user()['last_login'] ? date('d/m/Y H:i', strtotime(Auth::user()['last_login'])) : 'No disponible' ?></p>
</div>
</div>
</div>
</div>
<script>
document.getElementById('profileForm').addEventListener('submit', function(e) {
e.preventDefault();
const formData = new FormData(this);
const data = Object.fromEntries(formData.entries());
fetch('/dashboard.php?page=users_actions&action=update_profile', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data)
})
.then(r => r.json())
.then(res => {
if (res.success) {
Swal.fire('Guardado', 'Tu perfil ha sido actualizado', 'success').then(() => {
location.reload(); // Recargar para ver los cambios en la información de sesión
});
} else {
Swal.fire('Error', res.message || 'Error al guardar', 'error');
}
})
.catch(() => Swal.fire('Error', 'Error de conexión', 'error'));
});
document.getElementById('passwordForm').addEventListener('submit', function(e) {
e.preventDefault();
const formData = new FormData(this);
const data = Object.fromEntries(formData.entries());
if (data.new_password !== data.confirm_password) {
Swal.fire('Error', 'Las contraseñas no coinciden', 'error');
return;
}
if (data.new_password.length < 6) {
Swal.fire('Error', 'La contraseña debe tener al menos 6 caracteres', 'error');
return;
}
fetch('/dashboard.php?page=users_actions&action=change_password', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data)
})
.then(r => r.json())
.then(res => {
if (res.success) {
Swal.fire('Éxito', 'Contraseña actualizada', 'success').then(() => {
document.getElementById('passwordForm').reset();
});
} else {
Swal.fire('Error', res.message || 'Error al cambiar contraseña', 'error');
}
})
.catch(() => Swal.fire('Error', 'Error de conexión', 'error'));
});
</script>