WIP: Added a controller, to manage permissions
[examples/facebook-app] / src / main / java / de / juplo / yourshouter / PermissionsController.java
1 package de.juplo.yourshouter;
2
3 import java.util.List;
4 import javax.inject.Inject;
5 import org.springframework.social.connect.ConnectionFactoryLocator;
6 import org.springframework.social.connect.ConnectionRepository;
7 import org.springframework.social.connect.web.ConnectController;
8
9 import org.springframework.social.facebook.api.Facebook;
10 import org.springframework.social.facebook.api.Permission;
11 import org.springframework.stereotype.Controller;
12 import org.springframework.ui.Model;
13 import org.springframework.web.bind.annotation.RequestMapping;
14 import org.springframework.web.bind.annotation.RequestMethod;
15 import org.springframework.web.context.request.NativeWebRequest;
16 import org.springframework.web.servlet.view.RedirectView;
17
18
19 /**
20  * Controller, that handles requests to the root of the application.
21  *
22  * @author Kai Moritz
23  */
24 @Controller
25 @RequestMapping("/permissions.html")
26 public class PermissionsController extends ConnectController
27 {
28   private final Facebook facebook;
29
30
31   @Inject
32   public PermissionsController(
33       ConnectionFactoryLocator connectionFactoryLocator,
34       ConnectionRepository connectionRepository,
35       Facebook facebook
36       )
37   {
38     super(connectionFactoryLocator, connectionRepository);
39     this.facebook = facebook;
40   }
41
42
43   @Override
44   public String connectionStatus(NativeWebRequest request, Model model)
45   {
46     List<Permission> permissions = facebook.userOperations().getUserPermissions();
47     model.addAttribute("permissions", permissions);
48     return "permissions";
49   }
50
51   @RequestMapping(method=RequestMethod.POST)
52   public RedirectView connect(NativeWebRequest request)
53   {
54     return super.connect("facebook", request);
55   }
56
57   @Override
58   protected RedirectView connectionStatusRedirect(
59       String providerId,
60       NativeWebRequest request
61       )
62   {
63     return new RedirectView("/permissions.html", true);
64   }
65 }