001 package org.tynamo.security.federatedaccounts.components;
002
003 import org.apache.tapestry5.annotations.Import;
004 import org.apache.tapestry5.annotations.Parameter;
005 import org.apache.tapestry5.annotations.Property;
006 import org.apache.tapestry5.ioc.annotations.Inject;
007 import org.apache.tapestry5.ioc.annotations.Symbol;
008 import org.tynamo.security.federatedaccounts.base.FacebookOauthComponentBase;
009 import org.tynamo.security.federatedaccounts.facebook.FacebookRealm;
010 import org.tynamo.security.federatedaccounts.util.WindowMode;
011
012 @Import(library = "FacebookSignIn.js", stylesheet = "fb-button.css")
013 public class FacebookSignIn extends FacebookOauthComponentBase {
014 @Inject
015 @Symbol(FacebookRealm.FACEBOOK_PERMISSIONS)
016 @Property
017 private String facebookPermissions;
018
019 @Parameter(value = "blank", required = false, defaultPrefix = "literal")
020 private WindowMode windowMode;
021
022 public boolean isWindowMode(String mode) {
023 if (mode == null) throw new IllegalArgumentException("Window mode argument cannot be null");
024 return windowMode.equals(WindowMode.valueOf(mode));
025 }
026
027 public String getOauthAuthorizationLink() {
028 StringBuilder sb = new StringBuilder();
029 sb.append("https://graph.facebook.com/oauth/authorize?client_id=");
030 sb.append(getOauthClientId());
031 sb.append("&redirect_uri=");
032 sb.append(getOauthRedirectLink(windowMode));
033 sb.append("&scope=");
034 sb.append(facebookPermissions);
035
036 return sb.toString();
037 }
038 }