Author: echatellier Date: 2014-06-11 18:00:34 +0200 (Wed, 11 Jun 2014) New Revision: 194 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/194 Log: R?\195?\169cup?\195?\169ration de l'utilsateur connect?\195?\169 via les variables d'env et le ldap Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapService.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java 2014-06-11 15:29:45 UTC (rev 193) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java 2014-06-11 16:00:34 UTC (rev 194) @@ -252,6 +252,10 @@ return applicationConfig.getOption(FaxToMailConfigurationOption.LDAP_PASSWORD.getKey()); } + public String getLdapTestPrincipal() { + return applicationConfig.getOption(FaxToMailConfigurationOption.LDAP_TEST_PRINCIPAL.getKey()); + } + public String getInstanceUrl() { return applicationConfig.getOption(FaxToMailConfigurationOption.INSTANCE_URL.getKey()); } Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java 2014-06-11 15:29:45 UTC (rev 193) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java 2014-06-11 16:00:34 UTC (rev 194) @@ -103,6 +103,10 @@ "faxtomail.ldap.password", "Mot de passe pour la connexion au serveur LDAP", null, String.class), + LDAP_TEST_PRINCIPAL( + "faxtomail.ldap.test.principal", + "Principal de test pour forcer un utilsateur particulier", null, String.class), + // TRANSIENT CONFIG VERSION( "faxtomail.version", Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapService.java 2014-06-11 15:29:45 UTC (rev 193) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapService.java 2014-06-11 16:00:34 UTC (rev 194) @@ -335,4 +335,46 @@ return result; } + + public FaxToMailUser getUserFromPrincipal(String principal) throws AuthenticationException { + + FaxToMailUser result = null; + + try { + // first connexion to get full user login + LDAPConnection adminConnect = new LDAPConnection(); + adminConnect.connect(getApplicationConfig().getLdapHost(), getApplicationConfig().getLdapPort()); + adminConnect.bind(getApplicationConfig().getLdapUser(), getApplicationConfig().getLdapPassword()); + + // search user in ldap + String login = null; + SearchResultEntry searchEntry = null; + if (adminConnect.isConnected()) { + String filter = String.format("(userPrincipalName=%s@%s)", principal, "mac-groupe.net"); + SearchResult searchResult = adminConnect.search("DC=mac-groupe,DC=net", SearchScope.SUB, filter); + if (!searchResult.getSearchEntries().isEmpty()) { + searchEntry = searchResult.getSearchEntries().get(0); + login = searchEntry.getAttributeValue("sn"); + } + adminConnect.close(); + } + + if (searchEntry != null) { + FaxToMailUser user = updateUserFormLdap(searchEntry, login); + + Binder<FaxToMailUser, FaxToMailUser> faxToMailUserBinder = BinderFactory.newBinder(FaxToMailUser.class); + result = new FaxToMailUserImpl(); + faxToMailUserBinder.copyExcluding(user, result); + } else { + throw new AuthenticationException("Utilisateur inconnu : " + principal); + } + + } catch (LDAPException ex) { + if (log.isWarnEnabled()) { + log.warn("Can't login to ldap", ex); + } + throw new AuthenticationException(ex.getResultCode().getName(), ex); + } + return result; + } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-06-11 15:29:45 UTC (rev 193) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-06-11 16:00:34 UTC (rev 194) @@ -22,7 +22,45 @@ * #L% */ +import static org.nuiton.i18n.I18n.t; + +import java.awt.Color; +import java.awt.Component; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.Closeable; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; + +import javax.swing.JFrame; +import javax.swing.JOptionPane; + +import jaxx.runtime.swing.editor.bean.BeanDoubleList; +import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox; +import jaxx.runtime.swing.session.BeanDoubleListState; +import jaxx.runtime.swing.session.BeanFilterableComboBoxState; +import jaxx.runtime.swing.session.State; +import jaxx.runtime.swing.session.SwingSession; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.jdesktop.beans.AbstractBean; +import org.nuiton.i18n.I18n; +import org.nuiton.i18n.init.ClassPathI18nInitializer; +import org.nuiton.jaxx.application.ApplicationConfiguration; +import org.nuiton.jaxx.application.swing.ApplicationUIContext; +import org.nuiton.jaxx.application.swing.action.ApplicationActionEngine; +import org.nuiton.jaxx.application.swing.action.ApplicationActionFactory; +import org.nuiton.jaxx.application.swing.action.ApplicationActionUI; +import org.nuiton.jaxx.application.swing.util.ApplicationErrorHelper; +import org.nuiton.util.converter.ConverterUtil; + import com.franciaflex.faxtomail.FaxToMailConfiguration; +import com.franciaflex.faxtomail.persistence.RessourceClassLoader; import com.franciaflex.faxtomail.persistence.entities.Configuration; import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaApplicationContext; import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaPersistenceContext; @@ -30,14 +68,15 @@ import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.services.DecoratorService; import com.franciaflex.faxtomail.services.FaxToMailServiceContext; -import com.franciaflex.faxtomail.persistence.RessourceClassLoader; import com.franciaflex.faxtomail.services.service.ConfigurationService; import com.franciaflex.faxtomail.services.service.EmailService; import com.franciaflex.faxtomail.services.service.InitFaxToMailService; +import com.franciaflex.faxtomail.services.service.LdapService; import com.franciaflex.faxtomail.services.service.MailFolderService; import com.franciaflex.faxtomail.services.service.ReferentielService; import com.franciaflex.faxtomail.services.service.UserService; import com.franciaflex.faxtomail.services.service.ValidationService; +import com.franciaflex.faxtomail.services.service.ldap.AuthenticationException; import com.franciaflex.faxtomail.ui.swing.content.MainUI; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.content.search.SearchUIModel; @@ -46,46 +85,6 @@ import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import jaxx.runtime.swing.editor.bean.BeanDoubleList; -import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox; -import jaxx.runtime.swing.session.BeanDoubleListState; -import jaxx.runtime.swing.session.BeanFilterableComboBoxState; -import jaxx.runtime.swing.session.State; -import jaxx.runtime.swing.session.SwingSession; - -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.jdesktop.beans.AbstractBean; -import org.nuiton.i18n.I18n; -import org.nuiton.i18n.init.ClassPathI18nInitializer; -import org.nuiton.i18n.init.DefaultI18nInitializer; -import org.nuiton.i18n.init.UserI18nInitializer; -import org.nuiton.jaxx.application.ApplicationConfiguration; -import org.nuiton.jaxx.application.ApplicationIOUtil; -import org.nuiton.jaxx.application.swing.ApplicationUIContext; -import org.nuiton.jaxx.application.swing.action.ApplicationActionEngine; -import org.nuiton.jaxx.application.swing.action.ApplicationActionFactory; -import org.nuiton.jaxx.application.swing.action.ApplicationActionUI; -import org.nuiton.jaxx.application.swing.util.ApplicationErrorHelper; -import org.nuiton.util.converter.ConverterUtil; - -import javax.swing.*; - -import java.awt.*; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.io.Closeable; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Locale; -import java.util.Map; -import java.util.Set; -import java.util.List; - -import static org.nuiton.i18n.I18n.t; - /** * UI application context. * @@ -150,13 +149,6 @@ protected final ApplicationErrorHelper errorHelper; /** - * Shared data context. - * - * @since 1.0.2 - */ -// protected TuttiDataContext dataContext; - - /** * Current screen displayed in ui. * * @since 0.1 @@ -197,20 +189,6 @@ private JFrame secondaryFrame; - /** - * Flag to know if there is an exsiting db. - * - * @since 1.0 - */ - private boolean dbExist; - - /** - * Flag to know if there is a loaded db. - * - * @since 1.0 - */ - private boolean dbLoaded; - private final ApplicationActionFactory faxToMailActionFactory; private final ApplicationActionEngine faxToMailActionEngine; @@ -370,52 +348,19 @@ I18n.init(new ClassPathI18nInitializer(), i18nLocale); -// //--------------------------------------------------------------------// -// // init help -// //--------------------------------------------------------------------// -// -// File helpDirectory = config.getHelpDirectory(); -// -// if (!config.isFullLaunchMode()) { -// -// if (!helpDirectory.exists()) { -// helpDirectory = new File(config.getDataDirectory(), "help"); -// } -// } -// -// if (log.isDebugEnabled()) { -// log.debug("Help directory: " + helpDirectory); -// } -// TuttiIOUtil.forceMkdir( -// helpDirectory, -// _("tutti.help.mkDir.error", helpDirectory)); -// -// // load help mapping -// String mappingProperties = -// "/tutti-help-" + i18nLocale.getLanguage() + ".properties"; -// try { -// -// InputStream resourceAsStream = -// getClass().getResourceAsStream(mappingProperties); -// helpMapping = new Properties(); -// helpMapping.load(resourceAsStream); -// -// } catch (Exception eee) { -// log.error("Failed to load help mapping file at '" + -// mappingProperties + "'", eee); -// } -// if (log.isInfoEnabled()) { -// log.info(String.format("Starts help with locale at [%s]", -// helpDirectory)); -// } -// + // try to get user from ldap + try { + String principal = getLoggedInUsername(); + FaxToMailUser currentUser = getLdapService().getUserFromPrincipal(principal); + if (log.isInfoEnabled()) { + log.info("Connected as " + currentUser.getFirstName() + " " + currentUser.getLastName()); + } + setCurrentUser(currentUser); + } catch (AuthenticationException ex) { + throw new RuntimeException(ex); + } + -// Company franciaflex = getCompanyService().getCompanyByName("Franciaflex"); -// setCurrentCompany(franciaflex); - - FaxToMailUser currentUser = getUserService().getUserByLogin("cbaillet"); - setCurrentUser(currentUser); - Configuration config = getConfigurationService().getConfiguration(); setFaxToMailConfiguration(config); @@ -425,6 +370,14 @@ setActionUI(new ApplicationActionUI(null, this)); } + protected String getLoggedInUsername() { + String result = getConfig().getLdapTestPrincipal(); + if (StringUtils.isBlank(result)) { + result = System.getProperty("user.name"); + } + return result; + } + public void open() { setLocale(config.getI18nLocale()); @@ -497,6 +450,10 @@ public UserService getUserService() { return serviceContext.newService(UserService.class); } + + public LdapService getLdapService() { + return serviceContext.newService(LdapService.class); + } public EmailService getEmailService() { return serviceContext.newService(EmailService.class); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java 2014-06-11 15:29:45 UTC (rev 193) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java 2014-06-11 16:00:34 UTC (rev 194) @@ -27,15 +27,6 @@ import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; import com.franciaflex.faxtomail.ui.swing.actions.StartAction; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailExceptionHandler; -import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; -import com.itextpdf.text.*; -import com.itextpdf.text.Image; -import com.itextpdf.text.Rectangle; -import com.itextpdf.text.pdf.ColumnText; -import com.itextpdf.text.pdf.PdfContentByte; -import com.itextpdf.text.pdf.PdfReader; -import com.itextpdf.text.pdf.PdfStamper; -import com.itextpdf.text.pdf.PdfWriter; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -43,10 +34,7 @@ import javax.swing.*; import javax.swing.plaf.BorderUIResource; import java.awt.*; -import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; -import java.net.URL; import java.util.Arrays; /** @@ -101,29 +89,6 @@ log.info("Full launch mode, try to update."); } - // check application url is reachable -// boolean canUpdateApplication = context.checkUpdateApplicationReachable(); - -// if (canUpdateApplication) { -// // try to update jre - i18n - application - help and exit if so -// UpdateApplicationAction logicAction = TuttiActionHelper.createLogicAction(new MainUIHandler(context), -// UpdateApplicationAction.class); -// TuttiActionHelper.runActionAndWait(logicAction); -// -// reload = logicAction.isReload(); -// } - - // check data url is reachable -// boolean canUpdateData = context.checkUpdateDataReachable(); - -// if (canUpdateData) { -// // try to update report and exit if so -// UpdateReportAction logicAction = TuttiActionHelper.createLogicAction(new MainUIHandler(context), -// UpdateReportAction.class); -// TuttiActionHelper.runActionAndWait(logicAction); -// -// reload |= logicAction.isReload(); -// } } if (!reload) {