如何管理分层明智的资源许可?

时间:2019-05-25 05:39:47

标签: php mysql laravel

我正在构建一个自定义Web应用程序,这里我具有指定功能,每个员工都会有一个指定(这是我的指定https://prnt.sc/nt3ioj的示例外观)

我的要求在这里显示:

  1. 主席(来自我的样本名称)将能够访问其子名称的资源

  2. 经理将能够访问其子代名称的资源(IT和技术经理主管)

  3. 技术经理的指定只有其资源访问权限,因为他没有任何儿童的指定
  4. 以此类推。...

我需要针对此问题的优化解决方案。

预先感谢

1 个答案:

答案 0 :(得分:0)

我在一个项目中也遇到了类似的情况。我要做的是创建一个Laravel Middelware,它使用递归函数为我和我的孩子们提供ID。

这是我的中间件文件的代码

namespace App\Http\Middleware;

use Auth;
use Closure;
use App\Models\Nomina\Empleado;

class Subordinados
{
    protected $subordinates = [];

    public function handle($request, Closure $next)
    {
        $this->recursiveSearch(Auth::id());
        $request->request->add(['subordinados' => $this->subordinates]);
        return $next($request);
    }

    private function recursiveSearch($aUserId)
    {
        $empleados = Empleado::where('superiorid', $aUserId)->select('empleadoid')->get();
        foreach ($empleados as $empleado) {
            $this->recursiveSearch($empleado->empleadoid);
            $this->subordinates[] = $empleado->empleadoid;
        }
    }
}

将此中间件添加到路由时,我将能够在控制器上执行以下操作:

function index(Request $request) {
    Empleado::whereIn('empleadoid', $request->subordinados);
}

只会显示我和我的孩子们的身份证。

希望有帮助!