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;
/**
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 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);