package io.lumify.web.auth.oauth; import io.lumify.miniweb.Handler; import io.lumify.miniweb.handlers.StaticResourceHandler; import com.google.inject.Inject; import io.lumify.core.config.Configuration; import io.lumify.core.model.user.UserRepository; import io.lumify.web.WebApp; import io.lumify.web.WebAppPlugin; import io.lumify.web.auth.oauth.routes.Google; import io.lumify.web.auth.oauth.routes.Twitter; import javax.servlet.ServletContext; public class OAuthWebAppPlugin implements WebAppPlugin { private OAuthConfiguration twitterConfig; private OAuthConfiguration googleConfig; private UserRepository userRepository; @Inject public void configure(Configuration config, UserRepository userRepository) { this.userRepository = userRepository; this.twitterConfig = new OAuthConfiguration(); config.setConfigurables(this.twitterConfig, "oauth.twitter"); this.googleConfig = new OAuthConfiguration(); config.setConfigurables(this.googleConfig, "oauth.google"); } @Override public void init(WebApp app, ServletContext servletContext, Handler authenticationHandler) { StaticResourceHandler jsHandler = new StaticResourceHandler(this.getClass(), "/oauth/authentication.js", "application/javascript"); StaticResourceHandler lessHandler = new StaticResourceHandler(this.getClass(), "/oauth/less/oauth.less", "text/plain"); StaticResourceHandler loginTemplateHandler = new StaticResourceHandler(this.getClass(), "/oauth/templates/login.hbs", "text/plain"); app.get("/jsc/configuration/plugins/authentication/authentication.js", jsHandler); app.get("/jsc/configuration/plugins/authentication/templates/login.hbs", loginTemplateHandler); app.get("/jsc/configuration/plugins/authentication/less/oauth.less", lessHandler); app.get("/jsc/configuration/plugins/authentication/img/twitter.png", new StaticResourceHandler(this.getClass(), "/oauth/img/twitter.png", "image/png")); app.get("/jsc/configuration/plugins/authentication/img/google.png", new StaticResourceHandler(this.getClass(), "/oauth/img/google.png", "image/png")); app.get("/oauth/twitter", new Twitter(this.twitterConfig, this.userRepository)); app.get("/oauth/google", new Google(this.googleConfig, this.userRepository)); } }