Skip to content

Instantly share code, notes, and snippets.

@bayareawebpro
Last active September 16, 2017 07:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bayareawebpro/94e28e7e498b376b6a1ca09583627c2d to your computer and use it in GitHub Desktop.
Save bayareawebpro/94e28e7e498b376b6a1ca09583627c2d to your computer and use it in GitHub Desktop.
Affiliate Tracker Middleware
<?php namespace App\Http\Middleware;
use App\Affiliate;
use App\Referral;
use Closure;
use Cookie;
class TrackAffiliates
{
/**
* Run the request filter.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$response = $next($request);
if($request->has('affiliate')) {
$response->withCookie(cookie('affiliate', $request->get('affiliate'), 10080));
}
if(request()->user() && $request->hasCookie('affiliate')){
$affiliate_tracking_id = request()->cookie('affiliate');
if(Affiliate::where('tracking_id',$affiliate_tracking_id)->exists()){
$affiliate = Affiliate::where('tracking_id',$affiliate_tracking_id)->first();
$referral = $affiliate->referrals()->firstOrCreate(array(
'user_id'=>request()->user()->id
));
$stats = (object) array();
$stats->url = request()->fullUrl();
$stats->ip = request()->ips();
$stats->user_agent = request()->userAgent();
$referral->request = $stats;
$referral->save();
$response->withCookie(Cookie::forget('affiliate'));
}
}
return $response;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment