/home/dvjjulio/softtrash/app/Http/Controllers/Auth/AuthController.php
<?php

namespace Trash\Http\Controllers\Auth;

use Validator;
use Trash\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
use Illuminate\Support\Facades\Auth;
use Trash\User;

class AuthController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Registration & Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users, as well as the
    | authentication of existing users. By default, this controller uses
    | a simple trait to add these behaviors. Why don't you explore it?
    |
    */

    use AuthenticatesAndRegistersUsers;

    /**
     * Create a new authentication controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest', ['except' => 'getLogout']);
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|max:255',
           // 'email' => 'required|email|max:255|unique:users',
            'password' => 'required|confirmed|min:6',
        ]);
    }


    public function login()
    {
        if (\Auth::check()) {
            // Si está autenticado lo mandamos a la raíz donde estara el mensaje de bienvenida.
            return Redirect::to('index/null');
        }

        return \View::make('login');
    }

    public function login_movil()
    {
        if (\Auth::check()) {
            // Si está autenticado lo mandamos a la raíz donde estara el mensaje de bienvenida.
            return Redirect::to('movil.index');
        }

        return \View::make('movil.login');
    }

    // Recepcion de informacion de loguero
    public function authLogin()
    {
        $password =  md5(\Input::get('password'));
        $data = [
            'username' => \Input::get('username'),
            'password' => $password
        ];

        $remember = \Input::get('remember') == 'on' ? true : false;




         $login = User::where('username','=',\Input::get('username'))->where('password','=',$password)->where('tipo_usuario_id','=',1)->first();
         if($login != null ){
            $lifetime=600;
              $cookie_name = "user";
              $cookie_value = $login->nombre;
              setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
              $cookie_name = "id";
              $cookie_value = $login->id;
              setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
            return \Response::json(array('status'=>true,'message'=>'Inicio de sesion exitoso'),200);
        }else{
            return \Response::json(array('status'=>false,'message'=>'Usuario o contraseña incorrecta'),200);
        }

         /*if (\Auth::attempt($data, $remember))
        {
             return \Response::json(array('status'=>true,'message'=>'Inicio de sesion exitoso'),200);
        }

        return \Response::json(array('status'=>false,'message'=>'Usuario o contraseña incorrecta'),200);
        */
    }
    public function authLogin_movil()
    {
        $password =  md5(\Input::get('password'));
        $data = [
            'username' => \Input::get('username'),
            'password' => $password
        ];

        $remember = \Input::get('remember') == 'on' ? true : false;

         $login = User::where('username','=',\Input::get('username'))->where('password','=',$password)->first();
         if($login != null ){
            $lifetime=600;
              $cookie_name = "user";
              $cookie_value = $login->nombre;
              setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
              $cookie_name = "id";
              $cookie_value = $login->id;
              setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
            return \Response::json(array('status'=>true,'message'=>'Inicio de sesion exitoso'),200);
        }else{
            return \Response::json(array('status'=>false,'message'=>'Usuario o contraseña incorrecta'),200);
        }

         /*if (\Auth::attempt($data, $remember))
        {
             return \Response::json(array('status'=>true,'message'=>'Inicio de sesion exitoso'),200);
        }

        return \Response::json(array('status'=>false,'message'=>'Usuario o contraseña incorrecta'),200);
        */
    }

    // Cierre de session
    public function logout()
    {
        Auth::logout();
        return \Redirect::to('login')->with('message', 'Sesión cerrada correctamente');
    }

    public function logout_movil()
    {
        Auth::logout();
        return \Redirect::to('/movil/login')->with('message', 'Sesión cerrada correctamente');
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return User
     */
    protected function create(array $data)
    {
        return User::create([
            'username' => $data['username'],
            'password' => bcrypt($data['password']),
        ]);
    }
    public function showLogin()
    {
        // Verificamos que el usuario no esté autenticado
        if (\Auth::check() )
        {
            return 'aka';
            //if( \Auth::user()->role != 7 ){
                // Si está autenticado lo mandamos a la raíz donde estara el mensaje de bienvenida.
                //return \Redirect::to('admin');
            //}

            //if( \Auth::user()->role == 7 ){

                //$id = \Auth::user()->id;
                //$query = 'SELECT b.alias FROM boards b, users u, board_users bu WHERE bu.user_id = u.id AND bu.board_id = b.id AND u.id = '. $id;

                //$alias = DB::select(DB::raw($query));

                //return \Redirect::to('boards/'. $alias[0]->alias);
            //}
        }

        // Mostramos la vista login.blade.php (Recordemos que .blade.php se omite.)
        return view('login');
    }
    public function postLogin_()
    {
        // Recibimos desde frontend los parametros de autenticacioón
        $userdata = array(
            'username' => \Input::get('username'),
            'password'=> md5(\Input::get('password'))
        );

        // Validamos los datos y además mandamos como un segundo parámetro la opción de recordar el usuario, en caso de corresponder, incia la sesion.
        if(\Auth::attempt($userdata, \Input::get('remember-me', 0)))
        {
           return 'asss';
            /* Una vez iniciada la sesion, valida el role del usuario, si es cliente (rol 7)*/
            if( \Auth::User()->tipo_usuario_id == 1 ){
                return 'akiii';

                // if( (Auth::user()->session == 1) && (Auth::user()->session_token != Session::get('_token')) ){

                //     return Redirect::to('duplicate-session');

                // } else{

                //     Auth::user()->session = 1;
                //     Auth::user()->session_token = Session::get('_token');
                //     Auth::user()->save();
                // }

                return \Redirect::to('admin');
            }else{ /* En caso de no corresponder, */
                return 'akaa';
                // if( (Auth::user()->session == 1) && (Auth::user()->session_token != Session::get('_token')) ){

                //     return Redirect::to('duplicate-session');

                // } else{

                //     Auth::user()->session = 1;
                //     Auth::user()->session_token = Session::get('_token');
                //     Auth::user()->save();
                // }

                /*$id = \Auth::user()->id;
                $query = 'SELECT b.alias FROM boards b, users u, board_users bu WHERE bu.user_id = u.id AND bu.board_id = b.id AND u.id = '. $id;

                $alias = DB::select(DB::raw($query));

                return \Redirect::to('boards/'. $alias[0]->alias);*/
            }

        }
        // En caso de que la autenticación haya fallado manda un mensaje al formulario de login y también regresamos los valores enviados con withInput().
        return \Redirect::to('login')
                    ->with('mensaje_error', 'Tus datos son incorrectos')
                    ->withInput();
    }
    public function logOut_()
    {
        Auth::user()->session = 0;
        Auth::user()->save();
        Auth::logout();
        return Redirect::to('login')
                    ->with('mensaje_success', 'Tu sesión ha sido cerrada.');
    }

    public function duplicate(){

        if( Auth::check() ){

            $params = array(
                'name' => Auth::user()->id
            );

            Auth::logout();
        }else{

            $params = array(
                'name' => 0
            );
        }

        return View::make('duplicated', $params);

    }

    public function closeDuplicated(){

        $id = Input::get('id');

        $user = User::find($id);

        $user->session = 0;

        if( $user->save() ){

            return Response::json(array('status' => true));

        }


    }
}