Ignore:
Timestamp:
2009-08-30T18:57:05+02:00 (15 years ago)
Author:
stoecker
Message:

fixed #3112 - patch by bastiK - cleanup password hook

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.