2017-04-19 8 views
2

TYPO3 CMS 8.7.0のために自分のエクステンションにBEユーザを作成しました。TYPO3 CMSエクステンションでパスワードを持つBEユーザを追加する

リポジトリ注入:ActionControllerの

/** 
* beUserRepository 
* 
* @var \TYPO3\CMS\Extbase\Domain\Repository\BackendUserRepository 
* @inject 
*/ 
protected $beUserRepository = null; 

パート:

$beuser = new \TYPO3\CMS\Extbase\Domain\Model\BackendUser(); 
$beuser->setUserName($username); 
$beuser->setEmail($email); 
$beuser->setRealName($realname); 
$this->beUserRepository->add($beuser); 

これは正常に動作しますが、私はsetPassword()とFEのユーザーのためのようにパスワードを追加することはできません。そこに着く方法はありますか、セキュリティ上の理由からBEユーザパスワードを設定/変更することは制限されていますか?

答えて

1

be_usersテーブルに新しいドメインモデルをマッピングその後

<?php 
namespace YourVendor\YourExtKey\Domain\Repository; 

class BackendUserRepository extends \TYPO3\CMS\Extbase\Domain\Repository\BackendUserRepository 
{ 
} 

独自のリポジトリを作成

あなたの拡張に

<?php 
namespace YourVendor\YourExtKey\Domain\Model; 

class BackendUser extends \TYPO3\CMS\Extbase\Domain\Model\BackendUser 
{ 
    /** 
    * @var string 
    */ 
    protected $password = ''; 

    /** 
    * Returns the password 
    * 
    * @return string 
    */ 
    public function getPassword() 
    { 
     return $this->password; 
    } 

    /** 
    * Sets the password 
    * 
    * @param string $password 
    * @return void 
    */ 
    public function setPassword($password) 
    { 
     $this->password = (string)$password; 
    } 
} 
を独自のBackendUserモデルを作成します。

plugin.tx_yourExtKey { 
    persistence { 
     classes { 
      YourVendor\YourExtKey\Domain\Model\BackendUser { 
       mapping { 
        tableName = be_users 
       } 
      } 
     } 
    } 
} 

は、あなたのコントローラーを更新新しいリポジトリを使用する

/** 
* beUserRepository 
* 
* @var \YourVendor\YourExtKey\Domain\Repository\BackendUserRepository 
* @inject 
*/ 
protected $beUserRepository; 
戻るあなたのアクションで

$beUser = new \YourVendor\YourExtKey\Domain\Model\BackendUser(); 
$saltFactory = \TYPO3\CMS\Saltedpasswords\Salt\SaltFactory::getSaltingInstance('', 'BE'); 
$beUser->setPassword($saltFactory->getHashedPassword($newPassword)); 
+0

TYPO3 \ CMS \ Extbase \ Domain \ Model \ BackendUser :: setPassword() - あなたの '$ user'定義で行を追加できますか? – Pete

+0

こんにちはピート。それは別の話です。私は私の答えを更新しました。それが役に立てば幸い。 – froemken

1

TYPO3\CMS\Extbase\Domain\Model\BackendUserパスワードプロパティを持っていないので、あなたは、モデルを拡張せずにパスワードを設定することはできません。最も簡単な方法は、TYPO3\CMS\Extbase\Domain\Model\BackendUserを拡張して独自のBackendUserモデルを作成し、TSでマッピングを設定する場合です。ゲッター/セッターとリポジトリを持つ$passwordプロパティが必要です。

+0

TYPO3データハンドラの場合は正しいですが、extbaseには独自の永続性があります。 「パスワード」という単語でextbaseを再帰的に検索してください。いくつかのセッターしか見つかりませんが、パスワードはDataMapperに結果がありません。したがって、ハッシュはextbaseコンテキストで自動的には行われません。 – froemken

+0

あなたはハッシュについて正しいです。私はそれをバックエンドのためにもはや必要としなかったeval = md5という古い4.5より前のTCA設定と間違わなければならない –

関連する問題