likeadmin php 版 ,想加一个机构表institution,然后给每个管理员绑定一个机构 Id(institution_id),每个机构管理登录只能看到该机构下的信息,怎么改造啊?
likeadmin php 版 ,想加一个机构表institution,然后给每个管理员绑定一个机构 Id(institution_id),每个机构管理登录只能看到该机构下的信息,怎么改造啊?
likeadmin php 版 ,想加一个机构表institution,然后给每个管理员绑定一个机构 Id(institution_id),每个机构管理登录只能看到该机构下的信息,怎么改造啊?

用户545179374
01月09日
|
浏览 25
在 LikeAdmin PHP 版中实现机构隔离,可按以下步骤改造:
1. 数据库改造
- 新增
institution表(包含 id、name 等字段) - 在
admin表添加institution_id字段(INT,索引) - 在所有需要隔离的业务表添加
institution_id字段
2. 代码层改造
复制代码
// 在管理员登录成功后,将 institution_id 存入 session
Session::set('admin_institution_id', $admin['institution_id']);
// 创建基础查询 Trait
trait InstitutionScope {
public function scopeInstitution($query) {
$institutionId = Session::get('admin_institution_id');
if ($institutionId) {
return $query->where('institution_id', $institutionId);
}
return $query;
}
}
// 在模型中使用
class UserModel extends Model {
use InstitutionScope;
public function getList() {
return $this->institution()->select();
}
}
3. 权限中间件增强
复制代码
// 在权限验证中间件中增加机构校验
public function handle($request, Closure $next) {
$adminInstitutionId = Session::get('admin_institution_id');
$targetInstitutionId = $request->param('institution_id');
if ($targetInstitutionId && $adminInstitutionId != $targetInstitutionId) {
return json(['code' => 403, 'msg' => '无权限访问该机构数据']);
}
return $next($request);
}
4. 后台管理调整
- 管理员列表增加机构筛选
- 创建/编辑管理员时分配机构
- 根据登录管理员机构动态过滤下拉选项
关键点:
- 超级管理员可查看所有机构(需特殊处理)
- 涉及关联查询时需联表过滤
- 数据导出/导入需包含机构标识
如需继续排查,请点击下方【🔍追问按钮】提交补充信息
我要提问
复制内容
分享给好友
AI编程问答网 免责声明:
以上内容除特别注明外均来源于网友提问,AI编程问答网回答,权益归原著者所有;
