ManagerCreateForm.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. namespace backend\forms;
  3. use Yii;
  4. use yii\web\NotFoundHttpException;
  5. use common\models\member\Member;
  6. use common\enums\MemberTypeEnum;
  7. use common\helpers\ArrayHelper;
  8. use common\forms\ManagerMemberForm;
  9. /**
  10. * Class ManagerRoleForm
  11. * @package backend\forms
  12. */
  13. class ManagerCreateForm extends ManagerMemberForm
  14. {
  15. /**
  16. * @var array
  17. */
  18. public $role_ids = [];
  19. public $username;
  20. public $password;
  21. /**
  22. * @var
  23. */
  24. public $roles;
  25. /**
  26. * @return \string[][]
  27. */
  28. public function rules()
  29. {
  30. return ArrayHelper::merge(parent::rules(), [
  31. [['password', 'username'], 'required'],
  32. [['password'], 'string', 'min' => 6],
  33. ['role_ids', 'required'],
  34. ['role_ids', 'safe'],
  35. ]);
  36. }
  37. /**
  38. * @return string[]
  39. */
  40. public function attributeLabels()
  41. {
  42. return [
  43. 'username' => '账号',
  44. 'password' => '密码',
  45. 'role_ids' => '授权角色',
  46. ];
  47. }
  48. /**
  49. * @return bool
  50. * @throws \yii\db\Exception
  51. */
  52. public function create()
  53. {
  54. $transaction = Yii::$app->db->beginTransaction();
  55. try {
  56. $member = new Member();
  57. $member->username = $this->username;
  58. $member->type = MemberTypeEnum::MANAGER;
  59. $member->last_ip = Yii::$app->services->base->getUserIp();
  60. $member->last_time = time();
  61. $member->password_hash = Yii::$app->security->generatePasswordHash($this->password);;
  62. if (!$member->save()) {
  63. $this->addErrors($member->getErrors());
  64. throw new NotFoundHttpException('用户编辑错误');
  65. }
  66. // 角色授权
  67. $defaultRoleIds = array_keys($this->roles);
  68. $selectIds = [];
  69. foreach ($this->role_ids as $id) {
  70. if (in_array($id, $defaultRoleIds)) {
  71. $selectIds[] = $id;
  72. }
  73. }
  74. Yii::$app->services->rbacAuthAssignment->assign($selectIds, $member->id, Yii::$app->id);
  75. $transaction->commit();
  76. return true;
  77. } catch (\Exception $e) {
  78. $transaction->rollBack();
  79. return false;
  80. }
  81. }
  82. }
粤ICP备19079148号