/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.usergrid.tools;
import com.google.common.collect.BiMap;
import org.apache.usergrid.corepersistence.util.CpNamingUtils;
import org.apache.usergrid.management.UserInfo;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Options;
import org.apache.usergrid.persistence.EntityManager;
import org.apache.usergrid.persistence.cassandra.CassandraService;
import org.apache.usergrid.persistence.entities.User;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import static org.apache.usergrid.utils.JsonUtils.mapToFormattedJsonString;
/** @author zznate */
public class UserManager extends ToolBase {
@Override
public Options createOptions() {
Options options = super.createOptions();
options.addOption( "u", "username", true, "The username to lookup" );
options.addOption( "p", "password", true, "The password to set for the user" );
return options;
}
@Override
public void runTool( CommandLine line ) throws Exception {
startSpring();
String userName = line.getOptionValue( "u" );
UserInfo userInfo = managementService.findAdminUser( userName );
if ( userInfo == null ) {
logger.info( "user {} not found", userName );
return;
}
logger.info("--- User information:");
logger.info( mapToFormattedJsonString( userInfo ) );
logger.info("--- User organizations:");
final BiMap<UUID, String> orgs = managementService.getOrganizationsForAdminUser( userInfo.getUuid() );
logger.info( mapToFormattedJsonString( orgs ) );
logger.info("--- User dictionaries:");
EntityManager em = emf.getEntityManager( CpNamingUtils.MANAGEMENT_APPLICATION_ID );
User user = em.get( userInfo.getUuid(), User.class );
Set<String> dictionaries = em.getDictionaries( user );
for (String dictionary : dictionaries) {
Map<Object, Object> dict = em.getDictionaryAsMap( user, dictionary );
logger.info( dictionary + " : " + mapToFormattedJsonString( dict ) );
}
if ( line.hasOption( "p" ) ) {
String password = line.getOptionValue( "p" );
managementService.setAdminUserPassword( userInfo.getUuid(), password );
logger.info( "new password match?: " + managementService
.verifyAdminUserPassword( userInfo.getUuid(), password ) );
}
}
}