Advertisement
Guest User

Untitled

a guest
Mar 1st, 2018
488
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 9.37 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4.  * @Author: roman
  5.  * @Date:   2018-01-09 03:06:33
  6.  * @Last Modified by:   casamac
  7.  * @Last Modified time: 2018-03-01 17:37:33
  8.  */
  9.  
  10. defined('BASEPATH') OR exit('No direct script access allowed');
  11.  
  12. class Cuenta extends CI_Controller {
  13.  
  14.     /**
  15.      * [$email description]
  16.      * @var [type]
  17.      */
  18.     protected $_email;
  19.  
  20.     /**
  21.      * [$password description]
  22.      * @var [type]
  23.      */
  24.     protected $password;
  25.  
  26.     private $mail;
  27.     /**
  28.      * [$xml description]
  29.      * @var [type]
  30.      */
  31.     private $xml;
  32.  
  33.     public function __construct()
  34.     {
  35.         parent::__construct();
  36.  
  37.         //debug        
  38.         $this->output->enable_profiler(TRUE);
  39.  
  40.         /**
  41.          * Load Helpers
  42.          */
  43.         $this->load->helper(array('xml','file','form','forms_helper','mail_helper'));
  44.  
  45.         /**
  46.          * Load Librarys
  47.          */
  48.         $this->load->library(array('form_validation','encryption','xml_writer'));
  49.  
  50.         /**
  51.          * load model admin
  52.          */
  53.         $this->load->model(array('cuenta_model','admin_model'));
  54.  
  55.          /**
  56.          * creando objeto de la libreria
  57.          * @var Xml_writer
  58.          */
  59.          $this->xml = new Xml_writer();
  60.  
  61.          /**
  62.           * [$this->email description]
  63.           * @var [type]
  64.           */
  65.          $this->_email = $this->input->post('email');
  66.  
  67.          /**
  68.           * [$this->password description]
  69.           * @var [type]
  70.           */
  71.          $this->password = $this->input->post('password');
  72.  
  73.          /**
  74.          *
  75.          */
  76.          $this->mail = getConfigs('email_configs.xml');
  77.     }
  78.  
  79.     /**
  80.      * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  81.      *
  82.      * Pagina principal del panel de usuario llamado "cuenta".
  83.      *
  84.      * REQUIERE: Requiere tener una session activa, de lo contrario será redireccionado automaticamente al login.
  85.      *
  86.      * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  87.      * @return [none]
  88.      */
  89.     public function index(){
  90.  
  91.         // si la session esta activa que pase directamente al panel de control.
  92.         if ($this->session->userdata('loggin') != true || empty($this->session->userdata('email'))) {
  93.             redirect('login');
  94.         }
  95.  
  96.  
  97.         echo 'cuenta';
  98.     }
  99.  
  100. /**
  101.  * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  102.  *
  103.  * Esta funcion permite a los usuarios registrarse en nuestro sistema siempre cumplan los requisitos del formulario
  104.  *
  105.  * ### REQUIERE ###
  106.  * # Tipo de cuenta : El tipo de cuenta puede ser persona o empresa
  107.  * # Nombre : Nombre del usuario
  108.  * # Apellido : Apellido del usuario
  109.  * # Email : El email del usuario -> Este debe ser unico en la base de datos.
  110.  * # Password: El Password del usuario -> Esta debe coincider con la Password2, ya que es validación de esta misma
  111.  * # Terms : Son los terminos y condiciones de servicio -> Requiere ser aceptado para poder proceder el registro
  112.  *
  113.  * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  114.  * @return [none]
  115.  */
  116.     public function registro(){
  117.  
  118.         $data['errors'] = '';
  119.  
  120.         if($this->input->post('accion') == 'registro')
  121.         {
  122.             // validaciones
  123.             $this->form_validation->set_rules('tipoCuenta','tipoCuenta','required');
  124.             $this->form_validation->set_rules('nombre','nombre','required|max_length[12]|alpha_numeric');
  125.             $this->form_validation->set_rules('apellido','apellido','required|max_length[12]|alpha_numeric');
  126.             $this->form_validation->set_rules('email','email','required|max_length[40]|valid_email');
  127.             $this->form_validation->set_rules('password','password','required|max_length[12]|alpha_numeric');
  128.             $this->form_validation->set_rules('password2','password2','required|max_length[12]|alpha_numeric|matches[password]');
  129.             $this->form_validation->set_rules('terms','terms','required');
  130.  
  131.             if($this->form_validation->run() === true){
  132.                
  133.                 $data = array('idtipo_usuario' => 3,
  134.                                 'tipoCuenta' => $this->input->post('tipoCuenta'),
  135.                                 'nombre'=> $this->input->post('nombre'),
  136.                                 'apellido'=> $this->input->post('apellido'),
  137.                                 'email'=> $this->input->post('email'),
  138.                                 'password'=> hash_encode($this->input->post('password'))
  139.                             );
  140.  
  141.                 // verificamos que el correo no exista en la bd
  142.                 if($this->cuenta_model->verificarEmail($this->input->post('email')) === false){
  143.                     $data['errors'] =  getMessage('mail_exists');
  144.                 }else{
  145.                     // registramos
  146.                     $id = $this->cuenta_model->registrar($data);
  147.  
  148.                     // enviamos link de verificacion de correo electronico
  149.                     $this->notificarConfirmacion($this->input->post('email'),$id);
  150.                 }
  151.             }else{
  152.                 $data['errors'] = getMessage('val_errors');
  153.                 //$data['errors']= validation_errors();
  154.             }
  155.         }
  156.         $this->load->view('front/cuenta/registro',$data);
  157.     }
  158.  
  159.  
  160.     /**
  161.      * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  162.      *
  163.      * Funcion de inicio de sesion del usuario, una vez validado los datos que ingreso el usuario por el formulario estos son
  164.      * comparados con los datos de la base de datos, en el caso de que sean iguales se procede a insertar datos estrategicos
  165.      * en una variable $_SESSION para despues utilizarlos.
  166.      *
  167.      * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  168.      * @return [type] [description]
  169.      */
  170.     public function login()
  171.     {
  172.             $data['errors']='';
  173.  
  174.             // validaciones
  175.             $this->form_validation->set_rules('email','email','required|max_length[50]|valid_email');
  176.             $this->form_validation->set_rules('password','password','required|max_length[15]|alpha_numeric');
  177.  
  178.             if($this->input->post('accion') === 'login'){
  179.                 if($this->form_validation->run() === true){
  180.  
  181.                     if($this->cuenta_model->loginValidacion($this->_email, $this->password) === true){
  182.                             //id de usuario
  183.                             $_SESSION['email'] = (string) $this->_email;
  184.                            
  185.                             //privilegios de usuario
  186.                             $_SESSION['privilegio'] = (int) '3';
  187.                            
  188.                             // loggin
  189.                             $_SESSION['loggin'] = (bool) true;
  190.                            
  191.                            redirect('cuenta');
  192.  
  193.                     }else{
  194.                         // usuario o contraseña incorrecta
  195.                         $data['errors'] = getMessage('login_error');
  196.                     }
  197.  
  198.                 }else{
  199.                     // errores
  200.                     $data['errors'] = getMessage('val_errors');
  201.                 }
  202.             }
  203.  
  204.  
  205.             $this->load->view('front/cuenta/login',$data);
  206.        
  207.     }
  208.  
  209.     /**
  210.      * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  211.      *
  212.      * Esta funcion envia un correo electronico al usuario una vez que es registrado en la base de datos, el correo contiene
  213.      * su id que es asignado al momento de registrarse y su direccion de email.
  214.      * Por motivos de seguridad el correo electronico del usuario va encriptado en la url
  215.      *
  216.      * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  217.      * @param  [Direccion de email]
  218.      * @param  [id del usuario]
  219.      * @return [none]
  220.      */
  221.     public function notificarConfirmacion($email='roman.mardones@gmail.com',$id=18)
  222.     {
  223.         $this->load->helper('security');
  224.  
  225.         $hash_email = do_hash($email);
  226.  
  227.         VerificarEmail($email,$hash_email,$id);
  228.     }
  229.  
  230.     /**
  231.      * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  232.      *
  233.      * Funcion para validar correo electronico mediante envio de una url que contiene el id del usuario y su email, estos
  234.      * datos van encriptados al correo electronico, luego se validan los datos en base a los parametros de la url.
  235.      *
  236.      * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  237.      *  
  238.      * @param  [id usuario]
  239.      * @param  [email encriptada del usuario]
  240.      * @return [none]
  241.      */
  242.     public function verificar_email($id,$email)
  243.     {  
  244.         $this->load->helper('security');
  245.  
  246.         $user = $this->cuenta_model->get_user($id);
  247.  
  248.         if($user['validacion_email'] != 1){
  249.             if(do_hash($user['email']) == $email){
  250.                 $data['msg'] = '¡BIEN! Su correo electronico a sido validado exitosamente.';
  251.             }else{
  252.                 $data['msg'] = '¡ERROR! Link roto o corrupto, contacte a soporte.';
  253.             }
  254.         }else{
  255.             $data['msg'] = '¡ERROR! Usted ya confirmó su correo electronico';
  256.         }
  257.  
  258.         // aca va la vista
  259.        
  260.     }
  261.  
  262.  
  263.  
  264.     /**
  265.      * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  266.      *
  267.      * Este metodo es para desconectarse de la session.
  268.      *
  269.      * REQUIERE: requiere estar con una session activa para poder ser utilizada.
  270.      *
  271.      * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  272.      *
  273.      * @return [none]
  274.      */
  275.     public function logout()
  276.     {
  277.         // si la session esta activa que pase directamente al panel de control.
  278.         if ($this->session->userdata('loggin') != true || empty($this->session->userdata('email'))) {
  279.             redirect('login');
  280.         }
  281.  
  282.         $this->session->sess_destroy();
  283.  
  284.         redirect('comprar');
  285.     }
  286.  
  287.  
  288.  
  289.     /**
  290.      * [recuperar_psw description]
  291.      * @return [type] [description]
  292.      */
  293.     public function recuperarPassword(){
  294.         enviarEmail('roman.mardones@gmail.com','welcome');
  295.        
  296.        
  297.     }
  298.    
  299. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement