<?php
/*
 $Id: adm_login.php,v 1.4 2005/04/01 17:13:10 benjamin Exp $
 ----------------------------------------------------------------------
 AlternC - Web Hosting System
 Copyright (C) 2002 by the AlternC Development Team.
 http://alternc.org/
 ----------------------------------------------------------------------
 Based on:
 Valentin Lacambre's web hosting softwares: http://altern.org/
 ----------------------------------------------------------------------
 LICENSE

 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License (GPL)
 as published by the Free Software Foundation; either version 2
 of the License, or (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 To read the license please visit http://www.gnu.org/copyleft/gpl.html
 ----------------------------------------------------------------------
 Original Author of file: Benjamin Sonntag
 Purpose of file: Connect a super-user to another account
 ----------------------------------------------------------------------
*/
require_once("../class/config.php");

/*
 We come into this page in two situations : 
 * with a user id to go to (we check the current account is admin and is allowed to connect to this account)
 * with no parameter when the admin want to go back to his admin account.
 */

$fields = array (
        "id"                => array ("request", "integer", ""),
);
getFields($fields);

// * with no parameter when the admin want to go back to his admin account.  
if ( empty($id) && isset($_COOKIE["oldid"]) && !empty($_COOKIE["oldid"])) {
  // We check the cookie's value : 
  list($newuid,$passcheck)=explode("/",$_COOKIE["oldid"]);
  $newuid=intval($newuid); 
  if (!$newuid) {
    $error=_("Your authentication information are incorrect");
    include("index.php");
    exit();
  }
  $admin->enabled=true;
  $r=$admin->get($newuid);
  if ($passcheck!=md5($r["pass"])) {
    $error=_("Your authentication information are incorrect");
    include("index.php");
    exit();
  }

  if ($r['lastip'] != get_remote_ip() ) {
    $error=_("Your IP is incorrect.");
    include("index.php");
    exit();
  }
  // FIXME we should add a peremption date on the cookie

  // Ok, so we remove the cookie : 
  setcookie('oldid','',0,'/');
  unset($_COOKIE['oldid']);

  // And we go back to the former administrator account : 
  if (!$mem->setid($newuid)) {
    $error=$err->errstr();
    include("index.php");
    exit();
  }

  include_once("adm_list.php");
  exit();
}


//  * with a user id to go to (we check the current account is admin and is allowed to connect to this account) 
if (!$admin->enabled) {
  __("This page is restricted to authorized staff");
  exit();
}

// Depending on subadmin_restriction, a subadmin can (or cannot) connect to account he didn't create
$subadmin=variable_get("subadmin_restriction");
if ($subadmin==0 && !$admin->checkcreator($id)) {
  __("This page is restricted to authorized staff");
  exit();
}

if (!$r=$admin->get($id)) {
  $error=$err->errstr();
} else {
  $oldid=$cuid."/".md5($mem->user["pass"]);
  setcookie('oldid',$oldid,0,'/');
  $_COOKIE['oldid']=$oldid;

  if (!$mem->setid($id)) {
    $error=$err->errstr();
    include("index.php");
    exit();
  }
  // Now we are the other user :) 
  include_once("main.php");
  exit();
}

// If there were an error, let's show it :
include_once("head.php");

?>
<h3><?php __("Member login"); ?></h3>
<?php

if (isset($error) && $error) {
  echo "<p class=\"error\">$error</p>";
}
include_once("foot.php"); 
?>