effective-solutions/user-bundle

Effective Solutions (Pvt) Ltd. 用户包

3.2.5 2018-03-06 10:29 UTC

This package is not auto-updated.

Last update: 2020-08-12 15:06:30 UTC


README

安装

在命令行中使用以下命令安装Effective Solutions用户包

php composer.phar require effective-solutions/user-bundle

安装后,在您的 AppKernel.php 文件中添加以下内容

new EffectiveSolutions\UserBundle\EffectiveSolutionsUserBundle(),

app/config/routing.yml 文件中添加以下内容

effective_solutions_user:
    resource: "@EffectiveSolutionsUserBundle/Controller/"
    type:     annotation
    prefix:   /
    
logout:
    path: /logout

app/config/services.yml 文件中添加以下内容。

parameters:
    registration_default_role: < role metacode >

用法

  • 在您的实体文件夹中创建 User.php 文件并添加以下代码。
<?php

namespace AppBundle\Entity;

use EffectiveSolutions\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

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

    /**
     * @ORM\ManyToOne(targetEntity="Role")
     * @ORM\JoinColumn(name="role_id", referencedColumnName="id")
     */
    private $role;

    /**
     * Set role
     *
     * @param \AppBundle\Entity\Role $role
     * @return User
     */
    public function setRole(\AppBundle\Entity\Role $role = null)
    {
        $this->role = $role;

        return $this;
    }

    /**
     * Get role
     *
     * @return \AppBundle\Entity\Role 
     */
    public function getRole()
    {
        return $this->role;
    }

    public function getRoles()
    {
        return array($this->getRole()->getMetacode());
    }
}

  • 在您的实体文件夹中创建 Role.php 文件并添加以下代码。
<?php

namespace AppBundle\Entity;

use EffectiveSolutions\UserBundle\Model\Role as BaseRole;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="AppBundle\Repository\RoleRepository")
 * @ORM\Table(name="role")
 */
class Role extends BaseRole
{
}
  • 在您的存储库文件夹中创建 UserRepository.php 文件并添加以下代码。
<?php

namespace AppBundle\Repository;

use Doctrine\ORM\EntityRepository;
use Symfony\Bridge\Doctrine\Security\User\UserLoaderInterface;

/**
 * UserRepository
 *
 * Add your own custom repository methods below.
 */
class UserRepository extends EntityRepository implements UserLoaderInterface
{
    public function loadUserByUsername($username)
    {
        return $this->createQueryBuilder('u')
            ->where('u.username = :username OR u.email = :email')
            ->setParameter('username', $username)
            ->setParameter('email', $username)
            ->getQuery()
            ->getOneOrNullResult();
    }
}
  • 在您的存储库文件夹中创建 RoleRepository.php 文件并添加以下代码。
<?php

namespace AppBundle\Repository;

use Doctrine\ORM\EntityRepository;

/**
 * RoleRepository
 *
 * Add your own custom repository methods below.
 */
class RoleRepository extends EntityRepository
{
}
  • 运行以下命令以在您的数据库中创建用户和角色表

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

  • 运行以下命令安装资源

php app/console asset:install

  • 在您的 app/config/security.yml 文件中添加以下代码
security:
    encoders:
        AppBundle\Entity\User:
            algorithm: bcrypt
            cost: 12

#    role_hierarchy:
#        ROLE_ADMIN: ROLE_USER

    providers:
        our_db_provider:
            entity:
                class: AppBundle:User

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
            pattern:    ^/
            anonymous: ~
            http_basic: ~
            provider: our_db_provider
            form_login:
                login_path: login
                check_path: login
                csrf_token_generator: security.csrf.token_manager
#                default_target_path: redirect
            logout:
                path:   /logout
                target: /
            remember_me:
                secret:   '%secret%'
                lifetime: 604800 # 1 week in seconds
                path:     /

    access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/, roles: ROLE_ADMIN }
  • 然后访问 https:///YourAppName/web/app_dev.php/login

感谢您使用Effective Solutions用户包。由 EffectiveSolutions.lk 提供支持