package de.juplo.yourshouter;
+import java.io.PrintWriter;
import java.util.List;
+import java.util.Map;
+import javax.annotation.PostConstruct;
import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.social.connect.ConnectionFactoryLocator;
+import org.springframework.social.connect.ConnectionRepository;
+import org.springframework.social.connect.web.ConnectController;
import org.springframework.social.facebook.api.Facebook;
import org.springframework.social.facebook.api.Permission;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.context.request.NativeWebRequest;
+import org.springframework.web.servlet.View;
+import org.springframework.web.servlet.view.RedirectView;
/**
* @author Kai Moritz
*/
@Controller
-public class PermissionsController
+@RequestMapping("/permissions.html")
+public class PermissionsController extends ConnectController
{
private final Facebook facebook;
@Inject
- public PermissionsController(Facebook facebook)
+ public PermissionsController(
+ ConnectionFactoryLocator connectionFactoryLocator,
+ ConnectionRepository connectionRepository,
+ Facebook facebook
+ )
{
+ super(connectionFactoryLocator, connectionRepository);
this.facebook = facebook;
}
- @RequestMapping(value = "/permissions.html", method = RequestMethod.GET)
- public String list(Model model)
+ @PostConstruct
+ public void init()
+ {
+ connectSu
+ }
+
+
+ @Override
+ public String connectionStatus(NativeWebRequest request, Model model)
{
List<Permission> permissions = facebook.userOperations().getUserPermissions();
model.addAttribute("permissions", permissions);
return "permissions";
}
+
+ @RequestMapping(method=RequestMethod.POST)
+ public View connect(NativeWebRequest request)
+ {
+ final RedirectView redirect = super.connect("facebook", request);
+ return new View()
+ {
+ @Override
+ public String getContentType()
+ {
+ return "text/html";
+ }
+
+ @Override
+ public void render(
+ Map<String, ?> model,
+ HttpServletRequest request,
+ HttpServletResponse response
+ )
+ throws
+ Exception
+ {
+ PrintWriter writer = response.getWriter();
+ writer.write("<script>");
+ writer.write("top.location.href='");
+ writer.write(redirect.getUrl());
+ writer.write("';");
+ writer.write("</script>");
+ response.flushBuffer();
+ }
+
+ @Override
+ public String toString()
+ {
+ return redirect.getUrl();
+ }
+ };
+ }
+
+ @Override
+ protected RedirectView connectionStatusRedirect(
+ String providerId,
+ NativeWebRequest request
+ )
+ {
+ return new RedirectView("https://apps.facebook.com/juplo-spielwiese/", true);
+ }
}