diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 6e8ebecb..3cc976ed 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -275,6 +275,9 @@ public function destroy(Request $request) if ($user->submissions()->count() > 0){ $json_result = array('done' => 0, 'message' => "You must delete users' submission before you can delete user."); } + elseif (Auth::user()->id == $user_id) { + $json_result = array('done' => 0, 'message' => 'You cannot delete yourself!'); + } elseif (User::destroy($user_id)) $json_result = array('done' => 1); else @@ -291,7 +294,7 @@ public function delete_submissions(User $user){ $i = 0; $json_result = array('done'=>0 , 'count' => 0); foreach ($subs as $sub) { - var_dump($sub->directory()); + // var_dump($sub->directory()); shell_exec("rm -rf " . $sub->directory()); $sub->delete(); $i++; @@ -361,8 +364,8 @@ public function add_user($username, $email, $password, $role, $display_name="", 'display_name' => $display_name ]; $validator = Validator::make($user, [ - 'username' => ['required', 'string', 'max:50', 'unique:users'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], + 'username' => ['required', 'string', 'max:50', 'unique:users', 'regex:/^\S*$/'], + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users', 'regex:/^\S*$/'], 'display_name' => ['nullable', 'string', 'max:255'], 'password' => ['required', 'string', 'min:8'], ]); @@ -497,8 +500,6 @@ public function set_trial(Request $request){ $count = $where_clause->update(['trial_time' => DB::Raw(" TIMESTAMPDIFF(HOUR, `created_at`, '$end_time' )") ,'role_id' => 4 ] ); } // dd($count); - return back()->with(['success' => $count ])->withInput() - ; + return back()->with(['success' => $count ])->withInput(); } - -} +} \ No newline at end of file diff --git a/resources/views/users/list.blade.php b/resources/views/users/list.blade.php index 6594bbc4..d8f1261b 100644 --- a/resources/views/users/list.blade.php +++ b/resources/views/users/list.blade.php @@ -41,16 +41,21 @@ Add Users Email all users Update multiple users trial time + {{-- Excel --}} @endsection @section('content') copy user name list +@if (Auth::user()->role->name == 'admin') + +@endif
| # | {{--User ID | --}}Username | @@ -64,6 +69,9 @@|
|---|---|---|---|
| + + | {{$loop->iteration}} | {{--{{$user->id}} | --}}{{$user->username}} | @@ -176,10 +184,95 @@ $("#user_delete").modal("show"); }); + let selected_users = []; + + $('.checkbox').click(function() { + let username = $(this).parents('tr').find('#un').text().trim(); + let id = $(this).parents('tr').data('id'); + + if ($(this).hasClass('fa-check-circle')) { + $(this).removeClass('fa-check-circle').addClass('fa-circle'); + this.classList.add('fa-circle'); + selected_users = selected_users.filter(user => user.id !== id && user.username !== username); + } else { + $(this).removeClass('fa-circle').addClass('fa-check-circle'); + selected_users.push({ + id: id, + username: username, + }); + } + console.log(selected_users) + }); + + $("#delete_selected").click(function(e) { + e.preventDefault(); + console.log(selected_users) + + if (selected_users.length === 0) return; + + // Show popup + let row = $(this).parents('tr'); + let user_ids = row.data('id'); + let usernames = row.children('#un').html(); + + $(".modal-title").html("Are you sure you want to DELETE these users and their submissions?"); + $(".modal-body").html('') + selected_users.forEach(user => { + $(".modal-body").append('User ID: