在授予访问权限之前,不允许用户继续登录


Not allowing a user to move forward to logging in until given access

我正在尝试弄清楚如何拒绝用户登录我的网站,除非他们获得批准。我将我的网站设为私有,仅对我允许加入的人开放。任何人都可以注册,但一旦注册,他们就会获得 1 或"板凳"的权限/组级别。一旦我接受用户并更改权限级别,他们就可以登录了。

截至目前,我正在停止级别/组 1 用户并重定向回索引页面(他们登录的地方)。但是,我根本不想让他们前进到下一页。原因是我想显示某种弹出警报,显示我创建的消息。

不确定我是否可以通过验证或我尝试的方式来做到这一点。我添加了我的登录代码,并尝试将我拥有的权限代码放在登录页面上,以尝试从一开始就停止它。基本上,如果用户尝试登录,脚本一旦看到权限级别在组"板凳"上就会死亡。然后显示弹出警报,说明原因。

我在这方面没有取得多大成功。我的组/权限级别具有名称和 ID。我尝试将两者放在这个单一的配额中,例如"板凳"和"1",但是两者都得到了相同的错误。

致命错误:在第 12 行的/home4/pfarley1/public_html/example.com/index.php 中的非对象上调用成员函数 hasPermission()

我正在尝试像这样登录它们...

<?php
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)
    ));
// added this line in
if($user->hasPermission('1')) {
        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>';
        }
    }
}
}
?>

我的用户权限代码..

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;
}

我做错了什么,还是有更好的方法

编辑:最后一个问题不够具体,所以我添加了信息,并且在我尝试执行此操作时对代码进行了修改。

第 12 行的$user是什么?

if($user->hasPermission('1')) {

错误消息非常明确。