I'm trying to write a .blade.php view that does:
- Show the user profile information
- If the user is banned, show a message "User is banned." instead.
-
If you're logged in as an ADMIN (that is, if you have the permission 'admin'), instead of showing that message, show the user profile with an extra information saying the user is banned.
Here is my view:
@extends ('layout.main') @section('content') @if(! $throttle->banned==1) {{ $user->username }} <br> {{ $user->summoner_name }}<br><br> {{ $user->bio }}<br> {{ $user->punishments }}<br> @else {{ "This user is banned." }} @if(Sentry::getUser()->hasAccess('admin')) {{ $user->username }} <br> {{ $user->summoner_name }}<br><br> {{ $user->bio }}<br> {{ $user->punishments }}<br> {{ ($throttle->banned == 1) ? "User is banned." : '' }}<br> {{ $throttle->getSuspensionTime() }}<br> @endif @endif @stop
And my controller:
<?php
class ProfileController extends BaseController {
public function main($username) {
try {
$throttle = Sentry::findThrottlerByUserLogin($username);
$user = User::where('username','=',$username);
if($user->count()) {
$user = $user->first();
return View::make('profile.main')
->with('user',$user)
->with('throttle',$throttle);
} else {
return App::abort(404);
}
}
catch (Cartalyst\Sentry\Users\UserNotFoundException $e)
{
echo 'User not found.';
}
}
}
That said, I keep getting the error "Call to a member function hasAccess() on a non-object" on the debugger whenever I use
@if(Sentry::getUser()->hasAccess('admin'))
The syntax looks OK to me, so I really don't get why Sentry does not recognize it as an object. What could it be? Is there a simple solution?
Thanks in advance!