get(AdminUserServiceInterface::ServiceName); /** @var RBACServiceInterface $rbacService */ $rbacService = Yii::$app->get(RBACServiceInterface::ServiceName); return [ 'index' => [ 'class' => IndexAction::className(), 'data' => function($query)use($service){ $result = $service->getList($query); return [ 'dataProvider' => $result['dataProvider'], 'searchModel' => $result['searchModel'], ]; } ], 'view-layer' => [ 'class' => ViewAction::className(), 'data' => function($id)use($service){ return [ 'model' => $service->getDetail($id), ]; }, ], 'delete' => [ 'class' => DeleteAction::className(), 'doDelete' => function($id) use($service){ return $service->delete($id); }, ], 'sort' => [ 'class' => SortAction::className(), 'doSort' => function($id, $sort) use($service){ return $service->sort($id, $sort); }, ], 'create' => [ 'class' => CreateAction::className(), 'doCreate' => function($postData) use($service, $rbacService){ /** @var AdminUser $model */ return $service->create($postData); }, 'data' => function()use($service, $rbacService){ return [ 'model' => $service->newModel(['scenario' => AdminUserServiceInterface::scenarioCreate]), 'assignModel' => $rbacService->newAssignPermissionModel(), 'permissions' => $rbacService->getPermissionsGroups(), 'roles' => $rbacService->getRoles(), ]; } ], 'update' => [ 'class' => UpdateAction::className(), 'doUpdate' => function($id, $postData) use($service){ return $service->update($id, $postData, ['scenario' => AdminUserServiceInterface::scenarioUpdate]); }, 'data' => function($id, $updateResultModel)use($service, $rbacService){ return [ 'model' => $updateResultModel === null ? $service->getDetail($id, ['scenario' => AdminUserServiceInterface::scenarioUpdate]) : $updateResultModel, 'assignModel' => $rbacService->getAssignPermissionDetail($id), 'permissions' => $rbacService->getPermissionsGroups(), 'roles' => $rbacService->getRoles(), ]; } ], 'self-update' => [ 'class' => UpdateAction::className(), 'primaryKeyIdentity' => null, 'doUpdate' => function($postData) use($service){ return $service->selfUpdate(Yii::$app->getUser()->getId(), $postData, ['scenario' => AdminUserServiceInterface::scenarioSelfUpdate]); }, 'data' => function($updateResultModel) use($service){ return [ 'model' => $updateResultModel === null ? $service->getDetail(Yii::$app->getUser()->getId(), ['scenario' => AdminUserServiceInterface::scenarioSelfUpdate]) : $updateResultModel, ]; }, 'viewFile' => 'update', ], 'request-password-reset' => [ 'class' => UpdateAction::className(), 'primaryKeyIdentity' => null, 'successTipsMessage' => Yii::t("app", "Check your email for further instructions."), 'doUpdate' => function($postData) use($service){ $result = $service->sendResetPasswordLink($postData); if( $result === false ){ return 'Sorry, we are unable to reset password for email provided.'; } return $result; }, 'data' => function($updateResultModel){ return [ "model" => $updateResultModel === null ? new PasswordResetRequestForm() : $updateResultModel, ]; }, 'viewFile' => 'requestPasswordResetToken', ], 'reset-password' => [ 'class' => UpdateAction::className(), 'primaryKeyIdentity' => 'token', 'successTipsMessage' => Yii::t("app", 'New password was saved.'), 'doUpdate' => function($token, $postData) use($service) { return $service->resetPassword($token, $postData); }, 'data' => function($token, $updateResultModel) use($service) { if( $updateResultModel === null ){ try { $model = $service->newResetPasswordForm($token); }catch (InvalidParamException $e) { throw new BadRequestHttpException($e->getMessage()); } }else{ $model = $updateResultModel; } return [ 'model' => $model, ]; }, 'successRedirect' => $this->getHomeUrl(), 'viewFile' => 'resetPassword' ] ]; } private function getHomeUrl() { if( Yii::$app->getRequest()->getIsConsoleRequest() ){//when execute ./yii feehi/permission return "/"; } return Yii::$app->getHomeUrl(); } }