Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * @Author: roman
- * @Date: 2018-01-09 03:06:33
- * @Last Modified by: casamac
- * @Last Modified time: 2018-03-01 17:37:33
- */
- defined('BASEPATH') OR exit('No direct script access allowed');
- class Cuenta extends CI_Controller {
- /**
- * [$email description]
- * @var [type]
- */
- protected $_email;
- /**
- * [$password description]
- * @var [type]
- */
- protected $password;
- private $mail;
- /**
- * [$xml description]
- * @var [type]
- */
- private $xml;
- public function __construct()
- {
- parent::__construct();
- //debug
- $this->output->enable_profiler(TRUE);
- /**
- * Load Helpers
- */
- $this->load->helper(array('xml','file','form','forms_helper','mail_helper'));
- /**
- * Load Librarys
- */
- $this->load->library(array('form_validation','encryption','xml_writer'));
- /**
- * load model admin
- */
- $this->load->model(array('cuenta_model','admin_model'));
- /**
- * creando objeto de la libreria
- * @var Xml_writer
- */
- $this->xml = new Xml_writer();
- /**
- * [$this->email description]
- * @var [type]
- */
- $this->_email = $this->input->post('email');
- /**
- * [$this->password description]
- * @var [type]
- */
- $this->password = $this->input->post('password');
- /**
- *
- */
- $this->mail = getConfigs('email_configs.xml');
- }
- /**
- * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- *
- * Pagina principal del panel de usuario llamado "cuenta".
- *
- * REQUIERE: Requiere tener una session activa, de lo contrario será redireccionado automaticamente al login.
- *
- * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- * @return [none]
- */
- public function index(){
- // si la session esta activa que pase directamente al panel de control.
- if ($this->session->userdata('loggin') != true || empty($this->session->userdata('email'))) {
- redirect('login');
- }
- echo 'cuenta';
- }
- /**
- * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- *
- * Esta funcion permite a los usuarios registrarse en nuestro sistema siempre cumplan los requisitos del formulario
- *
- * ### REQUIERE ###
- * # Tipo de cuenta : El tipo de cuenta puede ser persona o empresa
- * # Nombre : Nombre del usuario
- * # Apellido : Apellido del usuario
- * # Email : El email del usuario -> Este debe ser unico en la base de datos.
- * # Password: El Password del usuario -> Esta debe coincider con la Password2, ya que es validación de esta misma
- * # Terms : Son los terminos y condiciones de servicio -> Requiere ser aceptado para poder proceder el registro
- *
- * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- * @return [none]
- */
- public function registro(){
- $data['errors'] = '';
- if($this->input->post('accion') == 'registro')
- {
- // validaciones
- $this->form_validation->set_rules('tipoCuenta','tipoCuenta','required');
- $this->form_validation->set_rules('nombre','nombre','required|max_length[12]|alpha_numeric');
- $this->form_validation->set_rules('apellido','apellido','required|max_length[12]|alpha_numeric');
- $this->form_validation->set_rules('email','email','required|max_length[40]|valid_email');
- $this->form_validation->set_rules('password','password','required|max_length[12]|alpha_numeric');
- $this->form_validation->set_rules('password2','password2','required|max_length[12]|alpha_numeric|matches[password]');
- $this->form_validation->set_rules('terms','terms','required');
- if($this->form_validation->run() === true){
- $data = array('idtipo_usuario' => 3,
- 'tipoCuenta' => $this->input->post('tipoCuenta'),
- 'nombre'=> $this->input->post('nombre'),
- 'apellido'=> $this->input->post('apellido'),
- 'email'=> $this->input->post('email'),
- 'password'=> hash_encode($this->input->post('password'))
- );
- // verificamos que el correo no exista en la bd
- if($this->cuenta_model->verificarEmail($this->input->post('email')) === false){
- $data['errors'] = getMessage('mail_exists');
- }else{
- // registramos
- $id = $this->cuenta_model->registrar($data);
- // enviamos link de verificacion de correo electronico
- $this->notificarConfirmacion($this->input->post('email'),$id);
- }
- }else{
- $data['errors'] = getMessage('val_errors');
- //$data['errors']= validation_errors();
- }
- }
- $this->load->view('front/cuenta/registro',$data);
- }
- /**
- * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- *
- * Funcion de inicio de sesion del usuario, una vez validado los datos que ingreso el usuario por el formulario estos son
- * comparados con los datos de la base de datos, en el caso de que sean iguales se procede a insertar datos estrategicos
- * en una variable $_SESSION para despues utilizarlos.
- *
- * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- * @return [type] [description]
- */
- public function login()
- {
- $data['errors']='';
- // validaciones
- $this->form_validation->set_rules('email','email','required|max_length[50]|valid_email');
- $this->form_validation->set_rules('password','password','required|max_length[15]|alpha_numeric');
- if($this->input->post('accion') === 'login'){
- if($this->form_validation->run() === true){
- if($this->cuenta_model->loginValidacion($this->_email, $this->password) === true){
- //id de usuario
- $_SESSION['email'] = (string) $this->_email;
- //privilegios de usuario
- $_SESSION['privilegio'] = (int) '3';
- // loggin
- $_SESSION['loggin'] = (bool) true;
- redirect('cuenta');
- }else{
- // usuario o contraseña incorrecta
- $data['errors'] = getMessage('login_error');
- }
- }else{
- // errores
- $data['errors'] = getMessage('val_errors');
- }
- }
- $this->load->view('front/cuenta/login',$data);
- }
- /**
- * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- *
- * Esta funcion envia un correo electronico al usuario una vez que es registrado en la base de datos, el correo contiene
- * su id que es asignado al momento de registrarse y su direccion de email.
- * Por motivos de seguridad el correo electronico del usuario va encriptado en la url
- *
- * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- * @param [Direccion de email]
- * @param [id del usuario]
- * @return [none]
- */
- public function notificarConfirmacion($email='roman.mardones@gmail.com',$id=18)
- {
- $this->load->helper('security');
- $hash_email = do_hash($email);
- VerificarEmail($email,$hash_email,$id);
- }
- /**
- * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- *
- * Funcion para validar correo electronico mediante envio de una url que contiene el id del usuario y su email, estos
- * datos van encriptados al correo electronico, luego se validan los datos en base a los parametros de la url.
- *
- * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- *
- * @param [id usuario]
- * @param [email encriptada del usuario]
- * @return [none]
- */
- public function verificar_email($id,$email)
- {
- $this->load->helper('security');
- $user = $this->cuenta_model->get_user($id);
- if($user['validacion_email'] != 1){
- if(do_hash($user['email']) == $email){
- $data['msg'] = '¡BIEN! Su correo electronico a sido validado exitosamente.';
- }else{
- $data['msg'] = '¡ERROR! Link roto o corrupto, contacte a soporte.';
- }
- }else{
- $data['msg'] = '¡ERROR! Usted ya confirmó su correo electronico';
- }
- // aca va la vista
- }
- /**
- * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- *
- * Este metodo es para desconectarse de la session.
- *
- * REQUIERE: requiere estar con una session activa para poder ser utilizada.
- *
- * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- *
- * @return [none]
- */
- public function logout()
- {
- // si la session esta activa que pase directamente al panel de control.
- if ($this->session->userdata('loggin') != true || empty($this->session->userdata('email'))) {
- redirect('login');
- }
- $this->session->sess_destroy();
- redirect('comprar');
- }
- /**
- * [recuperar_psw description]
- * @return [type] [description]
- */
- public function recuperarPassword(){
- enviarEmail('roman.mardones@gmail.com','welcome');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement