Package com.esri.gpt.control.identity

Source Code of com.esri.gpt.control.identity.LoginController

/* See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* Esri Inc. 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 com.esri.gpt.control.identity;
import com.esri.gpt.control.ResourceKeys;
import com.esri.gpt.framework.context.RequestContext;
import com.esri.gpt.framework.jsf.BaseActionListener;
import com.esri.gpt.framework.security.credentials.CredentialsDeniedException;
import com.esri.gpt.framework.security.credentials.UsernamePasswordCredentials;
import com.esri.gpt.framework.security.identity.IdentityAdapter;
import com.esri.gpt.framework.security.principal.User;
import com.esri.gpt.framework.util.Val;
import com.esri.gpt.sdisuite.IntegrationContext;
import com.esri.gpt.sdisuite.IntegrationContextFactory;

import javax.faces.context.ExternalContext;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.servlet.http.HttpSession;

/**
* Handles login and logout actions.
*/
public class LoginController extends BaseActionListener {

// class variables =============================================================

// instance variables ==========================================================
private UsernamePasswordCredentials _credentials;
 
// constructors ================================================================

/** Default constructor. */
public LoginController() {
  setCredentials(new UsernamePasswordCredentials());
}

// properties ==================================================================

/**
* Gets the credentials.
* @return the credentials
*/
public UsernamePasswordCredentials getCredentials() {
  return _credentials;
}
/**
* Sets the credentials.
* @param credentials the credentials
*/
private void setCredentials(UsernamePasswordCredentials credentials) {
  _credentials = credentials;
}

// methods =====================================================================

/**
* Invalidates the active user and session.
* @param context the context associated with the active request
*/
private void invalidateSession(RequestContext context) {
  context.getUser().reset();
  HttpSession session = getContextBroker().extractHttpSession();
  if (session != null) {
    session.invalidate();
  }
}

/**
* Fired when the getPrepareView() property is accessed.
* <br/>This event is triggered from the page during the
* render response phase of the JSF cycle.
* @param context the context associated with the active request
* @throws Exception if an exception occurs
*/
@Override
protected void onPrepareView(RequestContext context) throws Exception {
  if (context.getUser().getAuthenticationStatus().getWasAuthenticated()) {
    ExternalContext ec = getContextBroker().getExternalContext();
    if (ec != null) {
      ec.redirect(Val.chkStr(ec.getRequestContextPath()+"/catalog/main/home.page"));
    }
  }
}

/**
* Handles a logout action.
* @param event the associated JSF action event
* @throws AbortProcessingException if processing should be aborted
*/
public void processLogout(ActionEvent event)
  throws AbortProcessingException {
  try {
    RequestContext context = onExecutionPhaseStarted();
    invalidateSession(context);
  } catch (AbortProcessingException e) {
    throw(e);
  } catch (Throwable t) {
    handleException(t);
  } finally {
    onExecutionPhaseCompleted();
  }
}
 

/**
* Handles a login action.
* <br/>This is the default entry point for a sub-class of BaseActionListener.
* <br/>This BaseActionListener handles the JSF processAction method and
* invokes the processSubAction method of the sub-class.
* @param event the associated JSF action event
* @param context the context associated with the active request
* @throws AbortProcessingException if processing should be aborted
* @throws Exception if an exception occurs
*/
@Override
protected void processSubAction(ActionEvent event, RequestContext context)
  throws AbortProcessingException, Exception  {
  try {
   
    // set the user credentials
    User user = context.getUser();
    user.reset();
    UsernamePasswordCredentials creds = new UsernamePasswordCredentials();
    creds.setUsername(getCredentials().getUsername());
    creds.setPassword(getCredentials().getPassword());
    user.setCredentials(creds);
   
    // authenticate the user
    IdentityAdapter idAdapter = context.newIdentityAdapter();
    idAdapter.authenticate(user);
   
    // inform if sdi.suite integration is enabled
    IntegrationContextFactory icf = new IntegrationContextFactory();
    if (icf.isIntegrationEnabled()) {
      IntegrationContext ic = icf.newIntegrationContext();
      if (ic != null) {
        ic.ensureToken(user);
        ic.initializeUser(user);
      }
    }
   
    // set the outcome
    setNavigationOutcome(ResourceKeys.NAVIGATIONOUTCOME_HOME_DIRECT);
    String[] args = new String[1];
    args[0] = user.getName();
    extractMessageBroker().addSuccessMessage("identity.login.success",args);
  } catch (CredentialsDeniedException e) {
    extractMessageBroker().addErrorMessage("identity.login.err.denied");
  }
}

}
TOP

Related Classes of com.esri.gpt.control.identity.LoginController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.