Added Production build.

This commit is contained in:
2021-02-24 10:01:35 +01:00
commit 1e27c950c5
140 changed files with 14022 additions and 0 deletions
+65
View File
@@ -0,0 +1,65 @@
<?php
namespace App\Http\Controllers;
use App\Models\Role;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Log;
class AuthController extends Controller
{
public function loginView() {
return view('login');
}
public function login(Request $request) {
$credentials = $request->validate([
'username' => 'required|max:64',
'password' => 'required'
]);
if(Auth::attempt($credentials)) {
$request->session()->regenerate();
return redirect("/");
}
return view("error");
}
public function registerView() {
return view('register');
}
public function register(Request $request) {
$rawUser = $request->validate([
'name' => 'required|max:64|min:2',
'password' => 'required|max:48|min:8|confirmed',
'username' => 'required'
]);
$user = new User($rawUser);
$user->password = Hash::make($user->password);
$user->role()->associate(Role::where('name', 'User')->first());
if($user->save()) {
return redirect("login");
}
return redirect("error");
}
public function logout() {
Auth::logout();
return redirect("/");
}
}
+13
View File
@@ -0,0 +1,13 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
+12
View File
@@ -0,0 +1,12 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ErrorController extends Controller
{
public function error() {
return view("error");
}
}
+99
View File
@@ -0,0 +1,99 @@
<?php
namespace App\Http\Controllers;
use App\Models\File;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
class FileController extends Controller
{
/**
* @param Request $request
* @return View
*/
public function index(Request $request) : view
{
$files = File::query()->paginate($request->input("limit", 20));
return view("files-index", ["files" => $files]);
}
/**
* @return View
*/
public function create() : view
{
return view("create-file");
}
/**
* @param Request $request
* @return RedirectResponse
*/
public function store(Request $request) : RedirectResponse
{
$rawdata = $request->validate([
'link' => 'required|string'
]);
$file = new File($rawdata);
if($file->save()){
return redirect()->route("index");
}
return redirect()->route("error");
}
/**
* @param File $file
* @return View
*/
public function show(File $file): View
{
return view("show-file",[
"file" => $file
]
);
}
/**
* @param Request $request
* @param File $file
* @return View
*/
public function update(Request $request, File $file) : view
{
$rawdata = $request->validate([
'link' => 'required|string'
]);
$file->update($rawdata);
if(!$file->save()){
return view("admin.show-file",[
'file' => $file
]);
}
else{
return view("admin.show-file",[
'file' => $file,
"success" => "Opdaterede file"
]);
}
}
/**
* @param File $file
* @return RedirectResponse
*/
public function destroy(File $file): RedirectResponse
{
$file->delete();
return redirect()->route("index");
}
}
+42
View File
@@ -0,0 +1,42 @@
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use App\Models\Status;
use Illuminate\Http\Request;
class IndexController extends Controller
{
public function index() {
if(auth()->user()) {
$posts = Post::wherehas("status", function ($query) {
$query->where("name", "!=", "Pending")
->orWhere("user_id", "=", auth()->id());
})->get();
return view('index')->with("posts", $posts);
}
$posts = Post::wherehas("status", function ($query) {
$query->where("name", "!=", "Pending");
})->get();
// $posts = Post::all();
return view('index')->with("posts", $posts);
}
public function adminIndex(Request $request) {
$posts = Post::all();
if($request->get("type") != null) {
$posts = Post::wherehas("status", function ($query) {
$query->where("name", "=", "Pending");
})->get();
}
return view('admin.posts')->with("posts", $posts);
}
}
@@ -0,0 +1,117 @@
<?php
namespace App\Http\Controllers;
use App\Models\Occupation;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Redirector;
class OccupationController extends Controller
{
/**
* Display a listing of the resource.
*
* @param Request $request
* @return View
*/
public function index(Request $request): View
{
$occupations = Occupation::all();
return view("occupation.index", [ "occupations" => $occupations]);
}
/**
* Show the form for creating a new resource.
*
* @return View
*/
public function create(): View
{
return view("occupation.create");
}
/**
* Store a newly created resource in storage.
*
* @param Request $request
* @return RedirectResponse
*/
public function store(Request $request) : RedirectResponse
{
$rawOccupation = $request->validate([
'name' => 'required|string'
]);
$Occupation = new Occupation($rawOccupation);
if($Occupation->save()) {
return redirect()->route("index");
}
return redirect()->route("error");
}
/**
* Show the form for editing the specified resource.
*
* @param Occupation $occupation
* @return Response
*/
public function edit(Occupation $occupation)
{
return \view("occupation.show-occupation")->with([
"occupation" => $occupation
]);
}
/**
* Update the specified resource in storage.
*
* @param Request $request
* @param Occupation $occupation
* @return View
*/
public function update(Request $request, Occupation $occupation): View
{
$data = $request->validate([
'name' => 'required|string'
]);
$occupation->update($data);
if(!$occupation->save()){
return view("occupation.show-occupation",
[
"occupation" => $occupation,
"error" => "occupation was not updated"
]);
}else{
return view("occupation.show-occupation",
[
"occupation" => $occupation,
"success" => "updated occupation"
]);
}
}
/**
* Remove the specified resource from storage.
*
* @param Occupation $occupation
* @return RedirectResponse
*/
public function destroy(Occupation $occupation): RedirectResponse
{
$occupation->post()->delete();
if($occupation->delete()){
return redirect()->route("index");
}
return redirect()->route("error");
}
}
+270
View File
@@ -0,0 +1,270 @@
<?php
namespace App\Http\Controllers;
use App\Models\File;
use App\Models\Occupation;
use App\Models\Post;
use App\Models\Status;
use App\Models\TimePeriod;
use App\Models\User;
use Carbon\Carbon;
use Carbon\Traits\Date;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Redirector;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Redirect;
class PostController extends Controller
{
/**
* Display a listing of the resource.
*
* @param Request $request
* @return View
*/
public function index(Request $request): View
{
$search = $request->input("s");
$posts = Post::query()
->join("statuses", "posts.status_id", "=", "statuses.id")
->join("occupations", "posts.occupation_id", "=", "occupations.id")
->where("posts.title", "LIKE", "%{$search}%")
->orWhere("posts.text", "LIKE", "%{$search}%")
->orWhere("statuses.name", "LIKE", "%{$search}%")
->orWhere("occupations.name", "LIKE", "%{$search}%")
->get();
return view("index", [ "posts" => $posts]);
}
/**
* @return Application|Factory|View
*/
public function create() : View
{
$occupations = Occupation::all();
$formats = TimePeriod::all();
return view("create-post", [
"occupations" => $occupations,
"formats" => $formats
]);
}
/**
* @param Request $request
* @return RedirectResponse
*/
public function store(Request $request) : RedirectResponse
{
$saved = false;
$rawpost = $request->validate([
'title' => 'required|string',
'text' => 'required|string',
'file' => 'nullable|file|mimes:pdf',
'time' => 'required|integer',
'time_period_id' => 'required|integer',
'occupation_id' => 'required|integer',
]);
$post = new Post();
$post->title = $rawpost["title"];
$post->post_time = Carbon::now();
$post->time = $rawpost["time"];
// Sets state to the default.
$post->status()->associate(Status::where("name", "Pending")->first());
// Sets the user to the current user.
$post->user()->associate($request->user());
if($request->user()->role->name === "Admin"){
$post->status()->associate(Status::where("name", "Looking for collaborator")->first());
}
else {
$post->status()->associate(Status::where("name", "Pending")->first());
}
// Sets status to the default.
$post->timePeriod()->associate($rawpost["time_period_id"]);
$post->occupation()->associate($rawpost["occupation_id"]);
// if(key_exists("text", $rawpost) && $rawpost['text'] != null) {
$post->text = $rawpost['text'];
$saved = $post->save();
// }
// else {
// Handle file upload.
if(key_exists("file", $rawpost))
{
if($request->file("file") == null) {
return \redirect("error");
}
$filePath = $request->file("file")->store("public/uploads");
$file = new File();
$file->link = $filePath;
$saved = $post->save();
$file->post()->associate($post);
$file->save();
}
// }
if($saved) {
return redirect()->route("index");
}
return redirect()->route("error");
}
/**
* Display the specified resource.
*
* @param Post $post
* @return View
*/
public function show(Post $post): View
{
$occupations = Occupation::all();
$formats = TimePeriod::all();
$states = Status::all();
return view("admin.show-post", [
"post" => $post,
"occupations" => $occupations,
"formats" => $formats,
"states" => $states
]);
}
/**
* @param Request $request
* @param Post $post
* @return Application|Factory|View
*/
public function update(Request $request, Post $post)
{
Log::critical("REEEEE");
$data = $request->validate([
'title' => 'required|string',
// 'text' => 'required|string',
'text' => 'required|string',
'file' => 'nullable|file',
'time' => 'required|integer',
'occupation_id' => 'required|integer',
'state_id' => 'required|integer',
'time_period_id' => 'required|integer'
]);
Log::critical("PRE UPDATE");
$post->update($data);
Log::critical("UPDATE");
$saved = false;
// if(key_exists("text", $data) && $data['text'] != null && $data['text'] != '') {
$post->text = $data['text'];
Log::critical("FIRST IF");
$saved = $post->save();
// }
// else {
// Handle file upload.
if(key_exists("file", $data)) {
if($request->file("file") == null) {
return \redirect("error");
}
$filePath = "";
if($post->files()->first()->exists()) {
$filePath = $request->file("file")->storeAs("public/uploads", $post->files()->first()->link);
// $saved = $post->save();
Log::critical("IF");
}
else {
$filePath = $request->file("file")->store("public/uploads");
$file = new File();
$file->link = $filePath;
$file->post()->associate($post);
$file->save();
Log::critical("ELSE");
}
}
// }
$post->occupation()->associate(Occupation::find($data["occupation_id"]));
$post->status()->associate(Status::find($data["state_id"]));
$post->timePeriod()->associate(TimePeriod::find($data["time_period_id"]));
$saved = $post->save();
$occupations = Occupation::all();
$formats = TimePeriod::all();
$states = Status::all();
if($saved){
return view("admin.show-post", [
"post" => $post,
"occupations" => $occupations,
"formats" => $formats,
"states" => $states
]);
}else{
return view("admin.show-post", [
"post" => $post,
"occupations" => $occupations,
"formats" => $formats,
"states" => $states,
"success" => "Opdaterede opslaget."
]);
}
}
/**
* @param Post $post
* @return RedirectResponse
*/
public function destroy(Post $post) : RedirectResponse
{
$post->delete();
return redirect()->route("index");
}
}
+115
View File
@@ -0,0 +1,115 @@
<?php
namespace App\Http\Controllers;
use App\Models\Role;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Contracts\View\View;
class RoleController extends Controller
{
/**
* Display a listing of the resource.
*
* @param Request $request
* @return View
*/
public function index(Request $request): View
{
$roles = Role::query()->paginate($request->input("limit", 20));
return view("roles-index",["roles" => $roles]);
}
/**
* Show the form for creating a new resource.
* @return View
*/
public function create(): View
{
return view("admin.create-role");
}
/**
* Store a newly created resource in storage.
*
* @param Request $request
* @return RedirectResponse
*/
public function store(Request $request): RedirectResponse
{
$rawdata = $request->validate([
'name' => 'required|string'
]);
$role = new Role($rawdata);
if($role->save()){
return redirect()->route("index");
}
return redirect()->route("error");
}
/**
* Display the specified resource.
*
* @param Role $role
* @return View
*/
public function show(Role $role): View
{
return view("admin.show-role",[
"role" => $role
]);
}
/**
* Show the form for editing the specified resource.
* @param Role $role
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|View|\Illuminate\Http\Response
*/
public function edit(Role $role)
{
}
/**
* Update the specified resource in storage.
*
* @param Request $request
* @param Role $role
* @return view
*/
public function update(Request $request, Role $role): View
{
$rawdata = $request->validate([
'name' => 'required|string'
]);
$role->update($rawdata);
if(!$role->save()){
return view("admin.show-role",[
'role' => $role
]);
}
else{
return view("admin.show-role",[
'role' => $role,
"success" => "Opdaterede role"
]);
}
}
/**
* Remove the specified resource from storage.
*
* @param Role $role
* @return RedirectResponse
*/
public function destroy(Role $role): RedirectResponse
{
$role->delete();
return redirect()->route("index");
}
}
+121
View File
@@ -0,0 +1,121 @@
<?php
namespace App\Http\Controllers;
use App\Models\Status;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Redirector;
class StatusController extends Controller
{
/**
* Display a listing of the resource.
*
* @param Request $request
* @return View
*/
public function index(Request $request) : view
{
$status = Status::all();
return view("state.index", [ "states" => $status]);
}
/**
* Show the form for creating a new resource.
*
* @param Request $request
* @return Application|Factory|View|RedirectResponse
*/
public function create(Request $request)
{
return \view("state.create");
}
/**
* Store a newly created resource in storage.
*
* @param Request $request
* @return RedirectResponse
*/
public function store(Request $request) : RedirectResponse
{
$rawstatus = $request->validate([
'name' => 'required|string'
]);
$status = new Status($rawstatus);
if($status->save()) {
return redirect()->route("index");
}
return redirect()->route("error");
}
/**
* Display the specified resource.
*
* @param Status $status
* @return View
*/
public function show(Status $status) : View
{
return view("state.show-status")->with([
"state" => $status
]);
}
/**
* Show the form for editing the specified resource.
*
* @param Status $status
* @return Response
*/
public function edit(Status $status): Response
{
//
}
/**
* Update the specified resource in storage.
*
* @param Request $request
* @param Status $status
* @return View
*/
public function update(Request $request, Status $status): View
{
$data = $request->validate([
'name' => 'required|string'
]);
$status->update($data);
if(!$status->save()){
return view("state.show-status", [ "states" => $status ]);
}else{
$states = Status::all();
return view("state.index", ['states' => $states, "success" => "Opdaterede state"]);
}
}
/**
* Remove the specified resource from storage.
*
* @param Status $status
* @return RedirectResponse
*/
public function destroy(Status $status): RedirectResponse
{
$status->posts()->delete();
$status->delete();
return redirect()->route("index");
}
}
@@ -0,0 +1,125 @@
<?php
namespace App\Http\Controllers;
use App\Models\TimePeriod;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
class TimePeriodController extends Controller
{
/**
* Display a listing of the resource.
*
* @param Request $request
* @return view
*/
public function index(Request $request) : view
{
$timePeriods = TimePeriod::all();
return view("timeperiod.index")->with([
"timePeriods" => $timePeriods
]);
}
/**
* Show the form for creating a new resource.
*
*
* @return View
*/
public function create(): View
{
return view("timeperiod.create");
}
/**
* Store a newly created resource in storage.
*
* @param $request
* @return RedirectResponse
*/
public function store(Request $request): RedirectResponse
{
$rawtimeperiod = $request->validate([
'name' => 'required|string'
]);
$timeperiod = new TimePeriod($rawtimeperiod);
if($timeperiod->save()) {
return redirect()->route("index");
}
return redirect()->route("error");
}
/**
* Display the specified resource.
*
* @param TimePeriod $timePeriod
* @return view
*/
public function show(TimePeriod $timePeriod): View
{
return view("timeperiod.show-timeperiod",
[
"timePeriod" => $timePeriod
]);
}
/**
* Show the form for editing the specified resource.
*
* @param TimePeriod $timePeriod
* @return \Illuminate\Http\Response
*/
public function edit(TimePeriod $timePeriod)
{
//
}
/**
* Update the specified resource in storage.
*
* @param Request $request
* @param TimePeriod $timePeriod
* @return View
*/
public function update(Request $request, TimePeriod $timePeriod) : View
{
$rawdata = $request->validate([
'name' => 'required|string'
]);
$timePeriod->update($rawdata);
if(!$timePeriod->save()){
return view("timeperiod.show-timeperiod",[
'timePeriod' => $timePeriod
]);
}
else{
return view("timeperiod.show-timeperiod",[
'timePeriod' => $timePeriod,
"success" => "Opdaterede Time Period"
]);
}
}
/**
* Remove the specified resource from storage.
*
* @param TimePeriod $timePeriod
* @return RedirectResponse
*/
public function destroy(TimePeriod $timePeriod) : RedirectResponse
{
$timePeriod->post()->delete();
$timePeriod->delete();
return redirect()->route("index");
}
}
+139
View File
@@ -0,0 +1,139 @@
<?php
namespace App\Http\Controllers;
use App\Models\Role;
use App\Models\User;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Log;
use Illuminate\Contracts\View\View;
//use Illuminate\View\View;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return View
*/
public function index() : View
{
$users = User::all();
return view("admin.users")->with([
"users" => $users
]);
}
/**
* Store a newly created resource in storage.
*
* @param $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param $user
* @return \Illuminate\Http\Response
*/
public function show(User $user)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param User $user
* @return View
*/
public function edit(User $user) : View
{
$roles = Role::all();
// Used so users can edit themself.
if(auth()->user()->role->name != "Admin") {
if($user->id != auth()->user()->id) {
return view("error");
}
}
return view("admin.show-user")->with([
"user" => $user,
"roles" => $roles
]);
}
/**
* Update the specified resource in storage.
*
* @param Request $request
* @param User $user
* @return View
*/
public function update(Request $request, User $user) : View
{
$data = $request->validate([
// 'name' => 'required|string|max:64|min:2',
// 'password' => 'nullable|max:48|min:8|confirmed',
// 'email' => 'required|email',
'role' => 'nullable'
]);
if (key_exists("role", $data) && $data["role"] != null) {
$user->role()->associate(Role::find($data["role"]));
}
// if(key_exists("password", $data) && $data["password"] != null) {
// $user->password = Hash::make($user->password);
// }
// $user->name = $data["name"];
// $user->email = $data["email"];
$user->save();
$roles = Role::all();
// Used so users can edit themself.
if(auth()->user()->role->name != "Admin") {
if($user->id != auth()->user()->id) {
return view("error");
}
}
return view("admin.show-user")->with([
"user" => $user,
"roles" => $roles
]);
}
/**
* Remove the specified resource from storage.
*
* @param User $user
* @return RedirectResponse
*/
// public function destroy(User $user) : RedirectResponse
// {
// if($user->id == auth()->id()) {
// return redirect()->route("index");
// }
//
// $user->posts()->delete();
//
// $user->delete();
//
// return redirect()->route("index");
// }
}