octopouce-mu/admin-bundle

管理包

安装: 282

依赖: 4

建议者: 0

安全: 0

星星: 0

关注者: 2

分支: 0

开放问题: 0

语言:CSS

类型:symfony-bundle

v1.0.9 2018-12-06 12:15 UTC

This package is auto-updated.

Last update: 2024-09-29 04:49:44 UTC


README

先决条件

本包版本需要 Symfony Flex (>= 4.0) 和 PHP 7。您想使用 Doctrine ORM 和 MySQL。

翻译

如果您希望使用本包提供的默认文本,请确保您已在配置中启用了翻译器。

# app/config/config.yml

framework:
    default_locale: '%locale%'
    translator:
        fallbacks: ['%locale%']
# app/config/services.yml

parameters:
    app_locales: en|fr
    locale: 'fr'

在 bundles.php 中添加供应商 KNP Doctrine Behaviors

<?php
...
Knp\DoctrineBehaviors\Bundle\DoctrineBehaviorsBundle::class => ['all' => true],

有关翻译的更多信息,请参阅 Symfony 文档

安装

  1. 使用 composer 下载 OctopouceAdminBundle
  2. 创建您的用户和邀请类
  3. 更新您的数据库模式
  4. 导入 OctopouceAdminBundle 路由
  5. 发布资产
  6. 配置文件安全
  7. 生成数据固定
  8. 配置 .env

步骤 1:使用 composer 下载 OctopouceAdminBundle

使用 composer 需求包

$ composer require octopouce-mu/admin-bundle

步骤 2:创建您的用户和邀请类

本包的目标是将一些 User 类持久化到数据库中。因此,您的第一个任务是创建应用程序的 UserInvitation 类。此类可以看起来和表现如您所愿:添加任何您认为有用的属性或方法。这是 您的 User & Invitation 类。

本包提供了基类,这些类已经映射到大多数字段,以便更容易创建实体。以下是您如何使用它的方法

  1. 扩展基类(如果您使用的是任何 doctrine 变体,则来自 Model 文件夹)
  2. 映射 id 字段。因为它是从父类继承的,所以它必须是受保护的。

注意

文档使用了一个名为 AppBundle 的包,根据 Symfony 最佳实践。然而,您当然可以将用户类放置在任何您想要的包中。

注意

如果您在用户类中覆盖了 __construct() 方法,请确保调用 parent::__construct(),因为基用户类依赖于它来初始化一些字段。

a) Doctrine ORM 用户类

如果您通过 Doctrine ORM 持久化用户,则您的 User 类应位于包的 Entity 命名空间中,如下所示以开始

<?php
// src/Entity/Account/User

namespace App\Entity\Account;

use Octopouce\AdminBundle\Entity\Account\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="account_user")
 */
class User extends BaseUser
{
    public function __construct()
    {
        parent::__construct();
    }
}

b) Doctrine ORM 邀请类

如果您通过 Doctrine ORM 持久化用户,则您的 Invitation 类应位于包的 Entity 命名空间中,如下所示以开始

<?php
// src/Entity/Account/Invitation

namespace App\Entity\Account;

use Octopouce\AdminBundle\Entity\Account\Invitation as BaseInvitation;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="account_invitation")
 */
class Invitation extends BaseInvitation
{
    public function __construct()
    {
        parent::__construct();
    }
}

步骤 3:更新您的数据库模式

对于 ORM,运行以下命令。

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

注意

如果出现“1071 指定键太长;最大键长度为 767 字节”的错误,请更改 doctrine 配置

# config/packages/doctrine.yaml

doctrine:
    dbal:
        charset: utf8
        default_table_options:
            charset: utf8
            collate: utf8_unicode_ci

步骤 4:导入 OctopouceAdminBundle 路由文件

现在您已激活并配置了包,剩下要做的就是导入 OctopouceAdminBundle 路由文件(如果 Symfony Flex 还未导入该文件)。

# config/routes/octopouce.yaml

_octopouce_admin:
    resource: "@OctopouceAdminBundle/Resources/config/routing/routing.yaml"

步骤 5:发布资产

$ php bin/console assets:install --symlink

步骤 6:配置文件安全

a. 为管理员和用户配置默认设置

# config/packages/security.yaml

security:
    encoders:
        App\Entity\Account\User: bcrypt

    providers:
        database_users:
            entity: { class: App\Entity\Account\User, property: email }

    role_hierarchy:
        ROLE_USER_ADMIN: ROLE_USER
        ROLE_ADMIN: ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    # https://symfony.com.cn/doc/current/security.html#initial-security-yml-setup-authentication
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        admin:
            pattern: ^/admin/
            
            # you can change your user checker here
            user_checker: Octopouce\AdminBundle\Security\UserChecker
            
            anonymous: true
            form_login:
                check_path: octopouce_admin_login_admin
                login_path: octopouce_admin_login_admin
                csrf_token_generator: security.csrf.token_manager
                failure_path: octopouce_admin_login_admin
                use_referer: true
                default_target_path: octopouce_admin_dashboard_index
            logout:
                path: octopouce_admin_logout
                target: octopouce_admin_login_admin
                
        # you can config user control in frontend here, exemple :
        #main:
        #    pattern: ^/
        #    user_checker: App\Security\UserChecker
        #    anonymous: true
        #    form_login:
        #        check_path: security_login
        #        login_path: security_login
        #        csrf_token_generator: security.csrf.token_manager
        #        failure_path: security_login
        #        use_referer: true
        #        default_target_path: account_index
        #    logout:
        #        path: security_logout
        #        target: homepage

    access_control:
        # this is a catch-all for the admin area
        # additional security lives in the controllers
        - { path: '^/admin/login', roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: '^/admin', roles: ROLE_ADMIN }

步骤 7:生成数据固定

本包需要默认数据才能工作,因此您可以在数据库中生成固定数据

$ php bin/console doctrine:fixtures:load

##步骤 8:配置 .env

为了完成OctopouceAdminBundle的配置,您可以在.env文件中配置包依赖。

其他包

您可以使用OctopouceAdminBundle添加以下包