package io.fathom.cloud.identity.commands;
import io.fathom.cloud.commands.Cmdlet;
import io.fathom.cloud.identity.LoginService;
import io.fathom.cloud.identity.services.IdentityService;
import io.fathom.cloud.keyczar.KeyczarFactory;
import io.fathom.cloud.protobuf.IdentityModel.DomainData;
import java.io.File;
import javax.inject.Inject;
import org.keyczar.KeyczarFileReader;
import org.kohsuke.args4j.Option;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.fathomdb.io.IoUtils;
public class PasswordChangeCmdlet extends Cmdlet {
public PasswordChangeCmdlet() {
super("id-password-change");
}
private static final Logger log = LoggerFactory.getLogger(PasswordChangeCmdlet.class);
@Inject
IdentityService identityService;
@Inject
LoginService loginService;
@Inject
KeyczarFactory keyczarFactory;
@Option(name = "-o", usage = "path for private key store", required = false)
public File path;
@Option(name = "-u", usage = "username", required = true)
public String username;
@Option(name = "-p", usage = "password", required = true)
public String password;
@Override
public void run() throws Exception {
if (path == null) {
path = IoUtils.resolve("~/passwordrecovery");
}
log.info("Loading password-recovery key from {}", path);
KeyczarFileReader store = new KeyczarFileReader(path.getAbsolutePath());
DomainData domain = identityService.getDefaultDomain();
loginService.changePassword(domain, username, password, store);
}
}