Bloqueando um usuário de fazer login com um determinado nível de permissão e, em seguida, exibir um alerta para que eles saibam porque

Estou tentando descobrir como bloquear um usuário de iniciar session no meu site, a menos que estejam sobre um determinado nível de permissão. Estou tornando meu site público e, uma vez que alguém registra, recebem o nível de permissão ‘banco’. Depois de aceitar o usuário e alterar o nível de permissão, eles podem fazer o login. A maneira como eu bloqueio os usuários de nível de permissão ‘banco’ é com um redirecionamento para a página de índice (onde eles fazem login). No entanto, eu quero mostrar algum tipo de alerta que o pop-up exibe uma mensagem que eu crie e, desde o início, nem permita que esse usuário avance.

Não tenho certeza se posso fazer isso com validação ou não. Algo como se este usuário tente fazer login, o script morre uma vez que vê que o nível de permissão está no grupo ‘bench’. Então, um alerta pop exibe dizendo porquê.

É assim que eu permito ao usuário entrar.

if(Input::exists()) { if(Token::check(Input::get('token'))) { $validate = new Validate(); $validation = $validate->check($_POST, array( 'username' => array('required' => true), 'password' => array('required' => true) )); if($validation->passed()) { $user = new User(); $remember = (Input::get('remember') === 'on') ? true : false; $login = $user->login(Input::get('username'), Input::get('password'), $remember); if($login) { Redirect::to('userIndex.php'); } else { $tryagain = '' . "The information you entered did not match our records." . ''; } } else { foreach($validation->errors() as $error) { echo $error, '
'; } } }

Eu redireciono assim …

 if($user->hasPermission('bench')) { header("Location: http://sundayfundayleague.com"); die(); } 

Este é o meu código de permissions:

 public function hasPermission($key) { $group = $this->_db->get('groups', array('id', '=', $this->data()->group)); if($group->count()) { $permissions = json_decode($group->first()->permissions, true); if($permissions[$key] == true) { return true; } } return false; } 

Como posso fazer isso?

ATUALIZAR:

Não tenho a certeza de que estou fazendo isso corretamente. Eu estou morrendo com isso e mostrando uma mensagem de erro que compus.

 if(Input::exists()) { if(Token::check(Input::get('token'))) { $permissionError = "Your membership request has not been accepted yet."; $validate = new Validate(); $validation = $validate->check($_POST, array( 'username' => array('required' => true), 'password' => array('required' => true) if($user->hasPermission('bench')) { die($permissionError); )); if($validation->passed()) { $user = new User(); $remember = (Input::get('remember') === 'on') ? true : false; $login = $user->login(Input::get('username'), Input::get('password'), $remember); if($login) { Redirect::to('userIndex.php'); } else { $tryagain = '' . "The information you entered did not match our records." . ''; } } else { foreach($validation->errors() as $error) { echo $error, '
'; } } }