This commit is contained in:
Sebastian Davaris 2020-06-30 12:22:44 +02:00
commit 52735bc569
34 changed files with 356 additions and 82 deletions

View File

@ -1,19 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="laravel" uuid="666d3dad-499f-4d99-8988-fd376e6db9e6">
<data-source source="LOCAL" name="laravel.sqlite" uuid="bf392a85-1584-4a27-a552-e491a55b9410">
<driver-ref>sqlite.xerial</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>org.sqlite.JDBC</jdbc-driver>
<jdbc-url>jdbc:sqlite:$PROJECT_DIR$/skolehjem/database/laravel.sqlite</jdbc-url>
<libraries>
<library>
<url>file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.31.1/license.txt</url>
</library>
<library>
<url>file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.31.1/sqlite-jdbc-3.31.1.jar</url>
</library>
</libraries>
</data-source>
</component>
</project>

View File

@ -113,9 +113,10 @@ class ContactController extends Controller
* @return \Illuminate\Http\RedirectResponse
* @throws \Exception
*/
public function destroy(Contact $id)
public function destroy($id)
{
$id->delete();
$contact = Contact::find($id);
$contact->delete();
return redirect()->route("contacts.index");
}
}

View File

@ -114,8 +114,8 @@ class EventController extends Controller
*/
public function destroy($id)
{
$link = Event::find($id);
$link->delete();
$event = Event::find($id);
$event->delete();
return redirect()->route("events.index");
}
}

View File

@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\ResourceExtension;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
@ -23,9 +24,11 @@ class ResourceExtensionController extends Controller
*
* @return \Illuminate\Http\Response
*/
public function index()
public function index(Request $request)
{
//
$extensions = ResourceExtension::query()->paginate($request->input("limit", 20));
return Response::detect("resource-extensions.index", ["extension" => $extensions]);
}
/**
@ -35,7 +38,7 @@ class ResourceExtensionController extends Controller
*/
public function create()
{
//
return Response::detect("resource-extensions.create");
}
/**
@ -46,7 +49,16 @@ class ResourceExtensionController extends Controller
*/
public function store(Request $request)
{
//
$requestBody = $request->validate([
"extension" => "unique|required|max:255",
"description" => "required|max:255"
]);
$event = new ResourceExtension($requestBody);
$event->save();
return Response::detect("events.store");
}
/**
@ -55,9 +67,9 @@ class ResourceExtensionController extends Controller
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
public function show(ResourceExtension $id)
{
//
return Response::detect("resource-extensions.show", ["extension" => $id]);
}
/**
@ -68,7 +80,8 @@ class ResourceExtensionController extends Controller
*/
public function edit($id)
{
//
$extension = ResourceExtension::find($id);
return Response::detect("resource-extensions.edit", ["extension" => $extension]);
}
/**
@ -80,7 +93,14 @@ class ResourceExtensionController extends Controller
*/
public function update(Request $request, $id)
{
//
$data = $request->all();
$extension = ResourceExtension::find($id);
$extension->update($data);
$extension->save();
return Response::detect("resource-extensions.update", [ "extension" => $extension]);
}
/**
@ -91,6 +111,8 @@ class ResourceExtensionController extends Controller
*/
public function destroy($id)
{
//
$extension = ResourceExtension::find($id);
$extension->delete();
return redirect()->route("resource-extensions.index");
}
}

View File

@ -0,0 +1,105 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Spatie\Permission\Models\Role;
class rolesController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$roles = Role::query()->paginate($request->input("limit", 20));
return Response::detect("roles.index", [ "roles" => $roles]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return Response::detect("roles.create");
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$requestRole = $request->validate([
"name" => "required|max:255",
"description" => "required|max:255"
]);
$role = new Role($requestRole);
$role->save();
return Response::detect("roles.store");
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
return Response::detect("roles.show", [ "role" => $id]);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$role = Role::find($id);
return Response::detect("roles.edit", ["role" => $role]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$data = $request->all();
$role = Role::find($id);
$role->update($data);
$role->save();
return Response::detect("roles.update", [ "role" => $role ]);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$role = Role::find($id);
$role->delete();
return redirect()->route("roles.index");
}
}

View File

@ -8,6 +8,7 @@ use Illuminate\Http\Response;
use App\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
use Spatie\Permission\Models\Role;
class UserController extends Controller
@ -44,7 +45,9 @@ class UserController extends Controller
*/
public function create()
{
return Response::detect("users.create");
$roles = Role::all();
return Response::detect("users.create", ['roles' => $roles]);
}
/**
@ -63,6 +66,7 @@ class UserController extends Controller
"email" => "required|email|unique:users",
"password" => "required|max:60",
"phone" => "required|unique:users",
"roles" => "max:255"
]);
@ -102,10 +106,12 @@ class UserController extends Controller
*/
public function edit($id)
{
$roles = Role::all();
$user = User::find($id);
return Response::detect("users.edit", [
"user" => $user
"user" => $user,
"roles" => $roles,
]);
}

View File

