mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-24 12:07:23 +08:00
add disable user method
This commit is contained in:
@@ -124,4 +124,14 @@ class UserController extends Controller
|
|||||||
$resource = ExamResource::collection($result);
|
$resource = ExamResource::collection($result);
|
||||||
return $this->success($resource);
|
return $this->success($resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function disable(Request $request)
|
||||||
|
{
|
||||||
|
$request->validate([
|
||||||
|
'uid' => 'required',
|
||||||
|
'reason' => 'required',
|
||||||
|
]);
|
||||||
|
$result = $this->repository->disableUser(Auth::user(), $request->uid, $request->reason);
|
||||||
|
return $this->success($result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ use App\Http\Middleware\Locale;
|
|||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||||
use Illuminate\Notifications\Notifiable;
|
use Illuminate\Notifications\Notifiable;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
use Laravel\Sanctum\HasApiTokens;
|
use Laravel\Sanctum\HasApiTokens;
|
||||||
|
|
||||||
class User extends Authenticatable
|
class User extends Authenticatable
|
||||||
@@ -154,4 +155,13 @@ class User extends Authenticatable
|
|||||||
return $this->belongsTo(User::class, 'invited_by');
|
return $this->belongsTo(User::class, 'invited_by');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updateWithModComment(array $update, $modComment)
|
||||||
|
{
|
||||||
|
if (!$this->exists) {
|
||||||
|
throw new \RuntimeException('User not exists!');
|
||||||
|
}
|
||||||
|
$update['modcomment'] = DB::raw("concat_ws('\n', $modComment, modcomment)");
|
||||||
|
return $this->update($update);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,9 @@ use App\Http\Resources\UserResource;
|
|||||||
use App\Models\ExamUser;
|
use App\Models\ExamUser;
|
||||||
use App\Models\Setting;
|
use App\Models\Setting;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
|
use App\Models\UserBanLog;
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class UserRepository extends BaseRepository
|
class UserRepository extends BaseRepository
|
||||||
{
|
{
|
||||||
@@ -96,4 +98,21 @@ class UserRepository extends BaseRepository
|
|||||||
}
|
}
|
||||||
return $out;
|
return $out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function disableUser(User $operator, $uid, $reason)
|
||||||
|
{
|
||||||
|
$targetUser = User::query()->findOrFail(['id', 'username']);
|
||||||
|
$banLog = [
|
||||||
|
'uid' => $uid,
|
||||||
|
'username' => $targetUser->username,
|
||||||
|
'reason' => $reason,
|
||||||
|
'operator' => $operator->id,
|
||||||
|
];
|
||||||
|
$modCommentText = sprintf("Disable by %s, reason: %s.", $operator->username, $reason);
|
||||||
|
DB::transaction(function () use ($targetUser, $banLog, $modCommentText) {
|
||||||
|
$targetUser->updateWithModComment(['enable' => User::ENABLED_NO], $modCommentText);
|
||||||
|
UserBanLog::query()->insert($banLog);
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ Route::group(['middleware' => ['auth:sanctum', 'permission', 'locale']], functio
|
|||||||
Route::get('user-base', [\App\Http\Controllers\UserController::class, 'base']);
|
Route::get('user-base', [\App\Http\Controllers\UserController::class, 'base']);
|
||||||
Route::get('user-classes', [\App\Http\Controllers\UserController::class, 'classes']);
|
Route::get('user-classes', [\App\Http\Controllers\UserController::class, 'classes']);
|
||||||
Route::get('user-match-exams', [\App\Http\Controllers\UserController::class, 'matchExams']);
|
Route::get('user-match-exams', [\App\Http\Controllers\UserController::class, 'matchExams']);
|
||||||
|
Route::post('user-disable', [\App\Http\Controllers\UserController::class, 'disable']);
|
||||||
|
|
||||||
Route::resource('exams', \App\Http\Controllers\ExamController::class);
|
Route::resource('exams', \App\Http\Controllers\ExamController::class);
|
||||||
Route::get('exam-indexes', [\App\Http\Controllers\ExamController::class, 'indexes']);
|
Route::get('exam-indexes', [\App\Http\Controllers\ExamController::class, 'indexes']);
|
||||||
|
|||||||
Reference in New Issue
Block a user