package fi.otavanopisto.muikku.plugins.internalauth; import java.util.Arrays; import java.util.Map; import javax.inject.Inject; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; import fi.otavanopisto.muikku.auth.AbstractAuthenticationStrategy; import fi.otavanopisto.muikku.auth.AuthenticationProvider; import fi.otavanopisto.muikku.auth.AuthenticationResult; import fi.otavanopisto.muikku.auth.AuthenticationResult.Status; import fi.otavanopisto.muikku.model.security.AuthSource; import fi.otavanopisto.muikku.model.users.UserEntity; import fi.otavanopisto.muikku.plugins.internalauth.model.InternalAuth; import fi.otavanopisto.muikku.users.UserEntityController; public class InternalAuthenticationStrategy extends AbstractAuthenticationStrategy implements AuthenticationProvider { @Inject private UserEntityController userEntityController; @Inject private InternalAuthController internalLoginController; @Override public String getName() { return "internalauth"; } @Override public boolean requiresCredentials() { return true; } @Override public AuthenticationResult processLogin(AuthSource authSource, Map<String, String[]> requestParameters) { String email = StringUtils.lowerCase(getFirstRequestParameter(requestParameters, "email")); String password = getFirstRequestParameter(requestParameters, "password"); InternalAuth internalAuth = internalLoginController.findInternalAuthByEmailAndPassword(email, password); if (internalAuth != null) { UserEntity userEntity = userEntityController.findUserEntityById(internalAuth.getUserEntityId()); if (userEntity != null) { return processLogin(authSource, requestParameters, DigestUtils.md5Hex("INTERNAL-" + internalAuth.getId()), Arrays.asList(email), null, null); } } return new AuthenticationResult(Status.INVALID_CREDENTIALS); } @Override public String getDescription() { return "Muikku account"; } }