All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.usergrid.tools.ResetSuperUser Maven / Gradle / Ivy

There is a newer version: 0.0.27.1
Show newest version
/*******************************************************************************
 * Copyright 2012 Apigee Corporation
 * 
 * Licensed 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.usergrid.tools;

import static java.lang.Boolean.parseBoolean;
import static org.usergrid.management.AccountCreationProps.PROPERTIES_SYSADMIN_LOGIN_ALLOWED;
import static org.usergrid.management.AccountCreationProps.PROPERTIES_SYSADMIN_LOGIN_EMAIL;
import static org.usergrid.management.AccountCreationProps.PROPERTIES_SYSADMIN_LOGIN_NAME;
import static org.usergrid.management.AccountCreationProps.PROPERTIES_SYSADMIN_LOGIN_PASSWORD;

import java.util.Collection;
import java.util.Collections;
import java.util.Set;
import java.util.UUID;

import me.prettyprint.cassandra.serializers.ByteBufferSerializer;

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.usergrid.management.AccountCreationProps;
import org.usergrid.management.cassandra.ManagementServiceImpl;
import org.usergrid.persistence.Entity;
import org.usergrid.persistence.EntityManager;
import org.usergrid.persistence.EntityRef;
import org.usergrid.persistence.Identifier;
import org.usergrid.persistence.Query;
import org.usergrid.persistence.Results;
import org.usergrid.persistence.SimpleEntityRef;
import org.usergrid.persistence.cassandra.CassandraService;
import org.usergrid.persistence.entities.Application;
import org.usergrid.persistence.entities.User;
import org.usergrid.persistence.exceptions.DuplicateUniquePropertyExistsException;

/**
 * This is a utility to load all entities in an application and re-save them,
 * this forces the secondary indexing to be updated.
 * 
 * @author tnine
 * 
 */
public class ResetSuperUser extends ToolBase {

    /**
     * 
     */
    private static final int PAGE_SIZE = 100;

    public static final ByteBufferSerializer be = new ByteBufferSerializer();

    private static final Logger logger = LoggerFactory.getLogger(ResetSuperUser.class);

    @Override
    @SuppressWarnings("static-access")
    public Options createOptions() {

        Option hostOption = OptionBuilder.withArgName("host").hasArg().isRequired(true)
                .withDescription("Cassandra host").create("host");

        Option userOption = OptionBuilder.withArgName("username").hasArg().isRequired(true)
                .withDescription("superuser username").create("username");

        Option passwordOption = OptionBuilder.withArgName("password").hasArg().isRequired(true)
                .withDescription("superuser password").create("password");

        Option emailOption = OptionBuilder.withArgName("email").hasArg().isRequired(true)
                .withDescription("superuser email").create("email");

        Options options = new Options();
        options.addOption(hostOption);
        options.addOption(userOption);
        options.addOption(passwordOption);
        options.addOption(emailOption);

        return options;
    }

    /*
     * (non-Javadoc)
     * 
     * @see
     * org.usergrid.tools.ToolBase#runTool(org.apache.commons.cli.CommandLine)
     */
    @Override
    public void runTool(CommandLine line) throws Exception {
        startSpring();

        // force the props to be set
        AccountCreationProps props = ((ManagementServiceImpl) managementService).getAccountCreationProps();

        props.setProperty(PROPERTIES_SYSADMIN_LOGIN_ALLOWED, "true");
        props.setProperty(PROPERTIES_SYSADMIN_LOGIN_NAME, line.getOptionValue("username"));
        props.setProperty(PROPERTIES_SYSADMIN_LOGIN_EMAIL, line.getOptionValue("email"));
        props.setProperty(PROPERTIES_SYSADMIN_LOGIN_PASSWORD, line.getOptionValue("password"));

        logger.info("Starting superuser provision");

        managementService.provisionSuperuser();

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy