import javax.servlet.http.HttpServletRequest;
+import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import fr.gouv.finances.dgfip.xemelios.auth.XemeliosUser;
import fr.gouv.finances.dgfip.xemelios.auth.impl.std.db.DataHelper;
+import fr.gouv.finances.dgfip.xemelios.data.DataImpl;
+import fr.gouv.finances.dgfip.xemelios.data.DataLayerManager;
import fr.gouv.finances.dgfip.xemelios.data.impl.pool.PoolManager;
/**
*/
public class NtlmAuthEngineImpl extends fr.gouv.finances.dgfip.xemelios.auth.impl.std.db.StdDbAuthEngineImpl {
- private static final Logger logger = Logger.getLogger(NtlmAuthEngineImpl.class);
-
- public NtlmAuthEngineImpl() throws SQLException {
- super(false);
- }
-
- @Override
- public boolean isLoginRequired() {
- return false;
- }
-
- @Override
- public boolean isPasswordRequired() {
- return false;
- }
-
- @Override
- public XemeliosUser createUser(String unusedlogin, String unusedpassword) {
- ThreadLocal tl = fr.gouv.finances.dgfip.xemelios.web2.connexion.ConnexionAction.getThreadLocalRequestHolder();
- HttpServletRequest request;
- String userLogin;
- Connection connection = null;
- try {
- connection = PoolManager.getInstance().getConnection();
- request = (HttpServletRequest) (tl.get());
- userLogin = request.getRemoteUser();
- logger.info("userLogin=" + userLogin);
- if (userLogin != null) {
- // Pour rire
-// if( request.isUserInRole("AXYUS\\commercial") ) {
-// logger.info("connect as adamin");
-// return doCreateUser(connection, "admin");
-// } else {
-// logger.info("connect as " + userLogin);
- XemeliosUser dejala = doCreateUser(connection, userLogin);
- if (dejala != null) {
- return dejala;
- } else {
- DataHelper.StdUser stdUser = new DataHelper.StdUser(userLogin, userLogin, userLogin, false, false, false, -1);
- DataHelper.saveUser(stdUser, "*");
- return doCreateUser(connection, userLogin);
- }
-
- // }
- } else {
- return null;
- }
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- } finally {
- PoolManager.getInstance().releaseConnection(connection);
- }
-
- }
-
- @Override
- protected void insertAdminMenu() {
- boolean doNotStop = false;
- Class clazz = null;
- Object instance = null;
- try {
- clazz = Class.forName("fr.gouv.finances.cp.xemelios.ui.MainWindow");
- Method meth = clazz.getMethod("getInstance");
- instance = meth.invoke(null);
- doNotStop = (instance != null);
- } catch (Throwable t) {
- }
-
- }
+ private static final Logger logger = Logger.getLogger(NtlmAuthEngineImpl.class);
+
+ private static final String PRM_ALLOW_AUT_CREATE = "NtlmAuthEngineImpl.AutoCreateUser";
+
+ public NtlmAuthEngineImpl() throws SQLException {
+ super(false);
+ }
+
+ @Override
+ public boolean isLoginRequired() {
+ return false;
+ }
+
+ @Override
+ public boolean isPasswordRequired() {
+ return false;
+ }
+
+ @Override
+ public XemeliosUser createUser(String unusedlogin, String unusedpassword) {
+ XemeliosUser user = null;
+
+ Connection connection = PoolManager.getInstance().getConnection();
+ try {
+ ThreadLocal tl = fr.gouv.finances.dgfip.xemelios.web2.connexion.ConnexionAction.getThreadLocalRequestHolder();
+ HttpServletRequest request;
+
+ request = (HttpServletRequest) (tl.get());
+ String userLogin = request.getRemoteUser();
+ logger.info("userLogin=" + userLogin);
+
+ if (userLogin != null) {
+ user = doCreateUser(connection, userLogin);
+
+ if (user == null) {
+ // l'utilisateur n'éxiste pas
+ DataImpl dataLayer = DataLayerManager.getImplementation();
+ String autoCreateValue = dataLayer.getParameterValue(PRM_ALLOW_AUT_CREATE);
+ boolean autoCreate = (StringUtils.isEmpty(autoCreateValue) ? false : Boolean.parseBoolean(autoCreateValue));
+
+ // création auto d'un nouvel utilisateur ?
+ if (autoCreate) {
+ DataHelper.StdUser stdUser = new DataHelper.StdUser(userLogin, userLogin, userLogin, false, false, false, -1);
+ DataHelper.saveUser(stdUser, "*");
+
+ user = doCreateUser(connection, userLogin);
+ }
+ }
+ }
+ } catch (Exception e) {
+ logger.error(e, e);
+ } finally {
+ PoolManager.getInstance().releaseConnection(connection);
+ }
+
+ return user;
+ }
+
+ @Override
+ protected void insertAdminMenu() {
+ boolean doNotStop = false;
+ Class clazz = null;
+ Object instance = null;
+ try {
+ clazz = Class.forName("fr.gouv.finances.cp.xemelios.ui.MainWindow");
+ Method meth = clazz.getMethod("getInstance");
+ instance = meth.invoke(null);
+ doNotStop = (instance != null);
+ } catch (Throwable t) {
+ }
+
+ }
}