2014-03-04 87 views
0

我在我的项目中使用symfony2,我有一个实体员工,包括emlpolyee的所有信息,以及登录到他的会话的用户名和密码。我想创建一个安全的认证给员工,但是当我检查FOS Userbundle和SonataUserBundle的文档时,我发现我应该创建一个包含新用户名和密码的新实体USER。但我想使用存储在实体员工中的用户名和密码。这是我的实体: employee.php用户安全认证symfony2

class employee 
{ 

private $codeEmployee; 

////// 


private $username; 


private $password; 



public function getCodeEmployee() 
{ 
    return $this->codeEmployee; 
} 

///// 


public function setusername($username) 
{ 
    $this->username = $username; 

    return $this; 
} 


public function getusername() 
{ 
    return $this->username; 
} 


public function setPassword($password) 
{ 
    $this->password = $password; 

    return $this; 
} 


public function getPassword() 
{ 
    return $this->password; 
} 

//////// 

}

如何做到这一点?

回答

0

official documentation解释了这样做的过程。

你的员工类必须扩展底座用户等级:

<?php 

namespace Foo\BarBundle\Entity; 

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

/** 
* @ORM\Entity 
* @ORM\Table(name="employees") 
*/ 
class Employee extends BaseUser 
{ 

    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\Column(type="string", length=255) 
    */ 
    protected $codeEmployee; 

    // Optional 
    public function __construct() 
    { 
     parent::__construct(); 
     // your own logic 
    } 

    public function getCodeEmployee() 
    { 
     return $this->codeEmployee; 
    } 

    public function setCodeEmployee($codeEmployee) 
    { 
     $this->codeEmployee = $codeEmployee; 
     return $this; 
    } 

} 

不要忘记配置FOSUserBundle选择你的用户等级:

# app/config/config.yml 
fos_user: 
    db_driver: orm 
    firewall_name: main 
    user_class: Foo\BarBundle\Entity\Employee 

配置的其余部分(security.yml文件,FOSUserBundle路由文件和其他要启动的命令)的解释是documentation

documentation也解释了如何扩展用户实体并覆盖表单。

+0

但在雇员实体我有一个字符串id是codeEmployee,我没有构造函数。 – user3309231

+0

所以构造函数是可选的。你必须将你的codeEmployee声明为一个Column。我编辑我的答案。 – ncrocfer