PHPZlc & Symfony PHPZlc & Symfony
  • 首页 
  • 文档 
  • 博客 
  • 联系我们 
  • 登录 注册
PHPZlc & Symfony PHPZlc & Symfony
登录 注册
PHPZlc & Symfony
  • 首页 
  • 文档 
  • 博客 
  • 联系我们 
  • AdminBusiness
loading
  1. 首页
  2. 文档
  3. 业务组件
  4. AdminBusiness
更新于 2023-03-21 12:03:59
  • AdminBusiness

后台开发(admin-business)

编辑

功能介绍

提供管理系统基础功能(首页、登录、退出登录、修改密码、创建角色分配权限等管理系统基础功能)

源码地址

phpzlc/admin-business

安装

composer require phpzlc/admin-business

php bin/console phpzlc:flex:install upload-business

安装完成后执行更新数据库的操作

php bin/console doctrine:schema:update --force

配置

路由配置

在项目根路由中config/routes.yaml引入

admin:
    resource: "routing/admin/admin.yaml"
    prefix:   /admin
    options:
        platform: admin

upload:
    resource: "routing/upload/upload.yaml"
    prefix:   /upload

captcha:
    resource: "routing/captcha/captcha.yaml"
    prefix:   /captcha

代码配置

平台注册

文件位置: config/packages/phpzlc-platform-business.yaml

# 平台 - 后台
platform_admin: admin

# 全部平台
platform_array:
    '%platform_admin%': 后台

操作主体注册

文件位置: config/packages/phpzlc-auth-business.yaml

# 操作主体- 管理员
subject_admin: admin

# 全部操作主体
subject_array:
    '%subject_admin%': 管理员

登录标记代码注入

文件位置: src/Business/AuthBusiness/AuthTag.php

/**
* 设置Session标记
* 
* @param ContainerInterface $container
* @param UserAuth $userAuth
* @return string
* @throws Exception
*/
public static function set(ContainerInterface $container, UserAuth $userAuth)
{
    $tag = '';

    switch (PlatformClass::getPlatform()){
        case $container->get('parameter_bag')->get('platform_admin'):
            $container->get('session')->set(PlatformClass::getPlatform() . $container->get('parameter_bag')->get('login_tag_session_name'), $userAuth->getId());
            break;
        default:
            throw new \Exception('来源溢出');
    }

    return $tag;
}

/**
* 获取Session标记内容
* 
* @param ContainerInterface $container
* @return UserAuth|false|object
* @throws Exception
*/
public static function get(ContainerInterface $container)
{
    $userAuth = null;

    /**
    * @var ManagerRegistry $doctrine
    */
    $doctrine = $container->get('doctrine');

    switch (PlatformClass::getPlatform()){
        case $container->get('parameter_bag')->get('platform_admin'):
            $user_auth_id = $container->get('session')->get(PlatformClass::getPlatform() . $container->get('parameter_bag')->get('login_tag_session_name'));
            $userAuth = $doctrine->getRepository(UserAuth::class)->find($user_auth_id);
            break;
        default:
            throw new \Exception('来源溢出');
    }

    return $userAuth;
}

/**
* 移除Session标记
* 
* @param ContainerInterface $container
* @throws Exception
*/
public static function remove(ContainerInterface $container)
{
    switch (PlatformClass::getPlatform()){
        case $container->get('parameter_bag')->get('platform_admin'):
            $container->get('session')->remove(PlatformClass::getPlatform() . $container->get('parameter_bag')->get('login_tag_session_name'));
            break;
        default:
            throw new \Exception('来源溢出');
    }
}

登录类引入

文件位置: src/Business/AuthBusiness/UserAuthBusiness.php

use App\Business\AdminBusiness\AdminAuth;

/**
* 获取指定平台端方法
*
* @param $subject_type
* @return AdminAuth|mixed
* @throws Exception
*/
private function getUserAuthService($subject_type)
{
    if(!array_key_exists($subject_type, $this->subjectAuthCaches)){
        switch ($subject_type){
            case $this->getParameter('subject_admin'):
                $this->subjectAuthCaches[$subject_type] = new AdminAuth($this->container);
                break;     
            default:
                throw new \Exception('授权登录权限不存在');
        }
    }
        
    return $this->subjectAuthCaches[$subject_type];
}

README.md 补充

php.ini

upload_max_filesize = 1024M
post_max_size = 1024M

nginx

client_max_body_size     1024M;
proxy_connect_timeout    9000s;
proxy_read_timeout       9000s;
proxy_send_timeout       9000s;

文件夹权限

sudo chmod -R 755 public/upload/

后台超级管理员账号密码

aitime 123456

仪表盘

如何编写仪表盘页面

列表页

如何编写列表页

新增/编辑页面

如何编写新建/编辑页

权限功能

本框架提供一套标准化的权限功能RBAC。

  1. 对路由进行权限校验

    需要在AdminController层中调用此方法

    //对路由进行权限校验
    if(!$this->rbac->canRoute($this->get('request_stack')->getCurrentRequest()->get('_route'))){
        if(self::getReturnType() == SystemBaseController::RETURN_HIDE_RESOURCE){
             return Responses::error('权限不足');
        }else{
             return $this->render('@PHPZlcAdmin/page/no_permission.html.twig');
        }
    }
    
  2. 对菜单进行权限筛选

    //对菜单进行权限筛选
    $this->adminStrategy->setMenus($this->rbac->menusFilter($this->adminStrategy->getMenus()));
    
  3. 判断是否拥有权限

    $rbac = new RBACBusiness(ContainerInterface $container, $platform = null);
    $rbac->setIsSuper($isSuper);
    $rbac->can($permissions, $model = 'and', UserAuth $userAuth = null);
    
支持
Symfony 5.4
CONTENTS
Links
gitee github composer
视频教程
Leaf Illustration

皖ICP备17026196号-3 34020302000197号

© All Rights Reserved by PHPZlc