mirror of
https://git.imnavajas.es/jjimenez/erp-imprimelibros.git
synced 2026-02-09 04:19:13 +00:00
impersonation implementado
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
spring.application.name=erp
|
||||
# Active profile
|
||||
#spring.profiles.active=dev
|
||||
spring.profiles.active=test
|
||||
spring.profiles.active=dev
|
||||
#spring.profiles.active=test
|
||||
#spring.profiles.active=prod
|
||||
|
||||
|
||||
|
||||
@ -6,4 +6,5 @@ app.cancelar=Cancel
|
||||
app.guardar=Save
|
||||
app.editar=Edit
|
||||
app.eliminar=Delete
|
||||
app.imprimir=Print
|
||||
app.imprimir=Print
|
||||
app.impersonate.exit=Return to my user
|
||||
|
||||
@ -32,4 +32,5 @@ app.sidebar.gestion-pagos=Gestión de Pagos
|
||||
|
||||
app.errors.403=No tienes permiso para acceder a esta página.
|
||||
|
||||
app.validation.required=Campo obligatorio
|
||||
app.validation.required=Campo obligatorio
|
||||
app.impersonate.exit=Volver a mi usuario
|
||||
|
||||
@ -1 +1,3 @@
|
||||
|
||||
usuarios.impersonate.title=Sign in as user
|
||||
usuarios.impersonate.text=You are about to sign in as <b>{0}</b>. You can return to your user from the menu.
|
||||
usuarios.impersonate.button=Continue
|
||||
|
||||
@ -53,4 +53,7 @@ usuarios.delete.title=Eliminar usuario
|
||||
usuarios.delete.button=Si, ELIMINAR
|
||||
usuarios.delete.text=¿Está seguro de que desea eliminar al usuario?<br>Esta acción no se puede deshacer.
|
||||
usuarios.delete.ok.title=Usuario eliminado
|
||||
usuarios.delete.ok.text=El usuario ha sido eliminado con éxito.
|
||||
usuarios.delete.ok.text=El usuario ha sido eliminado con éxito.
|
||||
usuarios.impersonate.title=Entrar como usuario
|
||||
usuarios.impersonate.text=Vas a iniciar sesión como <b>{0}</b>. Podrás volver a tu usuario desde el menú.
|
||||
usuarios.impersonate.button=Entrar
|
||||
|
||||
@ -147,6 +147,55 @@ $(() => {
|
||||
});
|
||||
});
|
||||
|
||||
// Botón "Entrar como"
|
||||
$(document).on('click', '.btn-impersonate-user', function (e) {
|
||||
e.preventDefault();
|
||||
const username = $(this).data('username');
|
||||
|
||||
const title = window.languageBundle.get(['usuarios.impersonate.title']) || 'Entrar como usuario';
|
||||
const textTpl = window.languageBundle.get(['usuarios.impersonate.text'])
|
||||
|| 'Vas a iniciar sesión como <b>{0}</b>.';
|
||||
const confirmText = window.languageBundle.get(['usuarios.impersonate.button']) || 'Entrar';
|
||||
|
||||
Swal.fire({
|
||||
title,
|
||||
html: textTpl.replace('{0}', username),
|
||||
icon: 'warning',
|
||||
showCancelButton: true,
|
||||
buttonsStyling: false,
|
||||
customClass: {
|
||||
confirmButton: 'btn btn-info w-xs mt-2',
|
||||
cancelButton: 'btn btn-light w-xs mt-2'
|
||||
},
|
||||
confirmButtonText: confirmText,
|
||||
cancelButtonText: window.languageBundle.get(['app.cancelar']) || 'Cancelar',
|
||||
}).then((result) => {
|
||||
if (!result.isConfirmed) return;
|
||||
|
||||
$.ajax({
|
||||
url: '/impersonate',
|
||||
type: 'POST',
|
||||
data: { username },
|
||||
success: function () {
|
||||
window.location.href = '/';
|
||||
},
|
||||
error: function (xhr) {
|
||||
const msg = (xhr.responseJSON && xhr.responseJSON.message)
|
||||
|| 'No se pudo iniciar sesión como ese usuario.';
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'No se pudo suplantar',
|
||||
text: msg,
|
||||
buttonsStyling: false,
|
||||
customClass: {
|
||||
confirmButton: 'btn btn-secondary me-2',
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// Submit del form en el modal
|
||||
$(document).on('submit', '#userForm', function (e) {
|
||||
|
||||
@ -103,6 +103,14 @@
|
||||
<a class="dropdown-item" href="/apps-chat"><i
|
||||
class="mdi mdi-message-text-outline text-muted fs-16 align-middle me-1"></i>
|
||||
<span class="align-middle" th:text="#{app.mensajes}">Mensajes</span></a>
|
||||
<div sec:authorize="hasRole('PREVIOUS_ADMINISTRATOR')">
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="#"
|
||||
onclick="document.getElementById('exitImpersonationForm').submit(); return false;">
|
||||
<i class="mdi mdi-account-switch text-muted fs-16 align-middle me-1"></i>
|
||||
<span class="align-middle" th:text="#{app.impersonate.exit}">Volver a mi usuario</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="#"
|
||||
onclick="document.getElementById('logoutForm').submit(); return false;">
|
||||
@ -127,7 +135,10 @@
|
||||
<form id="logoutForm" th:action="@{/logout}" method="post" class="d-none">
|
||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}">
|
||||
</form>
|
||||
<form id="exitImpersonationForm" th:action="@{/impersonate/exit}" method="post" class="d-none">
|
||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}">
|
||||
</form>
|
||||
</header>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user