]> git.llucax.com Git - z.facultad/75.43/tp1.git/commitdiff
Nueva pantalla de cambio de administrador.
authorLeandro Lucarella <llucax@gmail.com>
Fri, 6 May 2005 18:30:13 +0000 (18:30 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Fri, 6 May 2005 18:30:13 +0000 (18:30 +0000)
src/admin.admin.php [new file with mode: 0644]
src/lib/Usuario.php
src/lib/admin.forms.php
src/lib/validacion.php

diff --git a/src/admin.admin.php b/src/admin.admin.php
new file mode 100644 (file)
index 0000000..40631f8
--- /dev/null
@@ -0,0 +1,47 @@
+<?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
index 864f2c3a207a3f7d3cb2e341513aeeae83189e49..bdef593a2d7af22f2f3aea45259c36063c98a1be 100644 (file)
@@ -24,21 +24,27 @@ require_once 'lib/file.log.php';
  */
 class Usuario
 {
  */
 class Usuario
 {
-    // Attributes
     var $_id;
     var $_nombre;
     var $_apellido;
     var $_pass;
     var $_email;
 
     var $_id;
     var $_nombre;
     var $_apellido;
     var $_pass;
     var $_email;
 
+    /// Constructor
     function Usuario($id)
     {
         $this->_id = $id;
     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];
         $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];
     }
         $this->_nombre = $d[1];
         $this->_apellido = $d[2];
     }
@@ -100,6 +106,21 @@ class Usuario
         return file_creditos_add($this->_id, $n);
     }
 
         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()
     {
     /// Muestra el usuario como HTML (foto + apellido)
     function toHtml()
     {
index 7c0288151dbac9ed7476a3942f5887bbd3a8f7b6..91eb1fb2e329d696526ab12bc8911dca17cec0cd 100644 (file)
@@ -141,4 +141,33 @@ function admin_form_creditos($users, $user = '', $creditos = 1, $action = 'admin
 <?php
 }
 
 <?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
 ?>
\ No newline at end of file
index 04f51cdc1e87341a46f1b50d6279bfd3738738ca..13c965a7a59765617517be3dd6c1c17409a575f6 100644 (file)
@@ -143,20 +143,34 @@ function check_numero($n)
     return false;
 }
 
     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)
 {
 /// 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)
 {
 }
 
 /// 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
 }
 
 ?>
\ No newline at end of file