Package com.ibm.sbt.service.core.handlers

Source Code of com.ibm.sbt.service.core.handlers.AuthenticationHandler

/*
R * © Copyright IBM Corp. 2012
*
* 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 com.ibm.sbt.service.core.handlers;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.ibm.commons.util.io.json.JsonJavaObject;
import com.ibm.commons.util.io.json.JsonObject;
import com.ibm.sbt.security.authentication.AuthenticationException;
import com.ibm.sbt.security.authentication.password.PasswordException;
import com.ibm.sbt.services.client.ClientServicesException;
import com.ibm.sbt.services.endpoints.BasicEndpoint;
import com.ibm.sbt.services.endpoints.Endpoint;
import com.ibm.sbt.services.endpoints.EndpointFactory;


public class AuthenticationHandler extends AbstractServiceHandler {
  public static final String URL_PATH                 = "authHandler";
    public static final String LOG_OUT          = "logout";
    public static final String IS_AUTHENTICATED      = "isAuth";
    public static final String IS_AUTHENTICATION_VALID  = "isAuthValid";
    private static final String APPLICATION_JSON        = "application/json";
 
  @Override
  public void service(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {
    String pathInfo = request.getPathInfo();
      Endpoint endpoint = EndpointFactory.getEndpoint(getEndpointName(pathInfo))//remove hardcoded name ..get second token from path info
      PrintWriter writer = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), "utf-8"));
    JsonObject jsonResponse = new JsonJavaObject();
      if(getAuthAction(pathInfo).equals(LOG_OUT)){
        boolean logoutSuccessful = true;
        try {
        endpoint.logout();
      } catch (AuthenticationException e) {
        logoutSuccessful = false;
      }
      try {
        if(endpoint.isAuthenticated()){
          logoutSuccessful = false;
        }
      } catch (ClientServicesException e) {
        logoutSuccessful = false;
      }
      if(logoutSuccessful){
        jsonResponse.putJsonProperty("success", true);
        jsonResponse.putJsonProperty("status", 200);
      }else{
        jsonResponse.putJsonProperty("success", false);
        jsonResponse.putJsonProperty("status", 500);
      }
      }
      if(getAuthAction(pathInfo).equals(IS_AUTHENTICATED)){
        try {
          jsonResponse.putJsonProperty("result", endpoint.isAuthenticated());
          jsonResponse.putJsonProperty("status", 200);
        } catch (ClientServicesException e) {
          jsonResponse.putJsonProperty("result", false);
          jsonResponse.putJsonProperty("status", 500);
        }
      }
      if(getAuthAction(pathInfo).equals(IS_AUTHENTICATION_VALID)){
      try {
        jsonResponse.putJsonProperty("result", endpoint.isAuthenticationValid());
        jsonResponse.putJsonProperty("status", 200);
      } catch (ClientServicesException e) {
        jsonResponse.putJsonProperty("result", false);
        jsonResponse.putJsonProperty("status", 500);
      }
  }
        response.setContentType(APPLICATION_JSON);
        writer.write(jsonResponse.toString());
      writer.flush();
  }
 
  public String getAuthAction(String pathInfo){//returns string JSApp or JavaApp
    String authAction = "";
      if(pathInfo != null){
        String[] tokens = pathInfo.split("/");
        if(tokens.length > 3){
          authAction = tokens[3];
        }
      }
    return authAction;
  }
 
  public String getEndpointName(String pathInfo){
    String endPointName = "";
      if(pathInfo != null){
        String[] tokens = pathInfo.split("/");
        if(tokens.length > 2){
          endPointName = tokens[2];
        }
      }
    return endPointName;
  }
   
}
TOP

Related Classes of com.ibm.sbt.service.core.handlers.AuthenticationHandler

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.