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    }