用户管理功能(1.75/5)
用户启用/禁用 *禁用时会强制下线
This commit is contained in:
parent
c77acae424
commit
c8bdaf73d3
@ -4,6 +4,7 @@ namespace app\controllers;
|
|||||||
|
|
||||||
use app\models\User;
|
use app\models\User;
|
||||||
use app\models\UserSearch;
|
use app\models\UserSearch;
|
||||||
|
use app\utils\AdminSword;
|
||||||
use Throwable;
|
use Throwable;
|
||||||
use Yii;
|
use Yii;
|
||||||
use yii\db\StaleObjectException;
|
use yii\db\StaleObjectException;
|
||||||
@ -165,8 +166,6 @@ class AdminController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes an existing User model.
|
|
||||||
* If deletion is successful, the browser will be redirected to the 'index' page.
|
|
||||||
* @param int $id ID
|
* @param int $id ID
|
||||||
* @return Response
|
* @return Response
|
||||||
* @throws NotFoundHttpException if the model cannot be found
|
* @throws NotFoundHttpException if the model cannot be found
|
||||||
@ -175,9 +174,19 @@ class AdminController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function actionUserDelete(int $id): Response
|
public function actionUserDelete(int $id): Response
|
||||||
{
|
{
|
||||||
$this->findModel($id)->delete();
|
$user = $this->findModel($id);
|
||||||
|
$alreadyDisabled = $user->status == 0;
|
||||||
return $this->redirect(['user']);
|
$str = $alreadyDisabled ? '启用' : '禁用';
|
||||||
|
if ($user->deleteAccount($alreadyDisabled)) {
|
||||||
|
$logout_result = '';
|
||||||
|
if(!$alreadyDisabled){
|
||||||
|
$logout_result = AdminSword::forceUserLogout($id);
|
||||||
|
}
|
||||||
|
Yii::$app->session->setFlash('success', '账户'.$str.'成功,'.$logout_result);
|
||||||
|
} else {
|
||||||
|
Yii::$app->session->setFlash('error', '账户'.$str.'失败');
|
||||||
|
}
|
||||||
|
return $this->redirect(['user-view', 'id' => $id]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -277,18 +277,23 @@ class User extends ActiveRecord implements IdentityInterface
|
|||||||
return $url;
|
return $url;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function deleteAccount(): false|int
|
|
||||||
{
|
|
||||||
// 设置用户状态为禁用
|
|
||||||
$this->status = 0;
|
|
||||||
|
|
||||||
// 保存用户模型
|
/**
|
||||||
if (!$this->save()) {
|
* 名为删号
|
||||||
|
* 实为禁用/启用账户
|
||||||
|
* @param bool $rev 反转
|
||||||
|
* @return false|int
|
||||||
|
*/
|
||||||
|
public function deleteAccount(bool $rev = false): false|int
|
||||||
|
{
|
||||||
|
$this->status = $rev ? 1 : 0;
|
||||||
|
|
||||||
|
if (!$this->save(false)) {
|
||||||
return false; // something wrong
|
return false; // something wrong
|
||||||
}
|
}
|
||||||
// 更新与用户相关的所有 CollectionTasks 和 Share 记录的状态为禁用
|
// 更新与用户相关的所有 CollectionTasks 和 Share 记录的状态
|
||||||
CollectionTasks::updateAll(['status' => 0], ['user_id' => $this->id]);
|
CollectionTasks::updateAll(['status' => $rev ? 1 : 0], ['user_id' => $this->id]);
|
||||||
Share::updateAll(['status' => 0], ['sharer_id' => $this->id]);
|
Share::updateAll(['status' => $rev ? 1 : 0], ['sharer_id' => $this->id]);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,7 @@ $this->params['breadcrumbs'][] = $this->title;
|
|||||||
[
|
[
|
||||||
'class' => ActionColumn::class,
|
'class' => ActionColumn::class,
|
||||||
'header' => '操作',
|
'header' => '操作',
|
||||||
'template' => '{view} {update}',
|
'template' => '{view}',
|
||||||
'urlCreator' => function ($action, User $model, $key, $index, $column) {
|
'urlCreator' => function ($action, User $model, $key, $index, $column) {
|
||||||
return Url::toRoute(['user-' . $action, 'id' => $model->id]);
|
return Url::toRoute(['user-' . $action, 'id' => $model->id]);
|
||||||
}
|
}
|
||||||
|
@ -7,23 +7,28 @@ use yii\widgets\DetailView;
|
|||||||
/** @var yii\web\View $this */
|
/** @var yii\web\View $this */
|
||||||
/** @var app\models\User $model */
|
/** @var app\models\User $model */
|
||||||
|
|
||||||
$this->title = $model->name;
|
$this->title = '用户ID: '.$model->id;
|
||||||
$this->params['breadcrumbs'][] = ['label' => 'Users', 'url' => ['user']];
|
$this->params['breadcrumbs'][] = ['label' => '用户管理', 'url' => ['user']];
|
||||||
$this->params['breadcrumbs'][] = $this->title;
|
$this->params['breadcrumbs'][] = $this->title;
|
||||||
|
$alreadyDisabled = $model->status == 0;
|
||||||
|
$isCurrentUser = Yii::$app->user->id == $model->id;
|
||||||
|
$str = $alreadyDisabled ? '启用' : '禁用';
|
||||||
YiiAsset::register($this);
|
YiiAsset::register($this);
|
||||||
?>
|
?>
|
||||||
<div class="user-view">
|
<div class="user-view">
|
||||||
|
|
||||||
<h1><?= Html::encode($this->title) ?></h1>
|
<h1>用户详情</h1>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<?= Html::a('Update', ['user-update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?>
|
<?= Html::a('修改信息', ['user-update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?>
|
||||||
<?= Html::a('Delete', ['user-delete', 'id' => $model->id], [
|
<?= Html::a($str.'用户', ['user-delete', 'id' => $model->id], [
|
||||||
'class' => 'btn btn-danger',
|
'class' => 'btn btn-danger',
|
||||||
'data' => [
|
'data' => [
|
||||||
'confirm' => 'Are you sure you want to delete this item?',
|
'confirm' => '你确定要'.$str.'这个用户吗?',
|
||||||
'method' => 'post',
|
'method' => 'post',
|
||||||
],
|
],
|
||||||
|
'disabled' => $isCurrentUser,
|
||||||
|
'title'=> $isCurrentUser ? '不能'.$str.'自己的账户' : '点击'.$str.'用户',
|
||||||
]) ?>
|
]) ?>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user