Spring ACL i pokazywanie linku do strony na podstawie filtrowania listy

0

Witajcie,
Mam problem z implementacją uprawnień opartych na spring ACL w mojej aplikacji.
Mam 2 encje: User i UserLogin

@Entity
public class User {
	@Id @GeneratedValue @Column(name = "user_id")
	private Integer id;
	@Column
	private String name;
	@OneToMany(mappedBy = "user")
	private List<UserLogin> logins;
	// Getters and setters
}
@Entity
public class UserLogin {
	@Id @GeneratedValue
	private Integer id;
	@Column
	private Date date;
	@ManyToOne @JoinColumn(name = "user_id")
	private User user;
	// Getters and setters
}

W warstwie widoku, dla zalogowanego użytkownika, na jego własnym profilu chcę pokazywać podzieloną na strony listę jego logowań.
Metoda w interfejsie warstwy serwisowej, która pozwala pobrać mi potrzebną dla widoku listę logowań.

@PostFilter("hasPermission(filterObject, 'read')")
public List<UserLogin> getUserLogins(User user, Pageable pageable);

Użytkownik X ma dostęp do wszystkich logowań, które odbyły się na jego login.
Tutaj tez pojawia się mój problem, ponieważ w warstwie widoku potrzebuję wyświetlać lub nie link do strony z listą logowań w zależności czy użytkownik ma do nich uprawnienia (do listy logowań na jego login).
Jeżeli chcę otrzymać taki rezultat, muszę pobrać wszystkie logowania dla tego użytkownika (bez dzielenia ich na strony), następnie przefiltrować je za pomocą @PostFilter i w zależnosci od tego czy przefiltrowana lista jest pusta, lub nie

pokazać lub ukryć odpowiedni link.
Macie pomysł jak napisać to inaczej? Tak żeby nie pobierać wszystkich logowań i nie sprawdzać uprawnień do każdego logowania?
Myślałem żeby zdefiniować dodatkowe uprawnienie np. VIEW_LOGINS i dodawać je odpowiedniemu użytkownikowi, potem sprawdzać po prostu czy aktualnie zalogowany użytkownik ma to uprawnienie na użytkowniku, którego profil ogląda, lecz nie

jestem przekonany czy jest to dobry pomysł np. jeżeli chciałbym dodać możliwość usuwania poszczególnych logowań przez użytkownika. Wtedy musiałbym zdefiniować kolejną permisję REMOVE_LOGINS, czy jakoś kombinować z uprawnieniami na

obiekcie UserLogin?

Proszę was o pomoc, ponieważ nie jestem przekonany, które rozwiązanie jest lepsze i ilość źródeł w sieci na ten temat jest znikoma.

0

dodaj kolejne uprawnienia i sprawdzaj czy je ma. tak tak to jest że jak piszesz funkcjonalność to pojawia się wiele nowych rzeczy i apkka się rozrasta.

1 użytkowników online, w tym zalogowanych: 0, gości: 1