Skip to content

Commit

Permalink
Refactor File Import Controller. Add Asset Composite Unique Keys
Browse files Browse the repository at this point in the history
  • Loading branch information
daviddmd committed Feb 2, 2023
1 parent b3708c8 commit 89272cc
Show file tree
Hide file tree
Showing 8 changed files with 88 additions and 79 deletions.
26 changes: 0 additions & 26 deletions app/Http/Controllers/FileExportController.php

This file was deleted.

66 changes: 31 additions & 35 deletions app/Http/Controllers/FileImportController.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,52 +16,48 @@
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Facades\Excel;
use Symfony\Component\HttpFoundation\Response as ResponseAlias;

class FileImportController extends Controller
{
public function __invoke(Request $request)
{
if (!$request->user()->can("viewAny", User::class)) {
abort(403);
}
/* @var $current_user User */
$current_user = Auth::user();
if ($request->hasFile('file') && $request->has("model")) {
$file = $request->file('file');
$model = $request->input("model");
if ($model == "assets") {
Excel::import(new AssetsImport, $file);
return redirect()->route("assets.index");
}
else if ($model == "asset-types") {
Excel::import(new AssetTypesImport, $file);
return redirect()->route("asset-types.index");
}
else if ($model == "controls") {
Excel::import(new ControlsImport, $file);
return redirect()->route("controls.index");
}
else if ($model == "departments") {
Excel::import(new DepartmentsImport, $file);
return redirect()->route("departments.index");
}
else if ($model == "permanent-contact-points") {
Excel::import(new PermanentContactPointsImport, $file);
return redirect()->route("permanent-contact-points.index");
}
else if ($model == "security-officer") {
Excel::import(new SecurityOfficersImport, $file);
return redirect()->route("security-officer.index");
}
else if ($model == "threats") {
Excel::import(new ThreatsImport, $file);
return redirect()->route("threats.index");
}
else if ($model == "users" && !config("ldap.enabled") && $current_user->role == UserRole::ADMINISTRATOR) {
Excel::import(new UsersImport, $file);
return redirect()->route("users.index");
switch ($model) {
case "assets":
Excel::import(new AssetsImport, $file);
return redirect()->route("assets.index");
case "asset-types":
Excel::import(new AssetTypesImport, $file);
return redirect()->route("asset-types.index");
case "controls":
Excel::import(new ControlsImport, $file);
return redirect()->route("controls.index");
case "departments":
Excel::import(new DepartmentsImport, $file);
return redirect()->route("departments.index");
case "permanent-contact-points":
Excel::import(new PermanentContactPointsImport, $file);
return redirect()->route("permanent-contact-points.index");
case "security-officer":
Excel::import(new SecurityOfficersImport, $file);
return redirect()->route("security-officer.index");
case "threats":
Excel::import(new ThreatsImport, $file);
return redirect()->route("threats.index");
case "users":
if (!config("ldap.enabled") && $current_user->role == UserRole::ADMINISTRATOR) {
Excel::import(new UsersImport, $file);
}
return redirect()->route("users.index");
default:
abort(ResponseAlias::HTTP_BAD_REQUEST);
}
}
abort(400);
abort(ResponseAlias::HTTP_BAD_REQUEST);
}
}
3 changes: 2 additions & 1 deletion app/Http/Controllers/ReportController.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\Response as ResponseAlias;

class ReportController extends Controller
{
Expand All @@ -35,7 +36,7 @@ public function __invoke(Request $request)
case "cncs":
return Excel::download(new CNCSExport, config("constants.exports.asset_list_cncs_file_name"));
default:
abort(500);
abort(ResponseAlias::HTTP_BAD_REQUEST);
}
}
else {
Expand Down
3 changes: 2 additions & 1 deletion app/Http/Middleware/EnsureSecurityOfficer.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Symfony\Component\HttpFoundation\Response as ResponseAlias;

class EnsureSecurityOfficer
{
Expand All @@ -23,6 +24,6 @@ public function handle(Request $request, Closure $next)
if ($request->user()->role == UserRole::SECURITY_OFFICER) {
return $next($request);
}
abort(403);
abort(ResponseAlias::HTTP_FORBIDDEN);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table("asset_threats", function (Blueprint $table) {
$table->unique(["asset_id", "threat_id"]);
});
Schema::table("asset_threat_controls", function (Blueprint $table) {
$table->unique(["asset_threat_id", "control_id"]);
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table("asset_threats", function (Blueprint $table) {
$table->dropUnique(["asset_id", "threat_id"]);
});
Schema::table("asset_threat_controls", function (Blueprint $table) {
$table->dropUnique(["asset_threat_id", "control_id"]);
});
}
};
18 changes: 9 additions & 9 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 6 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,23 @@
"build": "vite build"
},
"devDependencies": {
"@alpinejs/focus": "^3.10.5",
"@alpinejs/focus": "^3.11.1",
"@tailwindcss/forms": "^0.5.3",
"@tailwindcss/typography": "^0.5.8",
"alpinejs": "^3.10.5",
"alpinejs": "^3.11.1",
"autoprefixer": "^10.4.13",
"axios": "^1.1.2",
"axios": "^1.1.3",
"laravel-vite-plugin": "^0.7.3",
"lodash": "^4.17.21",
"postcss": "^8.4.20",
"postcss": "^8.4.21",
"postcss-import": "^15.1.0",
"tailwindcss": "^3.2.4",
"vite": "^4.0.4"
"vite": "^4.1.1"
},
"dependencies": {
"cytoscape": "^3.23.0",
"cytoscape-dagre": "^2.5.0",
"file-saver": "^2.0.5",
"flowbite": "^1.6.2"
"flowbite": "^1.6.3"
}
}
2 changes: 1 addition & 1 deletion routes/web.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
Route::resource("assets", AssetController::class);
Route::middleware("ensureSecurityOfficer")->group(function () {
Route::get("reports", ReportController::class)->name("reports");
Route::get("exports", FileExportController::class)->name("exports");
Route::view("exports","file-export.index")->name("exports");
Route::view("imports", "file-import.index")->name("import");
Route::post("imports", FileImportController::class)->name("import-file");
});
Expand Down

0 comments on commit 89272cc

Please sign in to comment.