1616package com .stormpath .tutorial .controller ;
1717
1818import com .stormpath .sdk .account .Account ;
19- import com .stormpath .sdk .directory .CustomData ;
2019import com .stormpath .sdk .group .Group ;
21- import com .stormpath .sdk .group .GroupList ;
22- import com .stormpath .sdk .lang .Collections ;
2320import com .stormpath .sdk .servlet .account .AccountResolver ;
21+ import com .stormpath .spring .security .authz .permission .Permission ;
22+ import com .stormpath .spring .security .provider .AccountPermissionResolver ;
23+ import com .stormpath .spring .security .provider .GroupPermissionResolver ;
2424import com .stormpath .tutorial .service .HelloService ;
2525import org .springframework .beans .factory .annotation .Autowired ;
2626import org .springframework .stereotype .Controller ;
3333import java .util .HashMap ;
3434import java .util .List ;
3535import java .util .Map ;
36+ import java .util .Set ;
3637
3738/**
3839 * @since 1.0.RC5
4142public class HelloController {
4243
4344 private AccountResolver accountResolver ;
45+ private GroupPermissionResolver stormpathGroupPermissionResolver ;
46+ private AccountPermissionResolver stormpathAccountPermissionResolver ;
4447 private HelloService helloService ;
4548
4649 @ Autowired
47- public HelloController (AccountResolver accountResolver , HelloService helloService ) {
50+ public HelloController (
51+ AccountResolver accountResolver , GroupPermissionResolver stormpathGroupPermissionResolver ,
52+ AccountPermissionResolver stormpathAccountPermissionResolver , HelloService helloService
53+ ) {
4854 Assert .notNull (accountResolver );
55+ Assert .notNull (stormpathAccountPermissionResolver );
56+ Assert .notNull (stormpathGroupPermissionResolver );
4957 Assert .notNull (helloService );
5058 this .accountResolver = accountResolver ;
59+ this .stormpathAccountPermissionResolver = stormpathAccountPermissionResolver ;
60+ this .stormpathGroupPermissionResolver = stormpathGroupPermissionResolver ;
5161 this .helloService = helloService ;
5262 }
5363
@@ -60,18 +70,24 @@ String home(HttpServletRequest req, Model model) {
6070 @ RequestMapping ("/userdetails" )
6171 String userDetails (HttpServletRequest req , Model model ) {
6272 Account account = accountResolver .getAccount (req );
63- Map <String , List < String >> springSecurityPermissions = new HashMap <>();
73+ Map <String , Set < Permission >> springSecurityPermissions = new HashMap <>();
6474
65- // group perms
75+ // groups & group perms
76+ List <Group > groups = new ArrayList <>();
6677 for (Group group : account .getGroups ()) {
67- updateSpringSecurityPermissionsMap (
68- "group:" + group .getName (), springSecurityPermissions , group .getCustomData ()
78+ groups .add (group );
79+ springSecurityPermissions .put (
80+ "group:" + group .getName (),
81+ stormpathGroupPermissionResolver .resolvePermissions (group )
6982 );
7083 }
84+ model .addAttribute ("groups" , groups );
7185
7286 // account perms
73- updateSpringSecurityPermissionsMap ("account" , springSecurityPermissions , account .getCustomData ());
74-
87+ springSecurityPermissions .put (
88+ "account" ,
89+ stormpathAccountPermissionResolver .resolvePermissions (account )
90+ );
7591 model .addAttribute ("springSecurityPermissions" , springSecurityPermissions );
7692
7793 return "userdetails" ;
@@ -85,14 +101,4 @@ String restricted(HttpServletRequest req, Model model) {
85101 model .addAttribute ("msg" , msg );
86102 return "restricted" ;
87103 }
88-
89- @ SuppressWarnings ("unchecked" )
90- private void updateSpringSecurityPermissionsMap (
91- String key , Map <String , List <String >> springSecurityPermissions , CustomData customData
92- ) {
93- List <String > springSecurityPermissionsList = (List <String >) customData .get ("springSecurityPermissions" );
94- if (!Collections .isEmpty (springSecurityPermissionsList )) {
95- springSecurityPermissions .put (key , springSecurityPermissionsList );
96- }
97- }
98104}
0 commit comments