Changeset 2015 in josm


Ignore:
Timestamp:
Aug 30, 2009 6:57:05 PM (4 years ago)
Author:
stoecker
Message:

fixed #3112 - patch by bastiK - cleanup password hook

Location:
trunk/src/org/openstreetmap/josm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/preferences/ServerAccessPreference.java

    r1955 r2015  
    44import static org.openstreetmap.josm.tools.I18n.tr; 
    55 
    6 import java.awt.Font; 
    7  
    8 import javax.swing.JLabel; 
    9 import javax.swing.JPasswordField; 
    10 import javax.swing.JTextField; 
    11  
    12 import org.openstreetmap.josm.Main; 
    13 import org.openstreetmap.josm.tools.GBC; 
    146import org.openstreetmap.josm.io.OsmConnection; 
    15 import org.openstreetmap.josm.io.CredentialsManager.PreferenceAdditions; 
     7import org.openstreetmap.josm.io.CredentialsManager; 
    168 
    179public class ServerAccessPreference implements PreferenceSetting { 
     
    2416 
    2517    /** 
    26      * Editfield for the Base url to the REST API from OSM. 
    27      */ 
    28     private JTextField osmDataServer = new JTextField(20); 
    29     /** 
    3018     * Provide username and password input editfields. 
    3119     * Store the values if user hits OK. 
    3220     */ 
    33     private PreferenceAdditions credentialsPA = OsmConnection.credentialsManager.newPreferenceAdditions(); 
     21    private CredentialsManager.PreferenceAdditions credentialsPA = OsmConnection.credentialsManager.newPreferenceAdditions(); 
    3422 
    3523    public void addGui(PreferenceDialog gui) { 
    36         osmDataServer.setText(Main.pref.get("osm-server.url", "http://api.openstreetmap.org/api")); 
    37         osmDataServer.setToolTipText(tr("The base URL for the OSM server (REST API)")); 
    38         gui.connection.add(new JLabel(tr("Base Server URL")), GBC.std()); 
    39         gui.connection.add(osmDataServer, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5)); 
    4024        credentialsPA.addPreferenceOptions(gui.connection); 
    4125    } 
    4226 
    4327    public boolean ok() { 
    44         Main.pref.put("osm-server.url", osmDataServer.getText()); 
    4528        credentialsPA.preferencesChanged(); 
    4629        return false; 
  • trunk/src/org/openstreetmap/josm/io/CredentialsManager.java

    r1958 r2015  
    99 */ 
    1010public interface CredentialsManager { 
     11    enum Key { 
     12        OSM_SERVER_URL("url"),  
     13        USERNAME("username"),  
     14        PASSWORD("password"); 
     15        final private String pname; 
     16        private Key(String name) { 
     17            pname = name; 
     18        } 
     19        @Override public String toString() { 
     20            return pname; 
     21        } 
     22    }; 
     23     
    1124    /** 
    12      * lookupUsername, lookupPassword: 
    13      * 
    1425     * Should throw or return non-null, possibly empty String. 
    1526     */ 
    16     public String lookupUsername() throws CMException; 
    17     public String lookupPassword() throws CMException; 
     27    public String lookup(Key key) throws CMException; 
    1828 
    1929    /** 
    20      * storeUsername, storePassword: 
    21      * 
    2230     * May silently fail to store. 
    2331     */ 
    24     public void storeUsername(String username) throws CMException; 
    25     public void storePassword(String password) throws CMException; 
     32    public void store(Key key, String secret) throws CMException; 
    2633 
    2734    /** 
  • trunk/src/org/openstreetmap/josm/io/OsmConnection.java

    r1962 r2015  
    112112        try { 
    113113            synchronized (credentialsManager) { 
    114                 auth = credentialsManager.lookupUsername() + ":" + credentialsManager.lookupPassword(); 
     114                auth = credentialsManager.lookup(CredentialsManager.Key.USERNAME) + ":" +  
     115                    credentialsManager.lookup(CredentialsManager.Key.PASSWORD); 
    115116            } 
    116117        } catch (CredentialsManager.CMException e) { 
     
    130131        return cancel; 
    131132    } 
    132  
     133    /** 
     134     * Default implementation of the CredentialsManager interface. 
     135     * Saves passwords in plain text file. 
     136     */ 
    133137    public static class PlainCredentialsManager implements CredentialsManager { 
    134         public String lookupUsername() throws CMException { 
    135             String username = Main.pref.get("osm-server.username", null); 
    136             if (username == null) throw new CredentialsManager.NoContentException(); 
    137             return username; 
    138         } 
    139         public String lookupPassword() throws CMException { 
    140             String password = Main.pref.get("osm-server.password"); 
    141             if (password == null) throw new CredentialsManager.NoContentException(); 
    142             return password; 
    143         } 
    144         public void storeUsername(String username) { 
    145             Main.pref.put("osm-server.username", username); 
    146         } 
    147         public void storePassword(String password) { 
    148             Main.pref.put("osm-server.password", password); 
     138        public String lookup(CredentialsManager.Key key) throws CMException { 
     139            String secret = Main.pref.get("osm-server." + key.toString(), null); 
     140            if (secret == null) throw new CredentialsManager.NoContentException(); 
     141            return secret;             
     142        } 
     143        public void store(CredentialsManager.Key key, String secret) { 
     144            Main.pref.put("osm-server." + key.toString(), secret); 
    149145        } 
    150146        public PasswordAuthentication getPasswordAuthentication(OsmAuth caller) { 
    151147            String username, password; 
    152148            try { 
    153                 username = lookupUsername(); 
     149                username = lookup(Key.USERNAME); 
    154150            } catch (CMException e) { 
    155151                username = ""; 
    156152            } 
    157153            try { 
    158                 password = lookupPassword(); 
     154                password = lookup(Key.PASSWORD); 
    159155            } catch (CMException e) { 
    160156                password = ""; 
     
    175171                p.add(warning, GBC.eop()); 
    176172 
    177                 JCheckBox savePassword = new JCheckBox(tr("Save user and password (unencrypted)"), !username.equals("") && !password.equals("")); 
     173                JCheckBox savePassword = new JCheckBox(tr("Save user and password (unencrypted)"),  
     174                                                       !username.equals("") && !password.equals("")); 
    178175                p.add(savePassword, GBC.eop()); 
    179176 
    180                 int choice = new ExtendedDialog(Main.parent, 
    181                         tr("Enter Password"), 
    182                         p, 
    183                         new String[] {tr("Login"), tr("Cancel")}, 
    184                         new String[] {"ok.png", "cancel.png"}).getValue(); 
     177                int choice = new ExtendedDialog( 
     178                    Main.parent, 
     179                    tr("Enter Password"), 
     180                    p, 
     181                    new String[] {tr("Login"), tr("Cancel")}, 
     182                    new String[] {"ok.png", "cancel.png"}).getValue(); 
    185183 
    186184                if (choice != 1) { 
     
    191189                password = String.valueOf(passwordField.getPassword()); 
    192190                if (savePassword.isSelected()) { 
    193                     storeUsername(username); 
    194                     storePassword(password); 
     191                    store(Key.USERNAME, username); 
     192                    store(Key.PASSWORD, password); 
    195193                } 
    196194                if (username.equals("")) 
     
    203201            return new PreferenceAdditions() { 
    204202                /** 
     203                 * Editfield for the Base url to the REST API from OSM. 
     204                 */ 
     205                final private JTextField osmDataServerURL = new JTextField(20); 
     206                /** 
    205207                 * Editfield for the username to the OSM account. 
    206208                 */ 
    207                 private JTextField osmDataUsername = new JTextField(20); 
     209                final private JTextField osmDataUsername = new JTextField(20); 
    208210                /** 
    209211                 * Passwordfield for the userpassword of the REST API. 
    210212                 */ 
    211                 private JPasswordField osmDataPassword = new JPasswordField(20); 
    212  
     213                final private JPasswordField osmDataPassword = new JPasswordField(20); 
     214 
     215                private String oldServerURL = ""; 
    213216                private String oldUsername = ""; 
    214217                private String oldPassword = ""; 
     
    216219                public void addPreferenceOptions(JPanel panel) { 
    217220                    try { 
    218                         oldUsername = lookupUsername(); 
     221                        oldServerURL = lookup(Key.OSM_SERVER_URL); // result is not null (see CredentialsManager) 
     222                    } catch (CMException e) { 
     223                        oldServerURL = ""; 
     224                    } 
     225                    if (oldServerURL.equals("")) oldServerURL = "http://api.openstreetmap.org/api"; 
     226                    try { 
     227                        oldUsername = lookup(Key.USERNAME); 
    219228                    } catch (CMException e) { 
    220229                        oldUsername = ""; 
    221230                    } 
    222231                    try { 
    223                         oldPassword = lookupPassword(); 
     232                        oldPassword = lookup(Key.PASSWORD); 
    224233                    } catch (CMException e) { 
    225234                        oldPassword = ""; 
    226235                    } 
     236                    osmDataServerURL.setText(oldServerURL); 
    227237                    osmDataUsername.setText(oldUsername); 
    228238                    osmDataPassword.setText(oldPassword); 
     239                    osmDataServerURL.setToolTipText(tr("The base URL for the OSM server (REST API)")); 
    229240                    osmDataUsername.setToolTipText(tr("Login name (e-mail) to the OSM account.")); 
    230241                    osmDataPassword.setToolTipText(tr("Login password to the OSM account. Leave blank to not store any password.")); 
     242                    panel.add(new JLabel(tr("Base Server URL")), GBC.std()); 
     243                    panel.add(osmDataServerURL, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5)); 
    231244                    panel.add(new JLabel(tr("OSM username (e-mail)")), GBC.std()); 
    232245                    panel.add(osmDataUsername, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5)); 
     
    241254                } 
    242255                public void preferencesChanged() { 
     256                    String newServerURL = osmDataServerURL.getText(); 
    243257                    String newUsername = osmDataUsername.getText(); 
    244258                    String newPassword = String.valueOf(osmDataPassword.getPassword()); 
     259                    if (!oldServerURL.equals(newServerURL)) { 
     260                        store(Key.OSM_SERVER_URL, newServerURL);  
     261                    } 
    245262                    if (!oldUsername.equals(newUsername)) { 
    246                         storeUsername(newUsername); 
     263                        store(Key.USERNAME, newUsername); 
    247264                    } 
    248265                    if (!oldPassword.equals(newPassword)) { 
    249                         storePassword(newPassword); 
     266                        store(Key.PASSWORD, newPassword); 
    250267                    } 
    251268                } 
Note: See TracChangeset for help on using the changeset viewer.