package io.lumify.web.auth.usernamepassword;
import com.google.inject.Inject;
import io.lumify.core.config.Configuration;
import io.lumify.miniweb.Handler;
import io.lumify.miniweb.handlers.StaticResourceHandler;
import io.lumify.core.bootstrap.InjectHelper;
import io.lumify.web.AuthenticationHandler;
import io.lumify.web.LumifyCsrfHandler;
import io.lumify.web.WebApp;
import io.lumify.web.WebAppPlugin;
import io.lumify.web.auth.usernamepassword.routes.Login;
import io.lumify.web.auth.usernamepassword.routes.ChangePassword;
import io.lumify.web.auth.usernamepassword.routes.LookupToken;
import io.lumify.web.auth.usernamepassword.routes.RequestToken;
import javax.servlet.ServletContext;
public class UsernamePasswordWebAppPlugin implements WebAppPlugin {
public static final String LOOKUP_TOKEN_ROUTE = "/forgotPassword";
public static final String CHANGE_PASSWORD_ROUTE = "/forgotPassword/changePassword";
private Configuration configuration;
@Override
public void init(WebApp app, ServletContext servletContext, Handler authenticationHandler) {
StaticResourceHandler jsHandler = new StaticResourceHandler(this.getClass(), "/username-password/authentication.js", "application/javascript");
StaticResourceHandler loginTemplateHandler = new StaticResourceHandler(this.getClass(), "/username-password/templates/login.hbs", "text/plain");
StaticResourceHandler lessHandler = new StaticResourceHandler(this.getClass(), "/username-password/less/login.less", "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/login.less", lessHandler);
app.post(AuthenticationHandler.LOGIN_PATH, InjectHelper.getInstance(Login.class));
ForgotPasswordConfiguration forgotPasswordConfiguration = new ForgotPasswordConfiguration();
configuration.setConfigurables(forgotPasswordConfiguration, ForgotPasswordConfiguration.CONFIGURATION_PREFIX);
configuration.set("web.ui." + ForgotPasswordConfiguration.CONFIGURATION_PREFIX + ".enabled", forgotPasswordConfiguration.isEnabled());
if (forgotPasswordConfiguration.isEnabled()) {
app.post("/forgotPassword/requestToken", RequestToken.class);
app.get(LOOKUP_TOKEN_ROUTE, LookupToken.class);
app.post(CHANGE_PASSWORD_ROUTE, ChangePassword.class);
}
}
@Inject
public void setConfiguration(Configuration configuration) {
this.configuration = configuration;
}
}