Arreglando fallos cuando cambian nombre login , correos por parte alumno y administrador. Resuelto por cambio manual de correo primario y con renovacion de Authentication

master
vicsash 4 months ago
parent 0509a2240b
commit 3927234375

@ -11,8 +11,10 @@ import com.example.proyectofinal.servicios.user.UsuarioService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
@ -28,18 +30,11 @@ public class AdminController {
@Autowired @Autowired
private UsuarioService usuarioService; private UsuarioService usuarioService;
@Autowired @Autowired
private PasswordEncoder passwordEncoder; private PasswordEncoder passwordEncoder;
@Autowired @Autowired
private AlumnoService alumnoService; private AlumnoService alumnoService;
@Autowired
private CicloService cicloService;
@Autowired
private SkillService skillService;
@GetMapping("/admin/alta_admin_nuevo") @GetMapping("/admin/alta_admin_nuevo")
public String showCreateFormAdmin(Model model, Authentication authentication) { public String showCreateFormAdmin(Model model, Authentication authentication) {
Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities(); Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
@ -114,9 +109,13 @@ public class AdminController {
} else { } else {
// If the password field is not empty, encrypt the new password // If the password field is not empty, encrypt the new password
String password = usuario.getPassword(); String password = usuario.getPassword();
existingUser.setPassword(passwordEncoder.encode(password)); usuario.setPassword(passwordEncoder.encode(password));
} }
usuarioService.saveUser(usuario); usuarioService.saveUser(usuario);
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String updatedLoginName = usuario.getNombreLogIn();
Authentication newAuth = new UsernamePasswordAuthenticationToken(updatedLoginName, auth.getCredentials(), auth.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(newAuth);
return "redirect:/buscador?userUpdated=true"; return "redirect:/buscador?userUpdated=true";
} }

@ -11,7 +11,9 @@ import com.example.proyectofinal.servicios.user.UsuarioService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
@ -70,6 +72,9 @@ public class UserController {
if (usuario != null) { if (usuario != null) {
usuario.setEmail(alumno.getCorreo()); usuario.setEmail(alumno.getCorreo());
usuarioService.saveUser(usuario); usuarioService.saveUser(usuario);
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
Authentication newAuth = new UsernamePasswordAuthenticationToken(usuario.getNombreLogIn(), auth.getCredentials(), auth.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(newAuth);
} }
} }
alumnoService.save(alumno); alumnoService.save(alumno);
@ -97,7 +102,7 @@ public class UserController {
usuario.setPassword(existingUser.getPassword()); usuario.setPassword(existingUser.getPassword());
} else { } else {
String password = usuario.getPassword(); String password = usuario.getPassword();
existingUser.setPassword(passwordEncoder.encode(password)); usuario.setPassword(passwordEncoder.encode(password));
} }
usuario.setRol(usuarioService.getRolById(2)); usuario.setRol(usuarioService.getRolById(2));
Alumno alumno = alumnoService.findByEmail(existingUser.getEmail()); Alumno alumno = alumnoService.findByEmail(existingUser.getEmail());
@ -106,6 +111,10 @@ public class UserController {
alumnoService.save(alumno); alumnoService.save(alumno);
} }
usuarioService.saveUser(usuario); usuarioService.saveUser(usuario);
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String updatedLoginName = usuario.getNombreLogIn();
Authentication newAuth = new UsernamePasswordAuthenticationToken(updatedLoginName, auth.getCredentials(), auth.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(newAuth);
return "redirect:/buscador?userUpdated=true"; return "redirect:/buscador?userUpdated=true";
} }

