'required|email', 'password' => 'required|min:4|max:16' ) ); if (!$validator->fails()) { // TODO: Remove this for production environment // if (App::environment('local', 'staging')) { // return $this->processLogin(); // } try { // User input $username = str_replace('@upr.edu', '', Input::get('email')); $password = Input::get('password'); // Radius connection info $radius = radius_auth_open(); $radius_ip = '136.145.223.27'; $radius_secret = '8reC6ujatArecHe63spech5Wa'; radius_add_server($radius, $radius_ip, 1812, $radius_secret, 5, 3); // Create radius request and add params radius_create_request($radius, RADIUS_ACCESS_REQUEST); radius_put_attr($radius, RADIUS_USER_NAME, $username); radius_put_attr($radius, RADIUS_USER_PASSWORD, $password); $result = radius_send_request($radius); switch ($result) { // Credentials are correct case RADIUS_ACCESS_ACCEPT: return $this->processLogin(); break; case RADIUS_ACCESS_REJECT: // If email is a workshop email, if (Input::get('email') == 'taller1@upr.edu' && Input::get('password') == 'o34eAvaluo') { return $this->processLogin(); } // Tell user credentials are incorrect Session::flash('status', 'danger'); Session::flash('message', 'Incorrect email/password combination.'); return Redirect::action('AuthController@showLogin'); break; // Throw exception in case of any other error default: throw new Exception("-", 1); break; } } catch (Exception $e) { // Tell user access is denied and return to login page. Session::flash('status', 'danger'); Session::flash('message', 'An error occurred while connecting to the authentication service. Please try again later. If the problem persists, contact the help desk at x. 80400 or the administrators at oeae.uprrp.edu.'); return Redirect::action('AuthController@showLogin'); } return Redirect::route('login'); } else { /** Prepare error message */ $message = ''; Session::flash('status', 'danger'); Session::flash('message', $message); return Redirect::action('AuthController@showLogin'); } } private function processLogin() { // Get user record in OLAS database, if it exists $user = User::where('email', Input::get('email'))->first(); // If user exists in the database AND is authorized if ($user and $user->has_access) { // Log in user and direct to main page Auth::login($user); // Get last visible AND running term; $semester = Semester::where('is_visible', 1) ->where('start', '<=', date('Y-m-d H:i:s')) ->orderBy('start', 'DESC') ->first(); Session::forget('current_semester'); Session::put('current_semester', $semester); // Push into semesters variable $semesters_id = array(); $semesters_info = array(); $semesters_ids[] = $semester->id; $semesters_info[] = $semester->name . ' (' . $semester->code . ')'; // Put semesters information arrays into Session Session::forget('semesters_ids'); Session::put('semesters_ids', $semesters_ids); Session::forget('semesters_info'); Session::put('semesters_info', $semesters_info); // Record last login User::where('id', Auth::user()->id) ->update( array( 'last_login' => DB::raw('NOW()') ) ); if (!Auth::user()->office_phone) { return Redirect::action('UsersController@edit'); } // Redirect depending on user switch (Auth::user()->role) { case 1: return Redirect::intended('administrator'); break; case 2: return Redirect::intended('school-coordinator'); break; case 3: return Redirect::intended('program-coordinator'); break; case 4: return Redirect::intended('professor'); break; } } else { // Tell user access is denied and return to login page. Session::flash('status', 'danger'); Session::flash('message', 'You are not an authorized user. You may request access by contacting oeae.uprrp.edu.'); return Redirect::action('AuthController@showLogin'); } } public function logout() { Auth::logout(); Session::flush(); return Redirect::action('AuthController@showLogin'); } }