--- /dev/null
+<?php
+// vim: set binary noeol et sw=4 sts=4 :
+// Grupo 10
+//
+// Lucarella, Schein, Arena
+//
+// Creado: Leandro Lucarella (vie may 6 13:02:11 ART 2005)
+//
+// $Id$
+
+require_once 'lib/pagina.php';
+require_once 'lib/validacion.php';
+require_once 'lib/Usuario.php';
+require_once 'lib/admin.forms.php';
+require_once 'lib/admin.util.php';
+
+
+// Si llenó el formulario
+if (isset($_POST['admin_ceder']) and isset($_POST['admin_ceder_pass']))
+{
+ if ($err = ret_check_asociado($_POST['admin_ceder'])
+ or $err = ret_check_password($u = new Usuario($_POST['admin_ceder']),
+ $_POST['admin_ceder_pass'])
+ or $err = $_SESSION['user']->cederAdmin($u))
+ {
+ marco_cabecera('Ceder Administración', true);
+ error($err);
+ admin_form_ceder_admin(Usuario::getAll(), $_POST['admin_ceder']);
+ }
+ else // ok
+ {
+ // Empiezo la página acá para que pueda tomar los nuevos permisos.
+ marco_cabecera('Ceder Administración');
+ ok('Se cedieron los permisos de administrador créditos al usuario '
+ .$u->getNombre().' '.$u->getApellido().'. Usted no es más '
+ .'administrador del sistema.');
+ }
+}
+else // Si no llenó el formulario
+{
+ marco_cabecera('Ceder Administración', true);
+ admin_form_ceder_admin(Usuario::getAll());
+}
+
+marco_pie('Leandro Lucarella', 'llucare@fi.uba.ar');
+
+?>
\ No newline at end of file
*/
class Usuario
{
- // Attributes
var $_id;
var $_nombre;
var $_apellido;
var $_pass;
var $_email;
+ /// Constructor
function Usuario($id)
{
$this->_id = $id;
- $d = file_users_get($id);
+ $this->reload();
+ }
+
+ /// Carga la información del usuario desde los archivos.
+ function reload()
+ {
+ $d = file_users_get($this->_id);
$this->_pass = $d[1];
$this->_email = $d[2];
- if ($this->esAsesor()) $d = file_ase_get($id);
- else $d = file_int_get($id);
+ if ($this->esAsesor()) $d = file_ase_get($this->_id);
+ else $d = file_int_get($this->_id);
$this->_nombre = $d[1];
$this->_apellido = $d[2];
}
return file_creditos_add($this->_id, $n);
}
+ /// Cede los permisos de administración a otro usuario.
+ function cederAdmin($user)
+ {
+ // El asesor puede preguntar siempre
+ if (!$this->esAdmin())
+ return 'Sólo un administrador puede ceder la administración';
+ if ($user->esAdmin())
+ return 'El usuario '.$user->getNombre().' '.$user->getApellido()
+ .'ya es administrador.';
+ if (!file_admins_replace($this->getId(), $user->getId()))
+ return 'Error al intercambiar los administradores.';
+ $this->reload();
+ return '';
+ }
+
/// Muestra el usuario como HTML (foto + apellido)
function toHtml()
{
<?php
}
+/// Formulario para ceder la administración a otro usuario.
+function admin_form_ceder_admin($users, $user = '', $action = 'admin.admin.php')
+{
+ warn('Recuerde que este proceso no es reversible, si usted cede sus '
+ .'permisos de administrador, no podrá recuperarlos a menos que el '
+ .'nuevo administrador se los vuelva a asignar.');
+?>
+ <form name="admin_ceder" action="<?php echo $action ?>"
+ method="post" onSubmit="return admin_validar_ceder(this);">
+ <script type="text/javascript" language="JavaScript">
+ <!--
+ function admin_validar_ceder(f)
+ {
+ if (!check_vacio(f.admin_ceder_pass, 'Contraseña')) return false;
+ return true;
+ }
+ -->
+ </script>
+ <p>
+ <input type="submit" value="Ceder" /> permisos de administración a
+ <select name="admin_ceder">
+ <?php foreach ($users as $u) echo $u->toHtmlOption($user) ?>
+ </select><br />
+ Contraseña: <input type="password" name="admin_ceder_pass" /> (esta operación requiere contraseña)
+ </p>
+ </form>
+<?php
+}
+
?>
\ No newline at end of file
return false;
}
+/// Verifica que sea un número de registro de un asociado (retorna error).
+function ret_check_asociado($user)
+{
+ if (Usuario::asociado($user)) return '';
+ return "$user no es un número de registro de un usuario asociado!";
+}
+
+/// Verifica que sea la password correcta (retorna error).
+function ret_check_password($user, $pass)
+{
+ if ($user->getPassword() == $pass) return '';
+ return 'Contraseña incorrecta!';
+}
+
/// Verifica que sea un número de registro de un asociado.
function check_asociado($user)
{
- if (Usuario::asociado($user)) return true;
- error("$user no es un número de registro de un usuario asociado!");
- return false;
+ if ($err = ret_check_asociado($user))
+ error($err);
+ return !$err;
}
/// Verifica que sea la password correcta.
function check_password($user, $pass)
{
- if ($user->getPassword() == $pass) return true;
- error('Contraseña incorrecta!');
- return false;
+ if ($err = ret_check_password($user, $pass))
+ error($err);
+ return !$err;
}
?>
\ No newline at end of file