Delete Users

This commit is contained in:
Torsten 2023-01-14 09:22:26 +01:00
parent 4253194117
commit ba11930641
5 changed files with 556 additions and 204 deletions

View file

@ -3,7 +3,7 @@ APP_ENV=local
APP_KEY=base64:7Md2wHHNq04ldtpdsz4B2LDAMEOB+4fSfxMJGfDU2zY= APP_KEY=base64:7Md2wHHNq04ldtpdsz4B2LDAMEOB+4fSfxMJGfDU2zY=
APP_DEBUG=true APP_DEBUG=true
APP_URL=http://test.motorrad-ig.de APP_URL=http://test.motorrad-ig.de
LOG_CHANNEL=stack LOG_CHANNEL=daily
DB_CONNECTION=mysql DB_CONNECTION=mysql
DB_HOST=127.0.0.1 DB_HOST=127.0.0.1

View file

@ -1,14 +1,16 @@
<?php <?php
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\User; use App\User;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Log; use Illuminate\Support\Facades\Auth;
use Intervention\Image\Facades\Image; use Illuminate\Support\Facades\DB;
use Log;
use Intervention\Image\Facades\Image;
class UserController extends Controller class UserController extends Controller
{ {
/** /**
* Display a listing of the resource. * Display a listing of the resource.
* *
@ -16,8 +18,8 @@ class UserController extends Controller
*/ */
public function index() public function index()
{ {
$users=User::all(); $users = User::all();
return view('users.index')->with('users',$users); return view('users.index')->with('users', $users);
} }
/** /**
@ -34,28 +36,28 @@ class UserController extends Controller
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @param \App\User $user
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
* / * /
public function store(Request $request) * public function store(Request $request)
{ * {
*
} * }
*
/** * /**
* Display the specified resource. * Display the specified resource.
* *
* @param \App\User $user
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function show($id) public function show($id)
{ {
//Log("show user id=".$id); //Log("show user id=".$id);
error_log("(show)=>".$id); error_log("(show)=>" . $id);
$user=User::find($id); $user = User::find($id);
return view('users.show')->with('user',$user); return view('users.show')->with('user', $user);
} }
@ -67,11 +69,17 @@ class UserController extends Controller
*/ */
public function edit($id) public function edit($id)
{ {
error_log("Edit:".$id);
$user=User::find($id); error_log("Edit:" . $id);
$user = User::find($id);
if (Auth::user()->role != 'ADMIN' && $user->id != Auth::user()->id) {
return redirect('/users');
}
error_log($user); error_log($user);
return view('users.edit')->with('user',$user); return view('users.edit')->with('user', $user);
} }
/** /**
@ -83,46 +91,46 @@ class UserController extends Controller
*/ */
public function update(Request $request, User $user) public function update(Request $request, User $user)
{ {
$user=User::find($request->input('id')); $user = User::find($request->input('id'));
$request->validate( $request->validate(
[ [
'name'=>'required|min:3', 'name' => 'required|min:3',
'email'=>'required|email', 'email' => 'required|email',
'role'=>'required', 'role' => 'required',
'mobile'=>'required', 'mobile' => 'required',
'bild'=>'mimes:jpg,jpeg,bmp,png,gif' 'bild' => 'mimes:jpg,jpeg,bmp,png,gif'
] ]
); );
if ($request->bild){ if ($request->bild) {
$bild = Image::make($request->bild); $bild = Image::make($request->bild);
$breite = $bild->width(); $breite = $bild->width();
$hoehe = $bild->height(); $hoehe = $bild->height();
if ($breite>$hoehe) { if ($breite > $hoehe) {
Image::make($request->bild) Image::make($request->bild)
->widen(1200) ->widen(1200)
->save(storage_path().'/img_storage/user/'.$user->id.'_gross.jpg'); ->save(storage_path() . '/img_storage/user/' . $user->id . '_gross.jpg');
Image::make($request->bild) Image::make($request->bild)
->widen(64) ->widen(64)
->save(storage_path().'/img_storage/user/'.$user->id.'.jpg'); ->save(storage_path() . '/img_storage/user/' . $user->id . '.jpg');
}else { } else {
Image::make($request->bild) Image::make($request->bild)
->heighten(900) ->heighten(900)
->save(storage_path().'/img_storage/user/'.$user->id.'_gross.jpg'); ->save(storage_path() . '/img_storage/user/' . $user->id . '_gross.jpg');
Image::make($request->bild) Image::make($request->bild)
->widen(96) ->widen(96)
->save(storage_path().'/img_storage/user/'.$user->id.'.jpg'); ->save(storage_path() . '/img_storage/user/' . $user->id . '.jpg');
} }
} }
$user->name=$request->input('name'); $user->name = $request->input('name');
$user->email=$request->input('email'); $user->email = $request->input('email');
$user->role=$request->input('role'); $user->role = $request->input('role');
$user->mobile=$request->input('mobile'); $user->mobile = $request->input('mobile');
$user->save(); $user->save();
error_log("User role: ".$user->role); error_log("User role: " . $user->role);
return redirect('/member/'); return redirect('/member/');
@ -134,11 +142,23 @@ class UserController extends Controller
* @param \App\User $user * @param \App\User $user
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function destroy(User $user) public function destroy($user_id)
{ {
// $user = User::find($user_id);
Log::info("UserController::destroy for user_id " . $user->id);
Log::info("Preparing to destroy user [" . $user->id . "]" . $user->name);
Log::info("#DESTROY_USER [users]" . $user);
$tours = DB::select("SELECT id FROM tours WHERE user_id=" . $user_id);
Log::info('#DESTROY_USER [affected tour ids]', $tours);
$bookings = DB::select("SELECT id FROM bookings WHERE user_id=" . $user_id);
Log::info("#DESTROY_USER [affected booking ids]", $bookings);
DB::delete('DELETE FROM users WHERE id=' . $user->id);
return redirect('/member/');
} }
}
}

View file

@ -4,63 +4,82 @@
<div class="container text-center text-light mt-5"> <div class="container text-center text-light mt-5">
<h1 class="text-center">{{$user->name}}</h1> <h1 class="text-center">{{$user->name}}</h1>
<form style="background-color: #fff;" class="text-dark" method="post" action="/member/{{$user->name}}" enctype="multipart/form-data"> <form style="background-color: #fff;" class="text-dark" method="post" action="/member/{{$user->name}}"
enctype="multipart/form-data">
@csrf @csrf
@method('PUT') @method('PUT')
<input type="hidden" name="id" value="{{ $user->id }}"> <input type="hidden" name="id" value="{{ $user->id }}">
<div class="form-group" style="display:flex;"> <div class="form-group" style="display:flex;">
<label class="ml-2 mt-4" style="width:150px; text-align:left;" for="name"><h4>Name:</h4></label> <label class="ml-2 mt-4" style="width:150px; text-align:left;" for="name"><h4>Name:</h4></label>
<input class="mt-3 mr-2 form-control" type="text" id="name" style="font-size:20px;" name="name" value="{{ old('name') ?? $user->name }}" required > <input class="mt-3 mr-2 form-control" type="text" id="name" style="font-size:20px;" name="name"
value="{{ old('name') ?? $user->name }}" required>
</div> </div>
<div class="form-group" style="display:flex;"> <div class="form-group" style="display:flex;">
<label class="ml-2 mt-4" style="width:150px; text-align:left;" for="mobile" ><h4>Telefonnummer:</h4></label> <label class="ml-2 mt-4" style="width:150px; text-align:left;" for="mobile"><h4>Telefonnummer:</h4>
<input type="text" class="mt-3 mr-2 form-control" id="mobile" style="font-size:20px;" name="mobile" value="{{ old('mobile') ?? $user->mobile }}" required > </label>
<input type="text" class="mt-3 mr-2 form-control" id="mobile" style="font-size:20px;" name="mobile"
value="{{ old('mobile') ?? $user->mobile }}" required>
</div> </div>
<div class="form-group" style="display:flex;"> <div class="form-group" style="display:flex;">
<label class="ml-2 mt-4" style="width:150px; text-align:left;" for="name" ><h4>EMail:</h4></label> <label class="ml-2 mt-4" style="width:150px; text-align:left;" for="name"><h4>EMail:</h4></label>
<input type="text" class="mt-3 mr-2 form-control" id="lastname" style="font-size:20px;" name="email" value="{{ old('email') ?? $user->email }}" required > <input type="text" class="mt-3 mr-2 form-control" id="lastname" style="font-size:20px;" name="email"
value="{{ old('email') ?? $user->email }}" required>
</div> </div>
<div class="form-group" style="display:flex;"> <div class="form-group" style="display:flex;">
<label class="ml-2 mt-4" style="width:150px; text-align:left;" for="bild" ><h4>Bild:</h4></label> <label class="ml-2 mt-4" style="width:150px; text-align:left;" for="bild"><h4>Bild:</h4></label>
@if(file_exists (storage_path().'/img_storage/user/'.$user->id.'.jpg')) @if(file_exists (storage_path().'/img_storage/user/'.$user->id.'.jpg'))
<!--File exists --> <!--File exists -->
<a href="/img_storage/user/{{$user->id}}_gross.jpg" data-lightbox="{{$user->id}}_gross.jpg" data-title="{{ $user->name }}"> <a href="/img_storage/user/{{$user->id}}_gross.jpg" data-lightbox="{{$user->id}}_gross.jpg"
<img src="/img_storage/user/{{$user->id}}.jpg" id="bild" class="mt-3 ml-3" style="width:256px;height:256px"> data-title="{{ $user->name }}">
<img src="/img_storage/user/{{$user->id}}.jpg" id="bild" class="mt-3 ml-3"
style="width:256px;height:256px">
</a> </a>
@else @else
<img src="/img/placeholder/user64x96.jpg" id="bild" class="mt-3 ml-3" > <img src="/img/placeholder/user64x96.jpg" id="bild" class="mt-3 ml-3">
@endif @endif
<input type="file" class="mt-3 mr-2 form-control" style="font-size:20px;" name="bild" value="" accept="image/*" onchange="preview_image(event)"> <input type="file" class="mt-3 mr-2 form-control" style="font-size:20px;" name="bild" value=""
accept="image/*" onchange="preview_image(event)">
</div> </div>
@if(Auth::user()->role=="ADMIN") @if(Auth::user()->role=="ADMIN")
<div class="form-group" style="display:flex;"> <div class="form-group" style="display:flex;">
<label class="ml-2 mt-4" style="width:130px; text-align:left;" for="name" ><h4>Rolle:</h4></label> <label class="ml-2 mt-4" style="width:130px; text-align:left;" for="name"><h4>Rolle:</h4></label>
<select name="role" class="dropdown-item ml-3 border form-control mt-3 mr-2" style="font-size:18px;" selected="{{ old('role') ?? $user->role }}"> <select name="role" class="dropdown-item ml-3 border form-control mt-3 mr-2" style="font-size:18px;"
<option value="GUEST" style="font-size:18px;" class="dropdown-item bg-light form-control" {{ $user->role=="GUEST" ? "selected" : "" }} >GUEST</option> selected="{{ old('role') ?? $user->role }}">
<option value="MEMBER" style="font-size:18px;" class="dropdown-item bg-light" {{ $user->role=="MEMBER" ? "selected" : "" }} >MEMBER</option> <option value="GUEST" style="font-size:18px;"
<option value="ADMIN" style="font-size:18px;" class="dropdown-item bg-light" {{ $user->role=="ADMIN" ? "selected" : "" }} >ADMIN</option> class="dropdown-item bg-light form-control" {{ $user->role=="GUEST" ? "selected" : "" }} >
GUEST
</option>
<option value="MEMBER" style="font-size:18px;"
class="dropdown-item bg-light" {{ $user->role=="MEMBER" ? "selected" : "" }} >MEMBER
</option>
<option value="ADMIN" style="font-size:18px;"
class="dropdown-item bg-light" {{ $user->role=="ADMIN" ? "selected" : "" }} >ADMIN
</option>
</select> </select>
</div> </div>
@else @else
<div class="form-group" style="display:flex;"> <div class="form-group" style="display:flex;">
<label class="ml-2 mt-4" style="width:130px; text-align:left;" for="name" ><h4>Rolle:</h4></label> <label class="ml-2 mt-4" style="width:130px; text-align:left;" for="name"><h4>Rolle:</h4></label>
<h4 class="mt-4">{{$user->role}}</h4> <h4 class="mt-4">{{$user->role}}</h4>
</div> </div>
@endif @endif
<a href="/member" class="btn btn-primary col-2 mb-2 float-left" style="margin-right:20px;">Zurück</a>
@if(Auth::user()->role=="ADMIN" || Auth::user()->id==$user->id) @if(Auth::user()->role=="ADMIN" || Auth::user()->id==$user->id)
<button type="submit" class="btn btn-danger col-2 mb-2 float-right mr-2">Speichern</button> <button type="submit" class="btn btn-danger col-2 mb-2 float-right mr-2">Speichern</button>
<a href="/admin/destroy_user/{{$user->id}}" class="btn btn-primary col-2 mb-2 float-left"
style="margin-right:20px;">Löschen</a>
@endif @endif
<a href="/member" class="btn btn-primary col-2 mb-2 float-left">Zurück</a>
</form> </form>
@ -69,12 +88,10 @@
<!-------------------------------- -----------------------------> <!-------------------------------- ----------------------------->
<script> <script>
function preview_image(event) function preview_image(event) {
{
console.log("Preview triggered.") console.log("Preview triggered.")
var reader = new FileReader(); var reader = new FileReader();
reader.onload = function() reader.onload = function () {
{
console.log("onload") console.log("onload")
var output = document.getElementById('bild'); var output = document.getElementById('bild');
console.log(output); console.log(output);

View file

@ -1,65 +1,74 @@
<?php <?php
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Web Routes | Web Routes
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| Here is where you can register web routes for your application. These | Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which | routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great! | contains the "web" middleware group. Now create something great!
| |
*/ */
/* /*
Route::get('/', function () { Route::get('/', function () {
return view('home'); return view('home');
}); });
Route::get('/test', 'PageController@page_home'); Route::get('/test', 'PageController@page_home');
* */ * */
Route::get('/', 'PageController@page_home'); Route::get('/', 'PageController@page_home');
Route::get('/home', 'PageController@page_home')->name('home'); Route::get('/home', 'PageController@page_home')->name('home');
Route::post('/admin/store_home','AdminController@store_home')->middleware('auth'); Route::post('/admin/store_home', 'AdminController@store_home')->middleware('auth');
Route::get('/activities', 'PageController@page_activities'); Route::get('/activities', 'PageController@page_activities');
Route::get('/become_member', function () { return view('users.become_member'); }); Route::get('/become_member', function () {
Route::get('/meetings', function () { return view('meetings'); })->middleware('auth'); return view('users.become_member');
});
Route::get('/meetings', function () {
return view('meetings');
})->middleware('auth');
Route::resource('/member',UserController::class); Route::resource('/member', UserController::class);
Route::get('/admin/upload_tourplan', 'AdminController@upload_tourplan')->middleware('auth'); Route::get('/admin/destroy_user/{user_id}', 'UserController@destroy')->middleware('auth');
Route::post('/admin/store_tourplan','AdminController@store_tourplan')->middleware('auth'); Route::get('/admin/upload_tourplan', 'AdminController@upload_tourplan')->middleware('auth');
Route::post('/admin/store_tourplan', 'AdminController@store_tourplan')->middleware('auth');
Route::get('/admin/upload_mitgliedsantrag', 'AdminController@upload_mitgliedsantrag')->middleware('auth'); Route::get('/admin/upload_mitgliedsantrag', 'AdminController@upload_mitgliedsantrag')->middleware('auth');
Route::post('/admin/store_mitgliedsantrag','AdminController@store_mitgliedsantrag')->middleware('auth'); Route::post('/admin/store_mitgliedsantrag', 'AdminController@store_mitgliedsantrag')->middleware('auth');
Route::get('/admin/edit_home', 'AdminController@edit_home')->middleware('auth'); Route::get('/admin/edit_home', 'AdminController@edit_home')->middleware('auth');
Route::get('/admin/edit_activities', 'AdminController@edit_activities')->middleware('auth'); Route::get('/admin/edit_activities', 'AdminController@edit_activities')->middleware('auth');
Route::post('/admin/store_activities', 'AdminController@store_activities')->middleware('auth'); Route::post('/admin/store_activities', 'AdminController@store_activities')->middleware('auth');
Route::get('/tour/index_old', 'TourController@index_old')->middleware('auth'); Route::get('/tour/index_old', 'TourController@index_old')->middleware('auth');
Route::post('/tour/store', 'TourController@store')->middleware('auth'); Route::post('/tour/store', 'TourController@store')->middleware('auth');
Route::post('/tour/update', 'TourController@store')->middleware('auth'); Route::post('/tour/update', 'TourController@store')->middleware('auth');
Route::post('/tour/upload_gallery/{tour_id}', 'TourController@upload_gallery'); Route::post('/tour/upload_gallery/{tour_id}', 'TourController@upload_gallery');
Route::resource('/tour', TourController::class)->middleware('auth'); Route::resource('/tour', TourController::class)->middleware('auth');
Route::get('/tour/{tour_id}/join/{room_id}', 'TourController@join_room')->middleware('auth'); Route::get('/tour/{tour_id}/join/{room_id}', 'TourController@join_room')->middleware('auth');
Route::get('/tour/{tour_id}/join4user/{room_id}/{user_id}', 'TourController@join_room4user')->middleware('auth'); Route::get('/tour/{tour_id}/join4user/{room_id}/{user_id}', 'TourController@join_room4user')->middleware('auth');
Route::get('/tour/{tour_id}/cancelBooking', 'TourController@cancelBooking')->middleware('auth'); Route::get('/tour/{tour_id}/cancelBooking', 'TourController@cancelBooking')->middleware('auth');
Route::get('/tour/{tour_id}/cancelBookingAdmin/{user_id}', 'TourController@cancelBookingAdmin')->middleware('auth'); Route::get('/tour/{tour_id}/cancelBookingAdmin/{user_id}', 'TourController@cancelBookingAdmin')->middleware('auth');
Route::get('/tour/{tour_id}/create_room/{capacity}', 'TourController@create_room')->middleware('auth'); Route::get('/tour/{tour_id}/create_room/{capacity}', 'TourController@create_room')->middleware('auth');
Route::get('/tour/{tour_id}/delete_room/{room_id}', 'TourController@delete_room')->middleware('auth'); Route::get('/tour/{tour_id}/delete_room/{room_id}', 'TourController@delete_room')->middleware('auth');
Route::get('/tour/{tour_id}/assign_room_for_user/{user_id}', 'TourController@delete_room')->middleware('auth'); Route::get('/tour/{tour_id}/assign_room_for_user/{user_id}', 'TourController@delete_room')->middleware('auth');
Route::get('/img_storage/{category}/{imageName}','ImageController@getImage'); // no middleware auth needed, its checked in Controller Route::get('/img_storage/{category}/{imageName}', 'ImageController@getImage'); // no middleware auth needed, its checked in Controller
Auth::routes(); Auth::routes();
/* Cache clearing on remote server */ /* Cache clearing on remote server */
Route::get('/clear-cache', function() { Artisan::call('cache:clear');Artisan::call('config:clear'); return "Cache cleared, Config reloaded"; }); Route::get('/clear-cache', function () {
//Route::get('/home', 'HomeController@index')->name('home'); Artisan::call('cache:clear');
Artisan::call('config:clear');
return "Cache cleared, Config reloaded";
});
//Route::get('/home', 'HomeController@index')->name('home');

File diff suppressed because one or more lines are too long