<%@page import="org.apache.oodt.cas.curation.util.SSOUtils"%>
<%@page import="org.apache.oodt.security.sso.SingleSignOn"%>
<%
// Licensed to the Apache Software Foundation (ASF) under one or more contributor
// license agreements.  See the NOTICE.txt 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.

// use new single sign on API
SingleSignOn auth = SSOUtils.getWebSingleSignOn(application, request,response);
String ldapUser = request.getParameter("username");
String ldapPass = request.getParameter("password");
String refererUrl = request.getParameter("from");

if (auth.login(ldapUser, ldapPass)) {
	response.sendRedirect(refererUrl);
} else {
	if (auth.getLastConnectionStatus()) {
	    response.sendRedirect("login.jsp?loginFail=true&from="+refererUrl);
	} else {
		response.sendRedirect("login.jsp?loginConnectFail=true&from="+refererUrl);
	}
}
%>
