Здравствуйте делаю веб приложение

262
28 апреля 2018, 19:21

Делаю веб приложение на Java c использованием:

Spring MVC Spring Security Hibernate

Распределение прав доступа к ресурсам/страничкам происходит через Spring Security. Есть два роль: ADMIN USER Проблема -Когда USER сделал логин ему покажет всех USER-ов в том числе и его Вопрос- как сделать чтоб когда USER сделал логин ему показал всех USER-ов кроме его?

SECURITY Current User

public class CurrentUser extends User {
private am.teletalk.teletalk.model.User user;
public CurrentUser(  am.teletalk.teletalk.model.User user) {
    super(user.getEmail(), user.getPassword(), AuthorityUtils.createAuthorityList(user.getUserType().name()));
    this.user = user;
}
public  am.teletalk.teletalk.model.User getUser() {
    return user;
}
public int getId() {
    return user.getId();
}

}

SECURITY CurrentUserDetailService

public class CurrentUserDetailService implements UserDetailsService {
@Autowired
private UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
    User user = userRepository.findOneByEmail(s);
    if (user == null) {
        throw new UsernameNotFoundException("User not exist");
    }
    return new CurrentUser(user);
}

}

Controller

 @RequestMapping(value = "/", method = RequestMethod.GET)
public String mainPage(ModelMap map) {
    map.addAttribute("allUsers", userRepository.findAll());
    map.addAttribute("manager", new User());
    return "index";
}
Answer 1

Функция чтобы получить объект пользователя по текущей сессии

public User getCurrentUser() {
    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
    if (authentication instanceof AnonymousAuthenticationToken)
        return null;
    return (User) authentication.getPrincipal();
}

В самом простом варианте можно фильтрануть список

User currentUser = getCurrentUser();
List<User> users =  userRepository.findAll().stream().filter(u->u.getId()!=currentUser.getId()).collect(Collectors.toList());

Ну а дальнейшие улучшения, это ваша фантазия, лучше конечно создать в репозитории метод, который будет доставать всех пользователей, у которых не совпадает Id, но это уже вам решать.

READ ALSO
Перекидывать ссылки с одного потока в другой JAVA

Перекидывать ссылки с одного потока в другой JAVA

У меня есть картинки которые нужно загрузить я хочу сделать так что есть один поток который загружает картинки и есть второй который передает...

273
@GeneratorValue выдаёт уже занятые id

@GeneratorValue выдаёт уже занятые id

Таблица: "ID" INTEGER DEFAULT nextval('zakazchik_id_seq'::regclass) NOT NULL, Сущность:

177
Error executing Maven: Non-parseable settings

Error executing Maven: Non-parseable settings

При запуске любой процедуры Maven в IntelliJ IDEA (clean или build) Maven ругается на мой файл settingxml:

342
Как добавить в maven локальную зависимость?

Как добавить в maven локальную зависимость?

Главный pomxml-родитель justvillage:

212