AdminUserService.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. /**
  3. * Author: lf
  4. * Blog: https://blog.feehi.com
  5. * Email: job@feehi.com
  6. * Created at: 2020-01-29 15:31
  7. */
  8. namespace common\services;
  9. use Yii;
  10. use backend\models\form\PasswordResetRequestForm;
  11. use backend\models\form\ResetPasswordForm;
  12. use backend\models\search\AdminUserSearch;
  13. use common\models\AdminUser;
  14. class AdminUserService extends Service implements AdminUserServiceInterface
  15. {
  16. public function getSearchModel(array $options = [])
  17. {
  18. return new AdminUserSearch();
  19. }
  20. public function getModel($id, array $options = [])
  21. {
  22. $model = AdminUser::findOne($id);
  23. if( isset($options['scenario']) && !empty($options['scenario']) ){
  24. if($model !== null) {
  25. $model->setScenario($options['scenario']);
  26. }
  27. }
  28. return $model;
  29. }
  30. public function newModel(array $options = [])
  31. {
  32. $model = new AdminUser();
  33. if( isset($options['scenario']) && !empty($options['scenario']) ){
  34. $model->setScenario($options['scenario']);
  35. }
  36. $loadDefaultValues = isset($options['loadDefaultValues']) && is_bool($options['loadDefaultValues']) ? $options['loadDefaultValues'] : true;
  37. if($loadDefaultValues) {
  38. $model->loadDefaultValues();
  39. }
  40. return $model;
  41. }
  42. public function create(array $postData, array $options = [])
  43. {
  44. $model = $this->newModel();
  45. $model->setScenario('create');
  46. if ( $model->load($postData) && $model->save() ) {
  47. /** @var RBACServiceInterface $RBACService */
  48. $RBACService = Yii::$app->get(RBACServiceInterface::ServiceName);
  49. $result = $RBACService->assignPermission($postData, $model->getId());
  50. if( $result !== true ){
  51. Yii::error("create admin user success but assign permission failed:" . print_r($result, true));
  52. }
  53. return true;
  54. } else {
  55. return $model;
  56. }
  57. }
  58. public function update($id, array $postData, array $options = [])
  59. {
  60. $model = $this->getModel($id);
  61. $scenario = "update";
  62. $model->setScenario($scenario);
  63. if ( $model->load($postData) && $model->save() ) {
  64. /** @var RBACServiceInterface $RBACService */
  65. $RBACService = Yii::$app->get(RBACServiceInterface::ServiceName);
  66. $result = $RBACService->assignPermission($postData, $model->getId());
  67. if( $result !== true ){
  68. Yii::error("update admin user success but assign permission failed:" . print_r($result, true));
  69. }
  70. return true;
  71. } else {
  72. return $model;
  73. }
  74. }
  75. public function selfUpdate($id, array $postData, array $options = [])
  76. {
  77. $model = $this->getModel($id);
  78. $scenario = "self-update";
  79. $model->setScenario($scenario);
  80. if ( $model->load($postData) && $model->save() ) {
  81. return true;
  82. } else {
  83. return $model;
  84. }
  85. }
  86. public function newPasswordResetRequestForm()
  87. {
  88. return new PasswordResetRequestForm();
  89. }
  90. public function sendResetPasswordLink($postData)
  91. {
  92. $model = $this->newPasswordResetRequestForm();
  93. if ( $model->load($postData) && $model->validate() ) {
  94. $result = $model->sendEmail();
  95. if( $result === false ){
  96. Yii::error("send reset password link error" . print_r($model, true));
  97. }
  98. return $result;
  99. }
  100. return $model;
  101. }
  102. public function newResetPasswordForm($token)
  103. {
  104. return new ResetPasswordForm($token);
  105. }
  106. public function resetPassword($token, $postData)
  107. {
  108. $model = $this->newResetPasswordForm($token);
  109. if ( $model->load($postData) && $model->validate() && $model->resetPassword() ) {
  110. return true;
  111. }
  112. return $model;
  113. }
  114. }