/** @see UserDetailsService#loadUserByUsername(String) */
  @Override
  @Transactional(readOnly = true)
  public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {

    Professor professor = professorRepository.findByUsername(username);

    if (professor == null) {
      throw new UsernameNotFoundException("Nombre de usuario o contraseña no válidos");
    }

    return buildUserForAuthentication(
        professor, new SimpleGrantedAuthority(professor.getRole().toString()));
  }