001    /*
002     * Cumulus4j - Securing your data in the cloud - http://cumulus4j.org
003     * Copyright (C) 2011 NightLabs Consulting GmbH
004     *
005     * This program is free software: you can redistribute it and/or modify
006     * it under the terms of the GNU Affero General Public License as
007     * published by the Free Software Foundation, either version 3 of the
008     * License, or (at your option) any later version.
009     *
010     * This program is distributed in the hope that it will be useful,
011     * but WITHOUT ANY WARRANTY; without even the implied warranty of
012     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
013     * GNU Affero General Public License for more details.
014     *
015     * You should have received a copy of the GNU Affero General Public License
016     * along with this program.  If not, see <http://www.gnu.org/licenses/>.
017     */
018    package org.cumulus4j.keymanager.cli;
019    
020    import org.kohsuke.args4j.Option;
021    
022    /**
023     * <p>
024     * Abstract {@link SubCommand} implementation for being subclassed when a key-store and authentication
025     * (user + password) is used.
026     * </p>
027     * @author Marco หงุ่ยตระกูล-Schulze - marco at nightlabs dot de
028     * @deprecated All sub-commands that currently subclass this class should instead subclass
029     * {@link SubCommandWithKeyManagerAPIWithAuth} or one of its subclasses.
030     */
031    @Deprecated
032    public abstract class SubCommandWithKeyStoreWithAuth
033    extends SubCommandWithKeyStore
034    {
035            @Option(name="-authUserName", required=true, usage="The authenticated user authorizing this action. If the very first user is created, this value is ignored.")
036            private String authUserName;
037    
038            public String getAuthUserName()
039            {
040                    return authUserName;
041            }
042    
043            @Option(name="-authPassword", required=false, usage="The password for authenticating the user specified by -authUserName. If the very first user is created, this value is ignored. If omitted, the user will be asked interactively (if required, i.e. if not creating the very first user).")
044            private String authPassword;
045    
046            public char[] getAuthPasswordAsCharArray()
047            {
048                    return authPassword == null ? null : authPassword.toCharArray();
049            }
050    
051            public String getAuthPassword()
052            {
053                    return authPassword;
054            }
055    
056            @Override
057            public void prepare() throws Exception
058            {
059                    super.prepare();
060                    if (authPassword == null && !getKeyStore().isEmpty())
061                            authPassword = promptPassword("authPassword: ");
062            }
063    }