@ -1,45 +0,0 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Hash;
use Spatie\Permission\Traits\HasRoles;
class Staff extends Model
{
use Notifiable;
use HasRoles;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name_first', "name_last", 'email', 'password', "phone"
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function setPasswordAttribute($password) {
$this->attributes["password"] = Hash::make($password);
}
}

View File

@ -21,7 +21,7 @@ class User extends Authenticatable
* @var array
*/
protected $fillable = [
'name_first', "name_last", 'email', 'password', "phone"
'name_first', "name_last", 'email', 'password', "phone", "roles"
];
/**

View File

@ -16,6 +16,7 @@ class CreateAlbumsTable extends Migration
Schema::create('albums', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->foreignId('user_id')->constrained();
});
}

View File

@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateResourceExtensions extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('resource_extensions', function (Blueprint $table) {
$table->id();
$table->string("extension")->unique();
$table->text("description");
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('resource_extensions');
}
}

View File

@ -21,11 +21,13 @@ class UserSeeder extends Seeder
Log::debug("YEET");
if(User::where("name_first", "admin"))
{
return;
}
Log::debug("OPRET");
$user = new \App\User();

View File

@ -6,7 +6,7 @@
@endsection
@section("path")
<a href="" class="text-white">Opret Kontakt</a> /
<a href="{{ route('contacts.create') }}" class="text-white">Opret Kontakt</a> /
@endsection
@section("content")

View File

@ -6,7 +6,7 @@
@endsection
@section("path")
<a href="" class="text-white">Slet Kontakt</a> /
<a href="{{ route('contacts.destroy') }}" class="text-white">Slet Kontakt</a> /
@endsection
@section("content")

View File

@ -6,7 +6,7 @@
@endsection
@section("path")
<a href="" class="text-white">Vis Kontakter</a> /
<a href="{{ route('contacts.index', [ 'contacts' => $contacts ]) }}" class="text-white">Vis Kontakter</a> /
@endsection
@section("content")

View File

@ -6,7 +6,7 @@
@endsection
@section("path")
<a href="" class="text-white">Slet Kontakt</a> /
<a href="{{ route('contacts.destroy') }}" class="text-white">Slet Kontakt</a> /
@endsection
@section("content")

View File

@ -6,7 +6,7 @@
@endsection
@section("path")
<a href="" class="text-white">Opbevar Kontakt</a> /
<a href="{{ route('contacts.store') }}" class="text-white">Opbevar Kontakt</a> /
@endsection
@section("content")

View File

@ -19,6 +19,15 @@
<a href="{{ route('users.create') }}" class="text-white"><img src="{{ asset('/images/icons/plus.svg') }}" alt="Create">Opret Bruger</a>
</div>
</div>
<div class="segment">
<h3 class="text-white">Roller</h3>
<div class="row">
<a href="{{ route("roles.index") }}" class="text-white"><img src="{{ asset('/images/icons/eye.svg') }}" alt="Read">Vis Roller</a>
</div>
<div class="row">
<a href="{{ route('roles.create') }}" class="text-white"><img src="{{ asset('/images/icons/plus.svg') }}" alt="Create">Opret Rolle</a>
</div>
</div>
<div class="segment">
<h3 class="text-white">Menuplan</h3>
<div class="row">
@ -67,6 +76,15 @@
{{-- <a href="{{ route('staff.create') }}" class="text-white"><img src="{{ asset('/images/icons/plus.svg') }}" alt="Create">Opret Personal</a>--}}
{{-- </div>--}}
{{-- </div>--}}
<div class="segment">
<h3 class="text-white">Kontakter</h3>
<div class="row">
<a href="{{ route("contacts.index") }}" class="text-white"><img src="{{ asset('/images/icons/eye.svg') }}" alt="Read">Vis Kontakter</a>
</div>
<div class="row">
<a href="{{ route('contacts.create') }}" class="text-white"><img src="{{ asset('/images/icons/plus.svg') }}" alt="Create">Opret Kontakt</a>
</div>
</div>
<div class="segment">
<h3 class="text-white">Feedback</h3>
<div class="row">

View File

@ -0,0 +1,22 @@
@extends("admin.layout.base")
@extends("admin.layout.header")
@section("title")
Rolle - Opret
@endsection
@section("path")
<a href="{{ route('roles.create') }}" class="text-white">Opret Rolle</a> /
@endsection
@section("content")
<h1>Opret Rolle:</h1>
<form method="post" action="{{ route("roles.store") }}">
@csrf
<label for="name">Navn:</label>
<input type="text" name="name" id="name" placeholder="Admin" required>
<label for="name">Beskrivelse:</label>
<input type="text" name="description" id="description" placeholder="Admin rollen bruges til administratorene" required>
<input type="submit" class="btn btn-dark text-white" value="Opret">
</form>
@endsection

View File

@ -0,0 +1,13 @@
@extends("admin.layout.base")
@extends("admin.layout.header")
@section("title")
Rolle - Fjern
@endsection
@section("path")
<a href="{{ route('roles.delete') }}" class="text-white">Fjern Rolle</a> /
@endsection
@section("content")
@endsection

View File

@ -0,0 +1,23 @@
@extends("admin.layout.base")
@extends("admin.layout.header")
@section("title")
Rolle - Rediger
@endsection
@section("path")
<a href="{{ route('roles.edit', ['role' => $role]) }}" class="text-white">Rediger Rolle</a> /
@endsection
@section("content")
<h1>Rediger Rolle:</h1>
<form method="post" action="{{ route("roles.update", ['role' => $role]) }}">
@csrf
@method("put")
<label for="name">Navn:</label>
<input type="text" name="name" id="name" placeholder="Admin" value="{{ $role->name }}" required>
<label for="name">Beskrivelse:</label>
<input type="text" name="description" id="description" placeholder="Admin rollen bruges til administratorene" value="{{ $role->description }}" required>
<input type="submit" class="btn btn-dark text-white" value="Rediger">
</form>
@endsection

View File

@ -0,0 +1,35 @@
@extends("admin.layout.base")
@extends("admin.layout.header")
@section("title")
Rolle - Vis
@endsection
@section("path")
<a href="{{ route('roles.index') }}" class="text-white">Vis Roller</a> /
@endsection
@section("content")
<table class="tbl">
<tr>
<th>Navn</th>
<th>Beskrivelse</th>
<th style="width: 1em;"><img class="w-100" src="{{ asset('/images/icons/pencil.svg') }}" alt="Update"></th>
<th style="width: 1em;"><img class="w-100" src="{{ asset('/images/icons/trashcan.svg') }}" alt="Delete"></th>
</tr>
@foreach($roles as $role)
<tr>
<td>{{ $role->name }}</td>
<td>{{ $role->description }}</td>
<td><a href="{{ route("roles.edit", [ "role" => $role->id ]) }}"><img class="w-100" src="{{ asset('/images/icons/pencil-dark.svg') }}" alt="Update"></a></td>
<td><form method="post" action="{{ route("roles.destroy", [ "role" => $role ]) }}" class="w-100 nostyle">
@csrf
@method("delete")
<button class="w-100 nostyle" type="submit"><img class="w-100 cursor-pointer" src="{{ asset('/images/icons/trashcan-dark.svg') }}" alt="Delete"></button>
</form>
</td>
</tr>
@endforeach
</table>
@endsection

View File

@ -0,0 +1,14 @@
@extends("admin.layout.base")
@extends("admin.layout.header")
@section("title")
Rolle - Vis
@endsection
@section("path")
<a href="{{ route('rolle.index') }}" class="text-white">Vis Brugere</a> /
@endsection
@section("content")
show.blade.php
@endsection

View File

@ -0,0 +1,14 @@
@extends("admin.layout.base")
@extends("admin.layout.header")
@section("title")
Rolle - Opret
@endsection
@section("path")
<a href="{{ route('roles.create') }}" class="text-white">Opret Roller</a> /
@endsection
@section("content")
Rollen blev (ikke) oprettet.
@endsection

View File

@ -0,0 +1,14 @@
@extends("admin.layout.base")
@extends("admin.layout.header")
@section("title")
Rolle - Rediger
@endsection
@section("path")
<a href="{{ route('roles.edit', ['role' => $role]) }}" class="text-white">Rediger Rolle</a> /
@endsection
@section("content")
Din rolle blev (ikke) redigeret.
@endsection

View File

@ -27,9 +27,10 @@
<input type="tel" name="phone" id="tel" placeholder="12345678" pattern="[0-9]{2}[0-9]{2}[0-9]{2}[0-9]{2}" required>
<label for="role">Rolle:</label>
<select name="role" id="role" class="mb-2" required>
<option value="admin">Admin</option>
<option value="staff">Personale</option>
<option value="resident">Beboer</option>
<option disabled selected value> -- Vælg en Rolle -- </option>
@foreach($roles as $role)
<option value="{{ $role->name }}">{{ $role->name }}</option>
@endforeach
</select>
<input type="submit" class="btn btn-dark text-white" value="Opret">
</form>

View File

@ -28,9 +28,10 @@
<input type="tel" name="phone" id="tel" value="{{ $user->phone }}" required>
<label for="role">Rolle:</label>
<select name="role" id="role" class="mb-2" required>
<option value="admin">Admin</option>
<option value="staff">Personale</option>
<option value="resident">Beboer</option>
<option disabled selected value> -- Vælg en Rolle -- </option>
@foreach($roles as $role)
<option value="{{ $role->name }}">{{ $role->name }}</option>
@endforeach
</select>
<input type="submit" class="btn btn-dark text-white" value="Rediger">
</form>

View File

@ -18,7 +18,7 @@ use Illuminate\Support\Facades\Route;
//});
Route::get("/", "RootController@index")->name("root.index");
Route::get("/home", "RootController@index")->name("root.index");
Route::get("/login", "UserController@showLogin")->name("users.show-login");
Route::post("/login", "UserController@login")->name("users.login");
@ -38,3 +38,5 @@ Route::resource("washing-machines", "WashingMachineController");
Route::resource("washing-reservations", "WashingReservationController");
Route::resource("feedbacks", "FeedbackController");
Route::resource("external-links", "ExternalLinkController");
Route::resource("resource-extensions", "ResourceExtensionController");
Route::resource("roles", "RolesController");