<?php

/*
|--------------------------------------------------------------------------
| Application & Route Filters
|--------------------------------------------------------------------------
|
| Below you will find the "before" and "after" events for the application
| which may be used to do any work before or after a request into your
| application. Here you may also register your custom route filters.
|
*/

App::before(function($request)
{
	/*if (!Request::secure()) {
        return Redirect::secure(Request::path());
    }*/
});


App::after(function($request, $response)
{
	//
});

/*
|--------------------------------------------------------------------------
| Authentication Filters
|--------------------------------------------------------------------------
|
| The following filters are used to verify that the user of the current
| session is logged into this application. The "basic" filter easily
| integrates HTTP Basic authentication for quick, simple checking.
|
*/

Route::filter('auth', function()
{

	if (Auth::guest()) {
        if (Request::ajax()) {
            return json_encode(['content' => 'login']);
        } else {
            return Redirect::guest('/');
        }
    };
});

Route::filter('user-auth', function()
{

    if (Auth::guest()) {
        if (Request::ajax()) {
            return json_encode(['content' => 'login']);
        } else {
            return Redirect::guest('/');
        }
    };
    /**
     * User is login we need to know if user has getstarted or not
     */
    if (Config::get('user-getstarted')) {
        if (Auth::user()->fully_started != 1) {
            return \Redirect::route('user.getstarted');
        }
    }

    //use here to update online status of this user
    Auth::user()->updateOnline();
});

Route::filter('maintenance', function() {
    if (Config::get('maintenance-mode', 0)) {
        return Theme::section('maintenance.mode');
    }
});


Route::filter('admincp-auth', function() {
    if (Auth::guest()) return Redirect::route('admincp-login');

    if (!Auth::user()->isAdmin()) return Redirect::route('admincp-login');


});


Route::filter('auth.basic', function()
{
	return Auth::basic();
});

/*
|--------------------------------------------------------------------------
| Guest Filter
|--------------------------------------------------------------------------
|
| The "guest" filter is the counterpart of the authentication filters as
| it simply checks that the current user is not logged in. A redirect
| response will be issued if they are, which you may freely change.
|
*/

Route::filter('guest', function()
{
	if (Auth::check()) return Redirect::to('/');
});

/*
|--------------------------------------------------------------------------
| CSRF Protection Filter
|--------------------------------------------------------------------------
|
| The CSRF filter is responsible for protecting your application against
| cross-site request forgery attacks. If this special token in a user
| session does not match the one given in this request, we'll bail.
|
*/

Route::filter('csrf', function()
{
	if (Session::token() != Input::get('_token'))
	{
		throw new Illuminate\Session\TokenMismatchException;
	}
});

/**
 * Validator rules
 */
Validator::extend('slug', function($attr, $value, $param) {
   $slug = Str::slug($value);

    if (strlen($value) != strlen($slug) or empty($slug)) return false;

    return true;
});

