Revision 62020
Added by Konstantinos Spyrou about 2 years ago
AuthoritiesUpdater.java | ||
---|---|---|
10 | 10 |
import org.springframework.security.oauth2.common.exceptions.UnauthorizedClientException; |
11 | 11 |
import org.springframework.security.web.context.HttpSessionSecurityContextRepository; |
12 | 12 |
import org.springframework.session.Session; |
13 |
//import org.springframework.session.ExpiringSession; |
|
14 | 13 |
import org.springframework.session.FindByIndexNameSessionRepository; |
15 | 14 |
import org.springframework.stereotype.Service; |
16 | 15 |
|
... | ... | |
27 | 26 |
@Autowired |
28 | 27 |
FindByIndexNameSessionRepository sessions; |
29 | 28 |
|
30 |
public void update(String email, Collection<? extends GrantedAuthority> authorities) {
|
|
29 |
public void update(String id, Update update) {
|
|
31 | 30 |
if (sessions != null) { |
32 | 31 |
Map<String, Session> map = sessions. |
33 |
findByIndexNameAndIndexValue(FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME, email);
|
|
32 |
findByIndexNameAndIndexValue(FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME, id);
|
|
34 | 33 |
if (map != null) { |
35 | 34 |
logger.debug(map.values().toArray().length); |
36 | 35 |
for (Session session : map.values()) { |
... | ... | |
40 | 39 |
Authentication authentication = securityContext.getAuthentication(); |
41 | 40 |
if (authentication instanceof OIDCAuthenticationToken) { |
42 | 41 |
OIDCAuthenticationToken authOIDC = (OIDCAuthenticationToken) authentication; |
43 |
logger.debug(authorities);
|
|
42 |
logger.debug(update.authorities(authOIDC.getAuthorities()));
|
|
44 | 43 |
securityContext.setAuthentication(new OIDCAuthenticationToken(authOIDC.getSub(), authOIDC.getIssuer(), |
45 |
authOIDC.getUserInfo(), authorities, authOIDC.getIdToken(),
|
|
44 |
authOIDC.getUserInfo(), update.authorities(authOIDC.getAuthorities()), authOIDC.getIdToken(),
|
|
46 | 45 |
authOIDC.getAccessTokenValue(), authOIDC.getRefreshTokenValue())); |
47 | 46 |
logger.debug("Update authorities"); |
48 | 47 |
session.setAttribute(SPRING_SECURITY_CONTEXT_KEY, securityContext); |
... | ... | |
54 | 53 |
} |
55 | 54 |
} |
56 | 55 |
|
57 |
public void update(String email, Update update) { |
|
58 |
Collection<? extends GrantedAuthority> authorities = update.authorities(SecurityContextHolder.getContext().getAuthentication().getAuthorities()); |
|
59 |
this.update(email, authorities); |
|
60 |
} |
|
61 |
|
|
62 |
public void addRole(String email, GrantedAuthority role) { |
|
63 |
this.update(email, old -> { |
|
56 |
public void addRole(String id, GrantedAuthority role) { |
|
57 |
this.update(id, old -> { |
|
64 | 58 |
HashSet<GrantedAuthority> authorities = new HashSet<>(old); |
65 | 59 |
authorities.add(role); |
66 | 60 |
return authorities; |
... | ... | |
77 | 71 |
} |
78 | 72 |
} |
79 | 73 |
|
80 |
public void removeRole(String email, GrantedAuthority role) {
|
|
81 |
this.update(email, old -> {
|
|
74 |
public void removeRole(String id, GrantedAuthority role) {
|
|
75 |
this.update(id, old -> {
|
|
82 | 76 |
HashSet<GrantedAuthority> authorities = new HashSet<>(old); |
83 | 77 |
authorities.remove(role); |
84 | 78 |
return authorities; |
Also available in: Unified diff
repository terms functionality