6], ['role_ids', 'required'], ['role_ids', 'safe'], ]); } /** * @return string[] */ public function attributeLabels() { return [ 'username' => '账号', 'password' => '密码', 'role_ids' => '授权角色', ]; } /** * @return bool * @throws \yii\db\Exception */ public function create() { $transaction = Yii::$app->db->beginTransaction(); try { $member = new Member(); $member->username = $this->username; $member->type = MemberTypeEnum::MANAGER; $member->last_ip = Yii::$app->services->base->getUserIp(); $member->last_time = time(); $member->password_hash = Yii::$app->security->generatePasswordHash($this->password);; if (!$member->save()) { $this->addErrors($member->getErrors()); throw new NotFoundHttpException('用户编辑错误'); } // 角色授权 $defaultRoleIds = array_keys($this->roles); $selectIds = []; foreach ($this->role_ids as $id) { if (in_array($id, $defaultRoleIds)) { $selectIds[] = $id; } } Yii::$app->services->rbacAuthAssignment->assign($selectIds, $member->id, Yii::$app->id); $transaction->commit(); return true; } catch (\Exception $e) { $transaction->rollBack(); return false; } } }