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
+41
View File
@@ -0,0 +1,41 @@
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
//
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')->hourly();
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
+40
View File
@@ -0,0 +1,40 @@
<?php
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Throwable;
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that are not reported.
*
* @var array
*/
protected $dontReport = [
//
];
/**
* A list of the inputs that are never flashed for validation exceptions.
*
* @var array
*/
protected $dontFlash = [
'password',
'password_confirmation',
];
/**
* Register the exception handling callbacks for the application.
*
* @return void
*/
public function register()
{
$this->reportable(function (Throwable $e) {
//
});
}
}
+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");
// }
}
+66
View File
@@ -0,0 +1,66 @@
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
// \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class,
\Fruitcake\Cors\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
}
+21
View File
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
class Authenticate extends Middleware
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param \Illuminate\Http\Request $request
* @return string|null
*/
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return route('login-view');
}
}
}
+17
View File
@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
class EncryptCookies extends Middleware
{
/**
* The names of the cookies that should not be encrypted.
*
* @var array
*/
protected $except = [
//
];
}
@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware;
class PreventRequestsDuringMaintenance extends Middleware
{
/**
* The URIs that should be reachable while maintenance mode is enabled.
*
* @var array
*/
protected $except = [
//
];
}
@@ -0,0 +1,32 @@
<?php
namespace App\Http\Middleware;
use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null ...$guards
* @return mixed
*/
public function handle(Request $request, Closure $next, ...$guards)
{
$guards = empty($guards) ? [null] : $guards;
foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME);
}
}
return $next($request);
}
}
+18
View File
@@ -0,0 +1,18 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
class TrimStrings extends Middleware
{
/**
* The names of the attributes that should not be trimmed.
*
* @var array
*/
protected $except = [
'password',
'password_confirmation',
];
}
+20
View File
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Middleware\TrustHosts as Middleware;
class TrustHosts extends Middleware
{
/**
* Get the host patterns that should be trusted.
*
* @return array
*/
public function hosts()
{
return [
$this->allSubdomainsOfApplicationUrl(),
];
}
}
+23
View File
@@ -0,0 +1,23 @@
<?php
namespace App\Http\Middleware;
use Fideloper\Proxy\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array|string|null
*/
protected $proxies;
/**
* The headers that should be used to detect proxies.
*
* @var int
*/
protected $headers = Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO | Request::HEADER_X_FORWARDED_AWS_ELB;
}
+17
View File
@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
];
}
+19
View File
@@ -0,0 +1,19 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class File extends Model
{
use HasFactory;
protected $fillable = [
"link"
];
public function post(){
return $this->belongsTo(Post::class);
}
}
+20
View File
@@ -0,0 +1,20 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Occupation extends Model
{
use HasFactory;
protected $fillable = [
"name"
];
public function post(){
return $this->hasMany(Post::class);
}
}
+34
View File
@@ -0,0 +1,34 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use HasFactory;
protected $fillable = [
"title",
"text",
"post_time",
"time"
];
public function timePeriod(){
return $this->belongsTo(TimePeriod::class);
}
public function occupation(){
return $this->belongsTo(Occupation::class);
}
public function status(){
return $this->belongsTo(Status::class);
}
public function user(){
return $this->belongsTo(User::class);
}
public function files(){
return $this->hasMany(File::class);
}
}
+19
View File
@@ -0,0 +1,19 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Role extends Model
{
use HasFactory;
protected $fillable = [
"name"
];
public function users(){
return $this->hasMany(User::class);
}
}
+19
View File
@@ -0,0 +1,19 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Status extends Model
{
use HasFactory;
protected $fillable = [
"name"
];
public function posts(){
return $this->hasMany(Post::class);
}
}
+19
View File
@@ -0,0 +1,19 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class TimePeriod extends Model
{
use HasFactory;
protected $fillable = [
"name"
];
public function post(){
return $this->hasMany(Post::class);
}
}
+52
View File
@@ -0,0 +1,52 @@
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Hash;
class User extends Authenticatable
{
use HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name',
'username',
'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password',
'remember_token',
];
public function role(){
return $this->belongsTo(Role::class);
}
public function posts() {
return $this->hasMany(Post::class);
}
/*
* Mutators
*/
// public function setPasswordAttribute($password) {
// $this->attributes['password'] = Hash::make($password);
// }
}
+34
View File
@@ -0,0 +1,34 @@
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Blade::if("admin", function () {
if(auth()->user() && auth()->user()->role->name == "Admin") {
return 1;
}
return 0;
});
}
}
+30
View File
@@ -0,0 +1,30 @@
<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
// 'App\Models\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
//
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\ServiceProvider;
class BroadcastServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Broadcast::routes();
require base_path('routes/channels.php');
}
}
+32
View File
@@ -0,0 +1,32 @@
<?php
namespace App\Providers;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
];
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
//
}
}
+69
View File
@@ -0,0 +1,69 @@
<?php
namespace App\Providers;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider
{
/**
* The path to the "home" route for your application.
*
* This is used by Laravel authentication to redirect users after login.
*
* @var string
*/
public const HOME = '/home';
/**
* The controller namespace for the application.
*
* When present, controller route declarations will automatically be prefixed with this namespace.
*
* @var string|null
*/
// protected $namespace = 'App\\Http\\Controllers';
/**
* Define your route model bindings, pattern filters, etc.
*
* @return void
*/
public function boot()
{
$this->configureRateLimiting();
$this->model("post", "App\Models\Post");
$this->model("occupation", "App\Models\Occupation");
$this->model("status", "App\Models\Status");
$this->routes(function () {
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
});
}
/**
* Configure the rate limiters for the application.
*
* @return void
*/
protected function configureRateLimiting()
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
});
}
}