后台开发(admin-business)

2020-11-05  by  

功能介绍

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

源码地址

phpzlc/admin-business

安装

composer require phpzlc/admin-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('App:UserAuth')->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 777 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);
    

找到错别字了?本文档有什么问题么?分叉并编辑 它 !

CJayhe

谢谢您的赞赏~

使用微信扫描二维码完成支付

抱歉弹框打扰,系统检测到您今日累计浏览时长已达120秒。如果我们的项目对您有帮助,在 关闭窗口之前,希望能够阅读弹框内容,帮助我们变得更好。

一个成功的项目,实现功能只是基础,合理的架构,对资源的调度能力才是灵魂。 PHPZlc, 致力于在Symfony的基础上提供“知行合一”的项目开发方案。

如果您有关切问题和好的想法:

提交

如果您想帮助我们,可以为我们点亮星星,也可以提供资金支持。

您还可以通过以下渠道,关注我们,获取最新的框架动态,帮助项目获取人气,扩大影响力。

开源伙伴招募:https://phpzlc.com/blog/11.html

由于我们无法获取您是否已经是我们的会员了,所以此弹框每日都会弹出一次,关闭