Я пытаюсь понять, как заблокировать пользователя от входа на мой сайт, если они не превышают определенный уровень разрешений. Я делаю свой сайт общедоступным, и как только кто-то регистрируется, ему предоставляется уровень разрешения «скамейка». Как только я принимаю пользователя и меняю уровень разрешений, они могут войти в систему. То, как я блокирую пользователей уровня «скамейки», – это перенаправление на индексную страницу (где они входят в систему). Тем не менее, я хочу показать какое-то предупреждение, которое всплывает, показывая сообщение, которое я создаю, а затем с самого начала не позволяю этому пользователю двигаться вперед.
Я не уверен, могу ли я сделать это с помощью проверки или нет. Что-то вроде, если этот пользователь пытается войти в систему, сценарий умирает, когда он видит, что уровень разрешений находится в группе «скамейка». Затем появляется предупреждение о появлении сообщения.
Так я разрешаю пользователю входить в систему.
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 = '<span class="signinpanel">' . "The information you entered did not match our records." . '</span>'; } } else { foreach($validation->errors() as $error) { echo $error, '<br>'; } } }
Затем я перенаправляю это …
if($user->hasPermission('bench')) { header("Location: http://sundayfundayleague.com"); die(); }
Это мой код разрешений:
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; }
Как я могу это сделать?
ОБНОВИТЬ:
Я не уверен, что делаю это правильно. Я делаю умираю вместе с ним и покажу сообщение об ошибке, которое я придумал.
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 = '<span class="signinpanel">' . "The information you entered did not match our records." . '</span>'; } } else { foreach($validation->errors() as $error) { echo $error, '<br>'; } } }