1251bda25f491370488c000cf6d1d87fae4ce606
[examples/facebook-app] / src / main / java / de / juplo / yourshouter / PermissionsController.java
1 package de.juplo.yourshouter;
2
3 import java.io.PrintWriter;
4 import java.util.List;
5 import java.util.Map;
6 import javax.inject.Inject;
7 import javax.servlet.http.HttpServletRequest;
8 import javax.servlet.http.HttpServletResponse;
9 import org.springframework.social.connect.ConnectionFactoryLocator;
10 import org.springframework.social.connect.ConnectionRepository;
11 import org.springframework.social.connect.web.ConnectController;
12
13 import org.springframework.social.facebook.api.Facebook;
14 import org.springframework.social.facebook.api.Permission;
15 import org.springframework.stereotype.Controller;
16 import org.springframework.ui.Model;
17 import org.springframework.web.bind.annotation.RequestMapping;
18 import org.springframework.web.bind.annotation.RequestMethod;
19 import org.springframework.web.context.request.NativeWebRequest;
20 import org.springframework.web.servlet.View;
21 import org.springframework.web.servlet.view.RedirectView;
22
23
24 /**
25  * Controller, that handles requests to the root of the application.
26  *
27  * @author Kai Moritz
28  */
29 @Controller
30 @RequestMapping("/permissions.html")
31 public class PermissionsController extends ConnectController
32 {
33   private final Facebook facebook;
34
35
36   @Inject
37   public PermissionsController(
38       ConnectionFactoryLocator connectionFactoryLocator,
39       ConnectionRepository connectionRepository,
40       Facebook facebook
41       )
42   {
43     super(connectionFactoryLocator, connectionRepository);
44     this.facebook = facebook;
45   }
46
47
48   @Override
49   public String connectionStatus(NativeWebRequest request, Model model)
50   {
51     List<Permission> permissions = facebook.userOperations().getUserPermissions();
52     model.addAttribute("permissions", permissions);
53     return "permissions";
54   }
55
56   @RequestMapping(method=RequestMethod.POST)
57   public View connect(NativeWebRequest request)
58   {
59     final RedirectView redirect = super.connect("facebook", request);
60     return new View()
61     {
62       @Override
63       public String getContentType()
64       {
65         return "text/html";
66       }
67
68       @Override
69       public void render(
70           Map<String, ?> model,
71           HttpServletRequest request,
72           HttpServletResponse response
73           )
74           throws
75             Exception
76       {
77         PrintWriter writer = response.getWriter();
78         writer.write("<script>");
79         writer.write("top.location.href='");
80         writer.write(redirect.getUrl());
81         writer.write("';");
82         writer.write("</script>");
83         response.flushBuffer();
84       }
85         };
86   }
87
88   @Override
89   protected RedirectView connectionStatusRedirect(
90       String providerId,
91       NativeWebRequest request
92       )
93   {
94     return new RedirectView("/permissions.html", true);
95   }
96 }