Skip to content
This repository was archived by the owner on Dec 12, 2018. It is now read-only.

Commit d47451c

Browse files
committed
Updated tutorial to use permissions resolvers for groups and accounts per @mrioan
1 parent 2e42742 commit d47451c

File tree

2 files changed

+50
-40
lines changed
  • tutorials
    • spring-boot/04-a-finer-grain-of-control/src/main/java/com/stormpath/tutorial/controller
    • spring/04-a-finer-grain-of-control/src/main/java/com/stormpath/tutorial/controller

2 files changed

+50
-40
lines changed

tutorials/spring-boot/04-a-finer-grain-of-control/src/main/java/com/stormpath/tutorial/controller/HelloController.java

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
package com.stormpath.tutorial.controller;
1717

1818
import com.stormpath.sdk.account.Account;
19-
import com.stormpath.sdk.directory.CustomData;
2019
import com.stormpath.sdk.group.Group;
21-
import com.stormpath.sdk.group.GroupList;
22-
import com.stormpath.sdk.lang.Collections;
2320
import 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;
2424
import com.stormpath.tutorial.service.HelloService;
2525
import org.springframework.beans.factory.annotation.Autowired;
2626
import org.springframework.stereotype.Controller;
@@ -33,6 +33,7 @@
3333
import java.util.HashMap;
3434
import java.util.List;
3535
import java.util.Map;
36+
import java.util.Set;
3637

3738
/**
3839
* @since 1.0.RC5
@@ -41,13 +42,22 @@
4142
public 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
}

tutorials/spring/04-a-finer-grain-of-control/src/main/java/com/stormpath/tutorial/controller/HelloController.java

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@
1616
package com.stormpath.tutorial.controller;
1717

1818
import com.stormpath.sdk.account.Account;
19-
import com.stormpath.sdk.directory.CustomData;
2019
import com.stormpath.sdk.group.Group;
21-
import com.stormpath.sdk.lang.Collections;
2220
import 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;
2324
import com.stormpath.tutorial.service.HelloService;
2425
import org.springframework.beans.factory.annotation.Autowired;
2526
import org.springframework.stereotype.Controller;
@@ -32,6 +33,7 @@
3233
import java.util.HashMap;
3334
import java.util.List;
3435
import java.util.Map;
36+
import java.util.Set;
3537

3638
/**
3739
* @since 1.3.0
@@ -40,13 +42,22 @@
4042
public class HelloController {
4143

4244
private AccountResolver accountResolver;
45+
private GroupPermissionResolver stormpathGroupPermissionResolver;
46+
private AccountPermissionResolver stormpathAccountPermissionResolver;
4347
private HelloService helloService;
4448

4549
@Autowired
46-
public HelloController(AccountResolver accountResolver, HelloService helloService) {
50+
public HelloController(
51+
AccountResolver accountResolver, GroupPermissionResolver stormpathGroupPermissionResolver,
52+
AccountPermissionResolver stormpathAccountPermissionResolver, HelloService helloService
53+
) {
4754
Assert.notNull(accountResolver);
55+
Assert.notNull(stormpathAccountPermissionResolver);
56+
Assert.notNull(stormpathGroupPermissionResolver);
4857
Assert.notNull(helloService);
4958
this.accountResolver = accountResolver;
59+
this.stormpathAccountPermissionResolver = stormpathAccountPermissionResolver;
60+
this.stormpathGroupPermissionResolver = stormpathGroupPermissionResolver;
5061
this.helloService = helloService;
5162
}
5263

@@ -59,21 +70,24 @@ String home(HttpServletRequest req, Model model) {
5970
@RequestMapping("/userdetails")
6071
String userDetails(HttpServletRequest req, Model model) {
6172
Account account = accountResolver.getAccount(req);
62-
Map<String, List<String>> springSecurityPermissions = new HashMap<>();
73+
Map<String, Set<Permission>> springSecurityPermissions = new HashMap<>();
6374

64-
// groups
75+
// groups & group perms
6576
List<Group> groups = new ArrayList<>();
6677
for (Group group : account.getGroups()) {
6778
groups.add(group);
68-
updateSpringSecurityPermissionsMap(
69-
"group:" + group.getName(), springSecurityPermissions, group.getCustomData()
79+
springSecurityPermissions.put(
80+
"group:" + group.getName(),
81+
stormpathGroupPermissionResolver.resolvePermissions(group)
7082
);
7183
}
7284
model.addAttribute("groups", groups);
7385

74-
// perms
75-
updateSpringSecurityPermissionsMap("account", springSecurityPermissions, account.getCustomData());
76-
86+
// account perms
87+
springSecurityPermissions.put(
88+
"account",
89+
stormpathAccountPermissionResolver.resolvePermissions(account)
90+
);
7791
model.addAttribute("springSecurityPermissions", springSecurityPermissions);
7892

7993
return "userdetails";
@@ -87,14 +101,4 @@ String restricted(HttpServletRequest req, Model model) {
87101
model.addAttribute("msg", msg);
88102
return "restricted";
89103
}
90-
91-
@SuppressWarnings("unchecked")
92-
private void updateSpringSecurityPermissionsMap(
93-
String key, Map<String, List<String>> springSecurityPermissions, CustomData customData
94-
) {
95-
List<String> springSecurityPermissionsList = (List<String>) customData.get("springSecurityPermissions");
96-
if (!Collections.isEmpty(springSecurityPermissionsList)) {
97-
springSecurityPermissions.put(key, springSecurityPermissionsList);
98-
}
99-
}
100104
}

0 commit comments

Comments
 (0)