@ -126,10 +126,8 @@ public class AlumnoController {
alumno.setSkills(skillEntities); alumno.setSkills(skillEntities);
assert keywords != null; assert keywords != null;
alumno.setKeywords(keywords); alumno.setKeywords(keywords);
// Fetch the existing Alumno from the database // Fetch the existing Alumno from the database
Alumno existingAlumno = alumnoService.findById(alumno.getId()); Alumno existingAlumno = alumnoService.findById(alumno.getId());
if (!existingAlumno.equals(alumno)) { if (!existingAlumno.equals(alumno)) {
Usuario usuario = usuarioService.findByEmail(existingAlumno.getCorreo()); Usuario usuario = usuarioService.findByEmail(existingAlumno.getCorreo());
if (usuario != null) { if (usuario != null) {

@ -1 +0,0 @@
currently for the login I'm using the default and not recomened way of creating user, and log in witht the default ligin provided by spring. Can I rework my login to a more complex level with the clases Autoridad, wich has the authorities

@ -130,7 +130,6 @@
$('#nombreUsuario').val(user.nombreUsuario); $('#nombreUsuario').val(user.nombreUsuario);
$('#nombreLogIn').val(user.nombreLogIn); $('#nombreLogIn').val(user.nombreLogIn);
$('#email').val(user.email); $('#email').val(user.email);
$('#password').val(user.password);
$('#rol').val(user.rol.id); $('#rol').val(user.rol.id);
}, },
error: function(jqXHR, textStatus, errorThrown) { error: function(jqXHR, textStatus, errorThrown) {
@ -139,14 +138,25 @@
}); });
}); });
$(document).ready(function() { $(document).ready(function() {
$('#password, #confirmPassword').on('input', function() { var $password = $('#password');
var password = $('#password').val(); var $confirmPassword = $('#confirmPassword');
var confirmPassword = $('#confirmPassword').val();
if (password && confirmPassword && password !== confirmPassword) { $password.on('input', function() {
$('#confirmPassword').prop('disabled', false); var password = $password.val();
if (password) {
$confirmPassword.prop('disabled', false);
} else { } else {
$('#confirmPassword').prop('disabled', true); $confirmPassword.prop('disabled', true);
}
});
$('form').on('submit', function(e) {
var password = $password.val();
var confirmPassword = $confirmPassword.val();
if (password !== confirmPassword) {
alert("Las contraseñas no coinciden!");
e.preventDefault(); // Prevent form from submitting
} }
}); });
}); });

@ -199,6 +199,7 @@
if (userUpdated === 'true') { if (userUpdated === 'true') {
alert('Usuario actualizado correctamente'); alert('Usuario actualizado correctamente');
userUpdated === 'false';
} }
}); });
@ -231,6 +232,7 @@
if (userDeleted === 'true') { if (userDeleted === 'true') {
alert('Usuario Borrado'); alert('Usuario Borrado');
userDeleted === 'false';
} }
}); });
// Get reference to the date picker // Get reference to the date picker

@ -207,6 +207,7 @@
if (userUpdated === 'true') { if (userUpdated === 'true') {
alert('Usuario actualizado correctamente'); alert('Usuario actualizado correctamente');
userUpdated === 'false';
} }
}); });
// Get reference to the date picker // Get reference to the date picker

@ -63,7 +63,7 @@
<td> <td>
<i class="edit-icon fas fa-pen-square hide-icon"></i> <i class="edit-icon fas fa-pen-square hide-icon"></i>
<i class="delete-icon fas fa-ban hide-icon"></i> <i class="delete-icon fas fa-ban hide-icon"></i>
<a th:href="@{/templates/admin/empresa/{id}(id=${empresa.id})}">[[${empresa.nombre}]]</a> [[${empresa.nombre}]]
</td> </td>
<td>[[${empresa.cif}]]</td> <td>[[${empresa.cif}]]</td>
<td>[[${empresa.correo}]]</td> <td>[[${empresa.correo}]]</td>

@ -85,7 +85,7 @@
</div> </div>
<div class="form-group row"> <div class="form-group row">
<label class="col-sm-3 col-form-label" for="confirmPassword">Confirm Password:</label> <label class="col-sm-3 col-form-label" for="confirmPassword">Confirma Password:</label>
<div class="col-sm-9"> <div class="col-sm-9">
<input type="password" id="confirmPassword" required class="form-control" value="" placeholder=" Confirmar contraseña" disabled> <input type="password" id="confirmPassword" required class="form-control" value="" placeholder=" Confirmar contraseña" disabled>
</div> </div>
@ -101,14 +101,25 @@
window.location.href = "/buscador"; window.location.href = "/buscador";
} }
$(document).ready(function() { $(document).ready(function() {
$('#password, #confirmPassword').on('input', function() { var $password = $('#password');
var password = $('#password').val(); var $confirmPassword = $('#confirmPassword');
var confirmPassword = $('#confirmPassword').val();
if (password && confirmPassword && password !== confirmPassword) { $password.on('input', function() {
$('#confirmPassword').prop('disabled', false); var password = $password.val();
if (password) {
$confirmPassword.prop('disabled', false);
} else { } else {
$('#confirmPassword').prop('disabled', true); $confirmPassword.prop('disabled', true);
}
});
$('form').on('submit', function(e) {
var password = $password.val();
var confirmPassword = $confirmPassword.val();
if (password !== confirmPassword) {
alert("Las contraseñas no coinciden!");
e.preventDefault(); // Prevent form from submitting
} }
}); });
}); });

Loading…
Cancel
Save

Powered by INFORMATICA.FP.EDU.ES.