<%@ page import="fr.univrennes1.cri.calendar.*"%>
<%@ page import="java.util.*"%>
<%@ page import="javax.servlet.http.*"%>
<%@ page contentType="text/plain" %>
<%@ page import="org.apache.log4j.*"%>
<%@ page errorPage = "page-erreur.jsp" %>
<%
Logger logger = Logger.getLogger("verifySSO.jsp");

 /**
  * description
  * Cette page permet aux applications SUN ONE de contrôler
  * si la personne à été autorisé par un service SSO (ici CAS)
  * findescription
 */
/**
 * client
 * type: String
 * desc: paramètre correspondant à l'ip du client, paramètre envoyé par Sun One Calendar dans l'URL.
*/
/**
 * tabCookie
 * type: Cookie[]
 * desc: tableau de tous les cookies trouvés chez l'utilisateur.
*/
/**
 * nb
 * type: int
 * desc: taille du tableau de cookies.
*/
/**
 * valCookie
 * type: String
 * desc: valeur du cookie.
*/
/**
 * timeIsGoog
 * type: long
 * desc: valeur en milliseconde de la date de création du cookie ajoutée au SOTValidationTime du fichier de configuration ConfigSSO.xml.
*/
/*Recuperation de tous les cookies du client*/
Cookie[] tabCookie = request.getCookies();

/*taille du tableau de cookies*/
int nb = tabCookie.length;
String valCookie = null;
long timeIsGood = 0;
/*Parcours de tout le tableau de cookies pour retrouver le cookie ssoApPrefix-appId*/
for (int i = 0; i < nb ;i++)
	{
		if (tabCookie[i].getName().equals(ConfigSSO.getInstance().getSsoApPrefix()+"-"+ConfigSSO.getInstance().getAppId())){
			/*valeur du cookie ssoApPrefix-appId*/
			valCookie = tabCookie[i].getValue();
			/*recuperation de l'objet Sot contenu dans la Hashtable avec comme clé la valeur du cookie ssoApPrefix-appId*/
			HashtableSSO tmp = HashtableSSO.getInstance();
			Sot sotUserCookie = (Sot)tmp.get(valCookie);
			/*date de creation du cookie + tmps de durée de validité(cf fichier de config)=timeIsGoog*/
			timeIsGood = sotUserCookie.getTime()+((long)(Integer.parseInt(ConfigSSO.getInstance().getSOTValidationTime()))*1000);
			/*Si le cookie est tjrs valide et ip du client est la meme que
			celle de l'objet Sot, on autorise l'authentification et on detruit le cookie.*/
			/*request.getParameter("client") => client correspond à l'ip du client, parametre envoyé par Calendar*/
			if ((sotUserCookie.getIp().equals(request.getParameter("client")))&&((timeIsGood)>=(System.currentTimeMillis()))){
					out.println("fquid="+sotUserCookie.getUid());	
					out.println("authtype=plaintext");			
					Cookie killCookie = new Cookie(tabCookie[i].getName(),null);
					killCookie.setPath("/");
					killCookie.setDomain(ConfigSSO.getInstance().getDomain());
					killCookie.setMaxAge(0);
					response.addCookie(killCookie);					
			}else{
				/*Sinon on autorise pas*/
				out.print("Error: user does not have a valid session.");
				}
		} 
	}
%>