vendor/kzl/kzl-framework-bundle/src/Entity/LoginUser.php line 99

Open in your IDE?
  1. <?php
  2. namespace Kzl\FrameworkBundle\Entity;
  3. use ApiPlatform\Core\Annotation\ApiResource;
  4. use Doctrine\Common\PropertyChangedListener;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use Kzl\FrameworkBundle\Common\KzlFrameworkStatic;
  7. use Kzl\FrameworkBundle\Model\TenantAwareInterface;
  8. use Kzl\FrameworkBundle\Repository\LoginUserRepository;
  9. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  10. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  11. use Symfony\Component\Security\Core\User\UserInterface;
  12. use Symfony\Component\Validator\Constraints as Assert;
  13. use Symfony\Component\Validator\Mapping\ClassMetadata;
  14. /**
  15.  * LoginUser.
  16.  *
  17.  * @ORM\Table(name="login_user")
  18.  * @ORM\Entity
  19.  * @ApiResource(
  20.  *   normalizationContext={"groups" = {"read"}},
  21.  *   denormalizationContext={"groups" = {"write"}},
  22.  *   itemOperations={
  23.  *     "get",
  24.  *     "patch",
  25.  *     "delete",
  26.  *     "put",
  27.  *     "get_login_user_data" = {
  28.  *          "method" = "GET",
  29.  *          "path" = "/{subfolder}/custom/get_login_user_data/{id}",
  30.  *          "controller" = "Kzl\FrameworkBundle\Api\GetLoginUserDataController",
  31.  *          "read"=false,
  32.  *          "openapi_context" = {
  33.  *              "parameters" = {
  34.  *               {
  35.  *                 "name" = "id",
  36.  *                 "in" = "path",
  37.  *                 "type" = "string",
  38.  *                 "required" = true,
  39.  *               },
  40.  *              },
  41.  *          },
  42.  *     },
  43.  *     "change_login_user_item" = {
  44.  *          "method" = "GET",
  45.  *          "path" = "/{subfolder}/custom/change_login_user_item/{id}/{itemName}/{value}",
  46.  *          "controller" = "Kzl\FrameworkBundle\Api\ChangeLoginUserItem",
  47.  *          "read"=false,
  48.  *          "openapi_context" = {
  49.  *              "parameters" = {
  50.  *               {
  51.  *                 "name" = "id",
  52.  *                 "in" = "path",
  53.  *                 "type" = "string",
  54.  *                 "required" = true,
  55.  *               },
  56.  *               {
  57.  *                 "name" = "itemName",
  58.  *                 "in" = "path",
  59.  *                 "type" = "string",
  60.  *                 "required" = true,
  61.  *               },
  62.  *               {
  63.  *                 "name" = "value",
  64.  *                 "in" = "path",
  65.  *                 "type" = "string",
  66.  *                 "required" = true,
  67.  *               },
  68.  *              },
  69.  *          },
  70.  *     },
  71.  *     "new_login_user" = {
  72.  *          "method" = "POST",
  73.  *          "path" = "/{subfolder}/custom/new_login_user",
  74.  *          "controller" = "Kzl\FrameworkBundle\Api\EditLoginUserController",
  75.  *          "read"=false,
  76.  *     },
  77.  *     "delete_login_user" = {
  78.  *          "method" = "GET",
  79.  *          "path" = "/{subfolder}/custom/delete_login_user/{userId}",
  80.  *          "controller" = "Kzl\FrameworkBundle\Api\DeleteLoginUserController",
  81.  *          "read"=false,
  82.  *          "openapi_context" = {
  83.  *              "parameters" = {
  84.  *               {
  85.  *                 "name" = "userId",
  86.  *                 "in" = "path",
  87.  *                 "type" = "string",
  88.  *                 "required" = true,
  89.  *               },
  90.  *              },
  91.  *          },
  92.  *     },
  93.  *   }
  94.  * )
  95.  */
  96. class LoginUser implements \SerializableUserInterfacePasswordAuthenticatedUserInterfaceTenantAwareInterface
  97. {
  98.     /**
  99.      * @var integer
  100.      */
  101.     private $dNo;
  102.     /**
  103.      * Get dNo.
  104.      *
  105.      * @return integer
  106.      */
  107.     public function getId()
  108.     {
  109.         return $this->dNo;
  110.     }
  111.     /**
  112.      * @var string
  113.      */
  114.     private $tenantCd;
  115.     /**
  116.      * @var string
  117.      */
  118.     private $first_name;
  119.     /**
  120.      * @var string
  121.      */
  122.     private $last_name;
  123.     /**
  124.      * @var string
  125.      */
  126.     private $email_address;
  127.     /**
  128.      * @var string
  129.      */
  130.     private $username;
  131.     /**
  132.      * @var string
  133.      */
  134.     private $login_id;
  135.     /**
  136.      * @var string
  137.      */
  138.     private $algorithm;
  139.     /**
  140.      * @var string
  141.      */
  142.     private $salt;
  143.     /**
  144.      * @var string
  145.      */
  146.     private $roles = [];
  147.     /**
  148.      * @var string
  149.      */
  150.     private $password;
  151.     /**
  152.      * @var boolean
  153.      */
  154.     private $is_active;
  155.     /**
  156.      * @var boolean
  157.      */
  158.     private $is_super_admin;
  159.     /**
  160.      * @var \DateTime
  161.      */
  162.     private $last_login;
  163.     /**
  164.      * @var string
  165.      */
  166.     private $subject;
  167.     /**
  168.      * @var \DateTime
  169.      */
  170.     private $created_at;
  171.     /**
  172.      * @var \DateTime
  173.      */
  174.     private $updated_at;
  175.     /**
  176.      * 暗号化してない状態のパスワードを保持する
  177.      * DBには保存させない。
  178.      * (ユーザ管理編集のために使用).
  179.      */
  180.     private $plain_password;
  181.     /**
  182.      * Get the value of tenantId.
  183.      *
  184.      * @return int
  185.      */
  186.     public function getTenantId()
  187.     {
  188.         return $this->tenantCd;
  189.     }
  190.     /**
  191.      * Set the value of tenantId.
  192.      *
  193.      * @return self
  194.      */
  195.     public function setTenantId($tenantCd)
  196.     {
  197.         $this->tenantCd $tenantCd;
  198.         return $this;
  199.     }
  200.     /**
  201.      * Set first_name.
  202.      *
  203.      * @param string $firstName
  204.      *
  205.      * @return LoginUser
  206.      */
  207.     public function setFirstName($firstName)
  208.     {
  209.         $this->first_name $firstName;
  210.         return $this;
  211.     }
  212.     /**
  213.      * Get first_name.
  214.      *
  215.      * @return string
  216.      */
  217.     public function getFirstName()
  218.     {
  219.         return $this->first_name;
  220.     }
  221.     /**
  222.      * Set last_name.
  223.      *
  224.      * @param string $lastName
  225.      *
  226.      * @return LoginUser
  227.      */
  228.     public function setLastName($lastName)
  229.     {
  230.         $this->last_name $lastName;
  231.         return $this;
  232.     }
  233.     /**
  234.      * Get last_name.
  235.      *
  236.      * @return string
  237.      */
  238.     public function getLastName()
  239.     {
  240.         return $this->last_name;
  241.     }
  242.     /**
  243.      * Set email_address.
  244.      *
  245.      * @param string $emailAddress
  246.      *
  247.      * @return LoginUser
  248.      */
  249.     public function setEmailAddress($emailAddress)
  250.     {
  251.         $this->email_address $emailAddress;
  252.         return $this;
  253.     }
  254.     /**
  255.      * Get email_address.
  256.      *
  257.      * @return string
  258.      */
  259.     public function getEmailAddress()
  260.     {
  261.         return $this->email_address;
  262.     }
  263.     /**
  264.      * Set username.
  265.      *
  266.      * @param string $username
  267.      *
  268.      * @return LoginUser
  269.      */
  270.     public function setUsername($username)
  271.     {
  272.         $this->username $username;
  273.         return $this;
  274.     }
  275.     /**
  276.      * A visual identifier that represents this user.
  277.      *
  278.      * @see UserInterface
  279.      */
  280.     public function getUserIdentifier(): string
  281.     {
  282.         return (string) $this->username;
  283.     }
  284.     /**
  285.      * @deprecated since Symfony 5.3, use getUserIdentifier instead
  286.      */
  287.     public function getUsername(): string
  288.     {
  289.         return (string) $this->username;
  290.     }
  291.     // /**
  292.     //  * Get username.
  293.     //  *
  294.     //  * @return string
  295.     //  */
  296.     // public function getUsername()
  297.     // {
  298.     //     return $this->username;
  299.     // }
  300.     /**
  301.      * Set algorithm.
  302.      *
  303.      * @param string $algorithm
  304.      *
  305.      * @return LoginUser
  306.      */
  307.     public function setAlgorithm($algorithm)
  308.     {
  309.         $this->algorithm $algorithm;
  310.         return $this;
  311.     }
  312.     /**
  313.      * Get algorithm.
  314.      *
  315.      * @return string
  316.      */
  317.     public function getAlgorithm()
  318.     {
  319.         return $this->algorithm;
  320.     }
  321.     /**
  322.      * Set salt.
  323.      *
  324.      * @param string $salt
  325.      *
  326.      * @return LoginUser
  327.      */
  328.     public function setSalt($salt)
  329.     {
  330.         $this->salt $salt;
  331.         return $this;
  332.     }
  333.     /**
  334.      * Get salt.
  335.      *
  336.      * @return string
  337.      */
  338.     public function getSalt()
  339.     {
  340.         // return $this->salt;
  341.         return '';
  342.     }
  343.     /**
  344.      * Set password.
  345.      *
  346.      * @return LoginUser
  347.      */
  348.     public function setPassword(string $password): self
  349.     {
  350.         // パスワードが設定されていたら更新
  351.         if ($password && !empty($password)) {
  352.             $this->password $password;
  353.         }
  354.         return $this;
  355.     }
  356.     /**
  357.      * Get password.
  358.      *
  359.      * @return string
  360.      *
  361.      * @see PasswordAuthenticatedUserInterface
  362.      */
  363.     public function getPassword(): string
  364.     {
  365.         return $this->password;
  366.     }
  367.     /**
  368.      * Set is_active.
  369.      *
  370.      * @param bool $isActive
  371.      *
  372.      * @return LoginUser
  373.      */
  374.     public function setIsActive($isActive)
  375.     {
  376.         $this->is_active $isActive;
  377.         return $this;
  378.     }
  379.     /**
  380.      * Get is_active.
  381.      *
  382.      * @return bool
  383.      */
  384.     public function getIsActive()
  385.     {
  386.         return $this->is_active;
  387.     }
  388.     /**
  389.      * Set is_super_admin.
  390.      *
  391.      * @param bool $isSuperAdmin
  392.      *
  393.      * @return LoginUser
  394.      */
  395.     public function setIsSuperAdmin($isSuperAdmin)
  396.     {
  397.         $this->is_super_admin $isSuperAdmin;
  398.         return $this;
  399.     }
  400.     /**
  401.      * Get is_super_admin.
  402.      *
  403.      * @return bool
  404.      */
  405.     public function getIsSuperAdmin()
  406.     {
  407.         return $this->is_super_admin;
  408.     }
  409.     /**
  410.      * Set last_login.
  411.      *
  412.      * @param \DateTime $lastLogin
  413.      *
  414.      * @return LoginUser
  415.      */
  416.     public function setLastLogin($lastLogin)
  417.     {
  418.         $this->last_login $lastLogin;
  419.         return $this;
  420.     }
  421.     /**
  422.      * Get last_login.
  423.      *
  424.      * @return \DateTime
  425.      */
  426.     public function getLastLogin()
  427.     {
  428.         return $this->last_login;
  429.     }
  430.     /**
  431.      * Set created_at.
  432.      *
  433.      * @param \DateTime $createdAt
  434.      *
  435.      * @return LoginUser
  436.      */
  437.     public function setCreatedAt($createdAt)
  438.     {
  439.         $this->created_at $createdAt;
  440.         return $this;
  441.     }
  442.     /**
  443.      * Get created_at.
  444.      *
  445.      * @return \DateTime
  446.      */
  447.     public function getCreatedAt()
  448.     {
  449.         return $this->created_at;
  450.     }
  451.     /**
  452.      * Set updated_at.
  453.      *
  454.      * @param \DateTime $updatedAt
  455.      *
  456.      * @return LoginUser
  457.      */
  458.     public function setUpdatedAt($updatedAt)
  459.     {
  460.         $this->updated_at $updatedAt;
  461.         return $this;
  462.     }
  463.     /**
  464.      * Get updated_at.
  465.      *
  466.      * @return \DateTime
  467.      */
  468.     public function getUpdatedAt()
  469.     {
  470.         return $this->updated_at;
  471.     }
  472.     /**
  473.      * Set plain_password.
  474.      *
  475.      * @return LoginUser
  476.      */
  477.     public function setPlainPassword($plainPassword)
  478.     {
  479.         $this->plain_password $plainPassword;
  480.         return $this;
  481.     }
  482.     /**
  483.      * Set subject.
  484.      *
  485.      * @param  $subject
  486.      *
  487.      * @return LoginUser
  488.      */
  489.     public function setSubject($subject)
  490.     {
  491.         $this->subject $subject;
  492.         return $this;
  493.     }
  494.     /**
  495.      * Get subject.
  496.      *
  497.      * @return
  498.      */
  499.     public function getSubject()
  500.     {
  501.         return $this->subject;
  502.     }
  503.     /**
  504.      * Get plain_password.
  505.      *
  506.      * @return \DateTime
  507.      */
  508.     public function getPlainPassword()
  509.     {
  510.         return $this->plain_password;
  511.     }
  512.     // ---------- UserInterface実装 -----------------
  513.     public function eraseCredentials()
  514.     {
  515.     }
  516.     // /**
  517.     //  * 権限取得.
  518.     //  */
  519.     // public function getRoles()
  520.     // {
  521.     //     // ADMIN固定
  522.     //     return array('ROLE_USER');
  523.     //     // return array('ROLE_ALLOWED_TO_ADMIN');
  524.     // }
  525.     /**
  526.      * 権限取得.
  527.      */
  528.     public function getRoles()
  529.     {
  530.         // ADMIN固定
  531.         return array('ROLE_ADMIN');
  532.     }
  533.     // ------------ 認証用メソッド -----------------
  534.     public function isAccountNonExpired()
  535.     {
  536.         return true;
  537.     }
  538.     public function isAccountNonLocked()
  539.     {
  540.         return true;
  541.     }
  542.     public function isCredentialsNonExpired()
  543.     {
  544.         return true;
  545.     }
  546.     public function isEnabled()
  547.     {
  548.         return $this->is_active;
  549.     }
  550.     // ---------- 以下追加処理 -------------
  551.     public function __construct()
  552.     {
  553.         //初期値の設定
  554.         $this->algorithm 'sha1';
  555.         $this->is_active true;
  556.         $this->is_super_admin false;
  557.         $this->salt base_convert(sha1(uniqid(mt_rand(), true)), 1636);
  558.     }
  559.     public function __toString()
  560.     {   
  561.         return $this->toArray();    
  562.     }
  563.     public function equals(UserInterface $user)
  564.     {
  565.         return $user->getUsername() === $this->username;
  566.     }
  567.     /**
  568.      * @ORM\PostLoad
  569.      */
  570.     public function doPostLoad()
  571.     {
  572.         // Add your code here
  573.     }
  574.     private $_changeValues;
  575.     /**
  576.      * @ORM\PrePersist
  577.      */
  578.     public function doPreUpdate()
  579.     {
  580.         // ** 変更された値をログへ記録
  581.         // 1)変更値取得
  582.         if ($this->_listeners) {
  583.             foreach ($this->_listeners as $listener) {
  584.                 // 変更項目
  585.                 $changeSet $listener->getEntityChangeSet($this);
  586.                 foreach ($changeSet as $item => $values) {
  587.                     // 監視対象なら変更値を保存
  588.                     if (LoginUserRepository::isLogTargetItem($item)) {
  589.                         if ($item == 'is_active' || $item == 'is_super_admin') {
  590.                             // 文字列で変更値を格納する
  591.                             $values[0] = KzlFrameworkStatic::getUseFlgToString($values[0]);
  592.                             $values[1] = KzlFrameworkStatic::getUseFlgToString($values[1]);
  593.                         }
  594.                         foreach ($values as $key => $value) {
  595.                             if (is_null($value) || KzlFrameworkStatic::isNotValue($value)) {
  596.                                 $values[$key] = KzlFrameworkStatic::LOG_EMPTT_STRING;
  597.                             }
  598.                         }
  599.                         //変更値を保持しておく
  600.                         $this->_changeValues[LoginUserRepository::$log_target_list[$item]] = $values;
  601.                     }
  602.                 }//end foreach $changeSet
  603.             // end foreach $_listeners
  604.         //end if
  605.         // 新規の時は作成日を設定
  606.         if (null === $this->created_at) {
  607.             $this->setCreatedAt(new \DateTime());
  608.         }
  609.         // 更新日を設定
  610.         $this->setUpdatedAt(new \DateTime());
  611.         KzlFrameworkStatic::setNewDNo($this);
  612.         KzlFrameworkStatic::setTenantCd($this);
  613.     }
  614.     public function getChangeVelues()
  615.     {
  616.         if ($this->_changeValues) {
  617.             return  $this->_changeValues;
  618.         }
  619.         return false;
  620.     }
  621.     public function writeLog()
  622.     {
  623. //            $logStr = '';$str='';
  624. //                $values= $this->_changeValues;
  625. //                $itemName = $this->getUsername();
  626. //                if($values){
  627. //                    foreach($values as $columnName=>$value){
  628. //                        $beforeValue= array_shift($value);
  629. //                        $afterValue= array_shift($value);
  630. //                        //パスワードの場合は別の文章
  631. //                        if($columnName == 'パスワード'){
  632. //                            $str =  KzlFrameworkStatic::getTrans('ユーザ管理').': 「'.$itemName.'」の'.$columnName.'を変更しました。';
  633. //                        }else{
  634. //                        //パスワードの以外の場合の文章
  635. ////                            $str = KzlFrameworkStatic::getLogger()->getInfoChangeStr(KzlFrameworkStatic::getTrans('ユーザ管理'), $itemName, $columnName, $beforeValue, $afterValue);
  636. //                            $str = KzlFrameworkStatic::getTrans('ユーザ管理').': 「'.$itemName.'」の'.$columnName.'を '.$beforeValue.' → '.$afterValue.' に変更しました。';
  637. //                    }
  638. //                    if($logStr === ''){
  639. //                        $logStr = $str;
  640. //                    } else {
  641. //                        $logStr .= "\n".$str;
  642. //                    }
  643. //                }
  644. //
  645. //        }
  646. //            KzlFrameworkStatic::getLogger()->info($logStr);
  647.     }
  648.     // --------------------  以下 追加処理 ---------------------------------------------
  649.     public static function loadValidatorMetadata(ClassMetadata $metadata)
  650.     {
  651.         //USERNAME (ユーザID )
  652.         $metadata->addPropertyConstraint('login_id', new Assert\NotBlank([
  653.         ]));
  654.         $metadata->addPropertyConstraint('login_id', new Assert\Length([
  655.             'max' => 128,
  656.         ]));
  657.         $metadata->addPropertyConstraint('login_id', new Assert\Regex([
  658.             'pattern' => KzlFrameworkStatic::ID_PATTERN,
  659.         ]));
  660.         $metadata->addConstraint(new UniqueEntity([
  661.             'fields' => ['login_id''tenantCd'],
  662.             'errorPath' => 'login_id',
  663.         ]));
  664.         //パスワード 新規の時は必須
  665.         $metadata->addPropertyConstraint('plain_password', new Assert\NotBlank([
  666.             'groups' => ['add'],
  667.         ]));
  668.         $metadata->addPropertyConstraint('plain_password', new Assert\Length([
  669.             'max' => 20,
  670.         ]));
  671.         $metadata->addPropertyConstraint('plain_password', new Assert\Regex([
  672.             'pattern' => KzlFrameworkStatic::ID_PATTERN,
  673.             'message' => KzlFrameworkStatic::ID_PATTERN_VALIDATE_MSG,
  674.         ]));
  675.         //苗字
  676.         $metadata->addPropertyConstraint('first_name', new Assert\Length([
  677.             'max' => 255,
  678.         ]));
  679.         //名前
  680.         $metadata->addPropertyConstraint('last_name', new Assert\Length([
  681.             'max' => 255,
  682.         ]));
  683.         // メール
  684.         $metadata->addPropertyConstraint('email_address', new Assert\Email([
  685.         ]));
  686.     }
  687.     /**
  688.      * 最終ログイン日を「M月D日 H:i:s」で取得.
  689.      */
  690.     public function getLastLoginToString()
  691.     {
  692.         //        「YYYY年M月D日 H:i」で表示
  693.         if ($this->last_login) {
  694.             return $this->last_login->format('Y年n月j日 H:i');
  695.         }
  696.         return null;
  697.     }
  698.     /**
  699.      * @var \Kzl\JinjiKoukaBundle\Entity\userRole
  700.      */
  701.     private $userRole;
  702.     /**
  703.      * Set userRole.
  704.      *
  705.      * @param \Kzl\JinjiKoukaBundle\Entity\userRole $userRole
  706.      *
  707.      * @return LoginUser
  708.      */
  709.     public function setUserRole(\Kzl\FrameworkBundle\Entity\userRole $userRole null)
  710.     {
  711.         $this->userRole $userRole;
  712.         return $this;
  713.     }
  714.     /**
  715.      * Get userRole.
  716.      *
  717.      * @return \Kzl\JinjiKoukaBundle\Entity\userRole
  718.      */
  719.     public function getUserRole()
  720.     {
  721.         return $this->userRole;
  722.     }
  723.     /**
  724.      * @var \Doctrine\Common\Collections\Collection
  725.      */
  726.     private $user_role;
  727.     /**
  728.      * Add user_role.
  729.      *
  730.      * @param \Kzl\JinjiKoukaBundle\Entity\UserRole $userRole
  731.      *
  732.      * @return LoginUser
  733.      */
  734.     public function addUserRole(\Kzl\FrameworkBundle\Entity\UserRole $userRole)
  735.     {
  736.         $this->user_role[] = $userRole;
  737.         return $this;
  738.     }
  739.     /**
  740.      * Remove user_role.
  741.      *
  742.      * @param \Kzl\JinjiKoukaBundle\Entity\UserRole $userRole
  743.      */
  744.     public function removeUserRole(\Kzl\FrameworkBundle\Entity\UserRole $userRole)
  745.     {
  746.         $this->user_role->removeElement($userRole);
  747.     }
  748.     //-------------------------------------------------------------------
  749.     // NotifyPropertyChanged 実装
  750.     private $_listeners = [];
  751.     // /**
  752.     //  * 値変更のイベントリスナー 呼ばれていないので一旦非表示(220420)
  753.     //  *
  754.     //  * @param \Doctrine\Common\PropertyChangedListener $listener
  755.     //  */
  756.     // public function addPropertyChangedListener(PropertyChangedListener $listener)
  757.     // {
  758.     //     $this->_listeners[] = $listener;
  759.     // }
  760.     /**
  761.      * 変更前・変更後の値をイベントリスナーに保存する.
  762.      *
  763.      * @param type $propName
  764.      * @param type $oldValue
  765.      * @param type $newValue
  766.      */
  767.     protected function _onPropertyChanged($propName$oldValue$newValue)
  768.     {
  769.         if ($this->_listeners) {
  770.             foreach ($this->_listeners as $listener) {
  771.                 $listener->propertyChanged($this$propName$oldValue$newValue);
  772.             }
  773.         }
  774.     }
  775.     public function __sleep()
  776.     {
  777.         return [
  778.             'dNo',
  779.             'username',
  780.             'is_active',
  781.             'is_super_admin',
  782.             'email_address',
  783.             ];
  784.     }
  785.     /*
  786.     public function __wakeup() {
  787.         ;
  788.     }
  789.     */
  790.     public function getFullname()
  791.     {
  792.         return $this->getLastName().' '.$this->getFirstName();
  793.     }
  794.     /**
  795.      * ログ出力用ユーザ名.
  796.      *
  797.      * @return string
  798.      */
  799.     public function getLoggingUserName()
  800.     {
  801.         return $this->getLoginId();
  802.     }
  803.     /**
  804.      * Get the value of dNo.
  805.      *
  806.      * @return integer
  807.      */
  808.     public function getDNo()
  809.     {
  810.         return $this->dNo;
  811.     }
  812.     /**
  813.      * Set the value of dNo.
  814.      *
  815.      * @param int $dNo
  816.      *
  817.      * @return self
  818.      */
  819.     public function setDNo($dNo)
  820.     {
  821.         $this->dNo $dNo;
  822.         return $this;
  823.     }
  824.     /**
  825.      * Get the value of tenantCd.
  826.      *
  827.      * @return string
  828.      */
  829.     public function getTenantCd()
  830.     {
  831.         return $this->tenantCd;
  832.     }
  833.     /**
  834.      * Set the value of tenantCd.
  835.      *
  836.      * @param string $tenantCd
  837.      *
  838.      * @return self
  839.      */
  840.     public function setTenantCd($tenantCd)
  841.     {
  842.         $this->tenantCd $tenantCd;
  843.         return $this;
  844.     }
  845.     /** @see \Serializable::serialize() */
  846.     public function serialize()
  847.     {
  848.         return serialize([
  849.             $this->dNo,
  850.             $this->username,
  851.             $this->password,
  852.             $this->salt,
  853.             $this->tenantCd,
  854.             $this->is_active,
  855.             $this->is_super_admin,
  856.         ]);
  857.     }
  858.     /** @see \Serializable::unserialize() */
  859.     public function unserialize($serialized)
  860.     {
  861.         list(
  862.             $this->dNo,
  863.             $this->username,
  864.             $this->password,
  865.             $this->salt,
  866.             $this->tenantCd,
  867.             $this->is_active,
  868.             $this->is_super_admin) = unserialize($serialized);
  869.     }
  870.     /**
  871.      * Get the value of login_id.
  872.      *
  873.      * @return string
  874.      */
  875.     public function getLoginId()
  876.     {
  877.         return $this->login_id;
  878.     }
  879.     /**
  880.      * Set the value of login_id.
  881.      *
  882.      * @param string $login_id
  883.      *
  884.      * @return self
  885.      */
  886.     public function setLoginId($login_id)
  887.     {
  888.         $this->login_id $login_id;
  889.         return $this;
  890.     }
  891.     /**
  892.      * マルチテナント対応ログインID設定処理.
  893.      *
  894.      * @return void
  895.      */
  896.     public function setTenantLoginId()
  897.     {
  898.         if ($this->getTenantCd() && $this->getLoginId()) {
  899.             $this->setUsername($this->getTenantCd().'@'.$this->getLoginId());
  900.         }
  901.     }
  902.     public function toArray()
  903.     {
  904.         return [
  905.             'dNo' => $this->getId(),
  906.             'loginId' => $this->getLoginId(),
  907.             'firstName' => $this->getFirstName(),
  908.             'lastName' => $this->getLastName(),
  909.             'emailAddress' => $this->getEmailAddress(),
  910.             'lastLogin' => $this->getLastLogin(),
  911.             'isActive' => $this->getIsActive(),
  912.             'subject' => $this->getSubject(),
  913.             ];
  914.     }
  915.     /**
  916.      * 権限確認用リストの取得.
  917.      * 権限が複数ある場合は利用可>メニューに表示するのみ>無効の順で適用
  918.      */
  919.     public function getUserHasRoleList()
  920.     {
  921.         $em KzlFrameworkStatic::getDoctrine()->getManager();
  922.         $userRoleIdList $em->getRepository(UserRole::class)->getUserRoleListByLoginUserId($this->getId(), true);
  923.         $roleModuleList $em->getRepository(RoleModule::class)->getRoleModuleListByRoleIds($userRoleIdListfalse);
  924.         $roleList = [];
  925.         foreach ($roleModuleList as $rm) {
  926.             //一つ目は無条件に代入
  927.             if(!isset($roleList[$rm['functionName']][$rm['actionName']])){
  928.                 $roleList[$rm['functionName']][$rm['actionName']]['useFlg']  = $rm['useFlg'];
  929.                 $roleList[$rm['functionName']][$rm['actionName']]['showFlg']  = $rm['showFlg'];
  930.             }else{
  931.                 //二つ目以降はfalseなら上書きしない
  932.                 if($rm['useFlg']){
  933.                     $roleList[$rm['functionName']][$rm['actionName']]['useFlg']  = $rm['useFlg'];
  934.                 }
  935.                 if($rm['showFlg']){
  936.                     $roleList[$rm['functionName']][$rm['actionName']]['showFlg']  = $rm['showFlg'];
  937.                 }
  938.             }
  939.         }
  940.         return $roleList;
  941.     }
  942. }