// The contents of this file are subject to the Mozilla Public License Version 1.1
// (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.mozilla.org/MPL/>.
// 
// Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
// WARRANTY OF ANY KIND, either express or implied. See the License for the specific
// language governing rights and limitations under the License.
// 
// The Original Code is the Venice Web Communities System.
// 
// The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
// for Silverwrist Design Studios.  Portions created by Eric J. Bowersox are
// Copyright (C) 2003 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
// 
// Contributor(s): 

importPackage(java.lang);
importPackage(java.util);
importPackage(Packages.org.sourceid.sso.util);
importPackage(Packages.org.sourceid.sso.xml);
importPackage(Packages.org.sourceid.sso.xml.lib);
importClass(Packages.com.silverwrist.dynamo.Namespaces);
importPackage(Packages.com.silverwrist.dynamo.iface);
importPackage(Packages.com.silverwrist.dynamo.util);
importClass(Packages.com.silverwrist.venice.VeniceNamespaces);
importPackage(Packages.com.silverwrist.venice.content);
importPackage(Packages.com.silverwrist.venice.frame);

req = bsf.lookupBean("request");
req_help = bsf.lookupBean("request_help");
target = req_help.getParameterString("tgt");
if (target==null)
  target = "top.js.vs";
vlib.setOnError(req,target);
user = vlib.getUser(req);

// Check the user account.
user = vlib.getUser(req);
if (user.isAnonymous())
{ // user not logged in, must log in first - so bounce us to the login dialog
  new_target = "sourceid/federations.js.vs?tgt=" + stringutils.encodeURL(target);
  dynamo.scriptReturn(new Redirect("SERVLET","login.js.vs?tgt=" + stringutils.encodeURL(new_target)));

} // end if

// Get the IDP session.
idpsess = sourceid.getIDPSession(req,false);
if (idpsess==null)  // auto-logout if there's no IDP session
  dynamo.scriptReturn(new Redirect("SERVLET","logout.js.vs"));

// Load the profile menu.
mprov = vcast.queryMenuProvider(req_help.getRequestObject(Namespaces.DYNAMO_OBJECT_NAMESPACE,"venice-menus"));
menu = mprov.getInlineMenu(user,VeniceNamespaces.USER_PROFILE_NAMESPACE,"user.profile.menu",cast.newIntArray(0));
if (menu.getItemCount()>1)
{ // set up the menu properly
  menu.setVariable("target",stringutils.encodeURL(target));
  ndx = menu.getItemContainingLinkText("sourceid/federations.js.vs");
  menu.setSelectedIndex(ndx);

} // end if
else  // don't display the menu
  menu = null;

// Create the return value.
rc = new VelocityView("Identity Federations","sourceid/federations.vm");
rc.setParameter("target",target);
if (menu!=null)
  rc.setParameter("menu",menu);

// Get the list of identity providers and a bunch of information about them.
pdir = sourceid.getProviderDirectory(req);
it = pdir.getSPList().iterator();
plist = new ArrayList();
while (it.hasNext())
{ // get each service provider in turn
  map = new HashMap();
  sp = sourceid.castSPDescriptorType(it.next());
  map.put("provider",sp.providerID);
  sentry = sourceid.getEntryForProvider(idpsess,sp.providerID);
  if (sentry!=null)
    map.put("auth",Boolean.TRUE);
  map.put("federated",cast.booleanObject(sourceid.isUserFederatedWith(req,sp.providerID)));
  plist.add(map);

} // end while

rc.setParameter("provider_data",plist);

dynamo.scriptOutput(rc);  // all done
