Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dificuldade em pegar o ID da Sessão Atual

Bem estou com dificuldades para conseguir pegar o id de usuário que esta na Sessão atual, preciso desse id para que eu posso apresentar informações pertinentes apenas a o usuário que estiver com a sessão aberta no momento, o metodo e o controller que preciso usar sao esses:

Controller

     @RequestMapping(value = REDIRECT_PAGE_CARREGAR, method = RequestMethod.GET)
    public ModelAndView showCarregar(Model model, HttpServletRequest request) {

          model.addAttribute("folhaBean", folhaBean);

        return new ModelAndView(REQUEST_MAPPING_PAGE_CARREGAR);
    }

    @RequestMapping(value = "/carregarDados", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<List<FolhaBean>> carregar() {


      long id = 0;               



        List<Folha> folhas = folhaService.findFetchAll(id);

        List<FolhaBean> folhasBean = FolhaBean.bindingProperties(folhas);
        return new ResponseEntity<List<FolhaBean>>(folhasBean, HttpStatus.OK);
    }

Metodo de login

     @Transactional
    public UserDetails loadUserByUsername(String login) throws UsernameNotFoundException, DataAccessException {

        if (StringUtils.isEmpty(login)) {

            throw new UsernameNotFoundException("Não foi possível localizar o Usuário");
        }

        Optional<Usuario> optional = usuarioService.findByLogin(login);

        if (!optional.isPresent()) {

            LOGGER.error("Não foi possível localizar o login: {}", login);

            throw new UsernameNotFoundException("Não foi possível localizar o Usuário.");
        }

        Usuario usuario = optional.get();

        List<GrantedAuthority> authorities = usuarioService.carregarPerfil(usuario.getPerfil());

        Principal principal = new Principal(usuario.getId(), usuario.getNome(), usuario.getSobrenome(), usuario.getLogin(), usuario.getEmail(),
                usuario.getPerfil().getNome(), usuario.getSenha(), usuario.getSituacao(), authorities);








        LocalDate data = LocalDate.now();
        LocalTime entrada = LocalTime.now();
        LocalTime saidaAlmoco = LocalTime.now();
        LocalTime voltaAlmoco = LocalTime.now();
        LocalTime saida = LocalTime.now();

        Folha folha = new Folha();
        List<Folha> findDateUser = folhaService.findByDateAndUser(data, usuario.getId());

        if (findDateUser.size() == 0 ) {

            folha.setData(data);
            folha.setUsuario(usuario);
            folha.setEntrada(entrada);
            folhaDAO.persistir(folha);

        } else if (findDateUser.iterator().next().getEntrada() != null 
                && findDateUser.iterator().next().getSaidaAlmoco() == null) {

            long version = 0;

            long novoIdFolha = 0;

            LocalTime novaEntrada = null;

            novoIdFolha = findDateUser.iterator().next().getIdFolha();
            folha.setIdFolha(novoIdFolha);
            version = findDateUser.iterator().next().getVersion();
            folha.setVersion(version);
            folha.setData(data);
            novaEntrada = findDateUser.iterator().next().getEntrada();
            folha.setEntrada(novaEntrada);
            folha.setUsuario(usuario);
            folha.setSaidaAlmoco(saidaAlmoco);
            folhaDAO.persistir(folha);

        } else if (findDateUser.iterator().next().getSaidaAlmoco() != null 
                && findDateUser.iterator().next().getVoltaAlmoco() == null) {

            long version = 0;

            long novoIdFolha = 0;

            LocalTime novaEntrada = null;

            LocalTime novaSaidaAlmoco = null;

            novoIdFolha = findDateUser.iterator().next().getIdFolha();
            folha.setIdFolha(novoIdFolha);
            version = findDateUser.iterator().next().getVersion();
            folha.setVersion(version);
            novaEntrada = findDateUser.iterator().next().getEntrada();
            folha.setEntrada(novaEntrada);
            novaSaidaAlmoco = findDateUser.iterator().next().getSaidaAlmoco();
            folha.setSaidaAlmoco(novaSaidaAlmoco);
            folha.setData(data);
            folha.setUsuario(usuario);
            folha.setVoltaAlmoco(voltaAlmoco);
            folhaDAO.persistir(folha);
        } else if( findDateUser.iterator().next().getVoltaAlmoco() != null
                && findDateUser.iterator().next().getSaida() == null){

            long version = 0;

            long novoIdFolha = 0;

            LocalTime novaEntrada = null;

            LocalTime novaSaidaAlmoco = null;

            LocalTime novaVoltaAlmoco = null;

            novoIdFolha = findDateUser.iterator().next().getIdFolha();
            folha.setIdFolha(novoIdFolha);
            version = findDateUser.iterator().next().getVersion();
            folha.setVersion(version);
            novaEntrada = findDateUser.iterator().next().getEntrada();
            folha.setEntrada(novaEntrada);
            novaSaidaAlmoco = findDateUser.iterator().next().getSaidaAlmoco();
            folha.setSaidaAlmoco(novaSaidaAlmoco);
            novaVoltaAlmoco = findDateUser.iterator().next().getVoltaAlmoco();
            folha.setVoltaAlmoco(novaVoltaAlmoco);
            folha.setData(data);
            folha.setUsuario(usuario);
            folha.setSaida(saida);

            folhaDAO.persistir(folha);


        }

        return principal;

    }

a Minha duvida esta em como pega o id que tenho no login e passa para o controller.

1 resposta
solução!

Fala Wesley, tudo bem ?

Então é possível pegar o usuário logado no controller dessa maneira:

Controller

@RequestMapping("/suaAction")
public String seuMetodo(@AuthenticationPrincipal Usuario usuario) {
    //por exemplo
    usuario.getId();
}

Abraço!