001    package org.tynamo.security.federatedaccounts.base;
002    
003    import org.apache.tapestry5.ioc.annotations.Inject;
004    import org.apache.tapestry5.ioc.annotations.Symbol;
005    import org.apache.tapestry5.services.PageRenderLinkSource;
006    import org.tynamo.security.federatedaccounts.FederatedAccountSymbols;
007    import org.tynamo.security.federatedaccounts.facebook.FacebookRealm;
008    import org.tynamo.security.federatedaccounts.pages.CommitFacebookOauth;
009    import org.tynamo.security.federatedaccounts.pages.FacebookOauth;
010    import org.tynamo.security.federatedaccounts.util.WindowMode;
011    
012    public class FacebookOauthComponentBase {
013            @Inject
014            @Symbol(FederatedAccountSymbols.COMMITAFTER_OAUTH)
015            private boolean autocommit;
016    
017            public boolean getAutocommit() {
018                    return autocommit;
019            }
020    
021            @Inject
022            @Symbol(FacebookRealm.FACEBOOK_CLIENTID)
023            private String oauthClientId;
024    
025            public String getOauthClientId() {
026                    return oauthClientId;
027            }
028    
029            @Inject
030            @Symbol(FacebookRealm.FACEBOOK_CLIENTSECRET)
031            private String oauthClientSecret;
032    
033            protected String getOauthClientSecret() {
034                    return oauthClientSecret;
035            }
036    
037            public boolean isOauthConfigured() {
038                    return !"".equals(oauthClientId) && !"".equals(oauthClientSecret);
039            }
040    
041            @Inject
042            private PageRenderLinkSource linkSource;
043    
044            // Final since signin and oauth *must* share the same implementation (or at least use the same link)
045            protected final String getOauthRedirectLink(WindowMode windowMode) {
046                    return linkSource.createPageRenderLinkWithContext(autocommit ? CommitFacebookOauth.class : FacebookOauth.class, windowMode)
047                                    .toAbsoluteURI();
048            }
049    }