2020-04-14 15:58:24 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
2022-01-17 12:58:24 +01:00
|
|
|
use App\Http\Requests\Projects\StoreProjects;
|
|
|
|
|
use App\Http\Requests\Projects\UpdateProjects;
|
2020-04-14 15:58:24 +02:00
|
|
|
use App\Models\Projects;
|
|
|
|
|
use App\Models\Servers;
|
2022-01-23 19:55:37 +01:00
|
|
|
use App\User;
|
2020-04-17 09:18:42 +02:00
|
|
|
use Carbon\Carbon;
|
2020-04-14 15:58:24 +02:00
|
|
|
use Illuminate\Http\Request;
|
2020-04-17 09:18:42 +02:00
|
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
|
use lfkeitel\phptotp\Base32;
|
|
|
|
|
use lfkeitel\phptotp\Totp;
|
|
|
|
|
use Ramsey\Uuid\Uuid;
|
2020-04-14 15:58:24 +02:00
|
|
|
|
|
|
|
|
class ProjectsController extends Controller
|
|
|
|
|
{
|
2022-01-17 11:19:17 +01:00
|
|
|
public function index(Request $request)
|
|
|
|
|
{
|
2020-04-17 09:18:42 +02:00
|
|
|
$projects = Projects::orderBy('name')->get();
|
2020-04-14 15:58:24 +02:00
|
|
|
return view('projects.index', ['projects' => $projects]);
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-17 11:19:17 +01:00
|
|
|
public function WpAutoLogin(Request $request)
|
|
|
|
|
{
|
2020-04-21 11:59:54 +02:00
|
|
|
$url = $request->url;
|
|
|
|
|
$login = $request->login;
|
|
|
|
|
$pwd = $request->pwd;
|
|
|
|
|
|
|
|
|
|
return view('projects.wp-auto-login', ['url' => $url, 'login' => $login, 'pwd' => $pwd]);
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-17 11:19:17 +01:00
|
|
|
public function add(Request $request)
|
|
|
|
|
{
|
2020-04-17 09:18:42 +02:00
|
|
|
$dev_db_server = Servers::where([
|
|
|
|
|
['env', 'DEV'],
|
|
|
|
|
['type', 'DB']
|
|
|
|
|
])->get();
|
|
|
|
|
$dev_web_server = Servers::where([
|
|
|
|
|
['env', 'DEV'],
|
|
|
|
|
['type', 'WEB']
|
|
|
|
|
])->get();
|
|
|
|
|
$prod_db_server = Servers::where([
|
|
|
|
|
['env', 'PROD'],
|
|
|
|
|
['type', 'DB']
|
|
|
|
|
])->get();
|
|
|
|
|
$prod_web_server = Servers::where([
|
|
|
|
|
['env', 'PROD'],
|
|
|
|
|
['type', 'WEB']
|
|
|
|
|
])->get();
|
|
|
|
|
return view('projects.add', ['dev_db_server' => $dev_db_server, 'dev_web_server' => $dev_web_server, 'prod_db_server' => $prod_db_server, 'prod_web_server' => $prod_web_server]);
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-17 11:19:17 +01:00
|
|
|
public function edit(Request $request)
|
|
|
|
|
{
|
2020-04-14 15:58:24 +02:00
|
|
|
$uuid = $request->uuid;
|
|
|
|
|
$project = Projects::where('uuid', '=', $uuid)->first();
|
|
|
|
|
if (!$project)
|
|
|
|
|
abort(404);
|
|
|
|
|
|
|
|
|
|
$dev_db_server = Servers::where([
|
|
|
|
|
['env', 'DEV'],
|
|
|
|
|
['type', 'DB']
|
|
|
|
|
])->get();
|
|
|
|
|
$dev_web_server = Servers::where([
|
|
|
|
|
['env', 'DEV'],
|
|
|
|
|
['type', 'WEB']
|
|
|
|
|
])->get();
|
|
|
|
|
$prod_db_server = Servers::where([
|
|
|
|
|
['env', 'PROD'],
|
|
|
|
|
['type', 'DB']
|
|
|
|
|
])->get();
|
|
|
|
|
$prod_web_server = Servers::where([
|
|
|
|
|
['env', 'PROD'],
|
|
|
|
|
['type', 'WEB']
|
|
|
|
|
])->get();
|
|
|
|
|
return view('projects.edit', ['project' => $project, 'dev_db_server' => $dev_db_server, 'dev_web_server' => $dev_web_server, 'prod_db_server' => $prod_db_server, 'prod_web_server' => $prod_web_server]);
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-17 12:58:24 +01:00
|
|
|
public function update(UpdateProjects $request)
|
2022-01-17 11:19:17 +01:00
|
|
|
{
|
2020-04-14 15:58:24 +02:00
|
|
|
$uuid = $request->uuid;
|
|
|
|
|
$project = Projects::where('uuid', '=', $uuid)->first();
|
|
|
|
|
if (!$project)
|
|
|
|
|
abort(404);
|
2020-04-17 09:18:42 +02:00
|
|
|
$this->makeChanges($request, $project);
|
|
|
|
|
return redirect()->route('projects.edit', ['uuid' => $project->uuid])->with('status', 'Sauvegardé !');
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-17 12:58:24 +01:00
|
|
|
public function store(StoreProjects $request)
|
2022-01-17 11:19:17 +01:00
|
|
|
{
|
2020-04-17 09:18:42 +02:00
|
|
|
$project = new Projects();
|
|
|
|
|
$project->uuid = Uuid::uuid4();
|
|
|
|
|
$this->makeChanges($request, $project);
|
|
|
|
|
return redirect()->route('projects.edit', ['uuid' => $project->uuid])->with('status', 'Sauvegardé !');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function delete(Request $request)
|
|
|
|
|
{
|
|
|
|
|
$uuid = $request->uuid;
|
|
|
|
|
$project = Projects::where('uuid', '=', $uuid)->first();
|
|
|
|
|
if (!$project)
|
|
|
|
|
abort(404);
|
|
|
|
|
return view('projects.delete', ['project' => $project]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function forceDelete(Request $request)
|
|
|
|
|
{
|
|
|
|
|
$uuid = $request->uuid;
|
2021-08-03 16:24:49 +02:00
|
|
|
$otp = $request->otp;
|
2020-04-17 09:18:42 +02:00
|
|
|
|
|
|
|
|
$lastCode = (new Totp())->GenerateToken(Base32::decode(Auth::user()->totp_secret), Carbon::now()->subSeconds(30)->timestamp);
|
|
|
|
|
$code = (new Totp())->GenerateToken(Base32::decode(Auth::user()->totp_secret));
|
|
|
|
|
|
|
|
|
|
if ($otp === $code || $otp === $lastCode) {
|
|
|
|
|
$project = Projects::where('uuid', '=', $uuid)->first();
|
|
|
|
|
if (!$project)
|
|
|
|
|
abort(404);
|
|
|
|
|
$project->delete();
|
|
|
|
|
return redirect()->route('projects.index')->with('status', 'Projet supprimé !');
|
2022-01-17 11:19:17 +01:00
|
|
|
} else {
|
2020-04-17 09:18:42 +02:00
|
|
|
return redirect()->route('projects.edit', ['uuid' => $uuid])->with('error', 'Code de vérification invalide.');
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-04-14 15:58:24 +02:00
|
|
|
|
2022-01-17 11:19:17 +01:00
|
|
|
private function makeChanges(Request $request, $project)
|
|
|
|
|
{
|
2020-04-14 15:58:24 +02:00
|
|
|
$name = $request->name;
|
|
|
|
|
$display_name = $request->display_name;
|
|
|
|
|
$php = $request->php;
|
|
|
|
|
$type = $request->type;
|
|
|
|
|
$https = $request->https;
|
2022-01-23 19:55:37 +01:00
|
|
|
$prod_haproxy_id = $request->prod_haproxy_id;
|
|
|
|
|
$dev_haproxy_id = $request->dev_haproxy_id;
|
2020-04-14 15:58:24 +02:00
|
|
|
$prod_url = $request->prod_url;
|
|
|
|
|
$dev_url = $request->dev_url;
|
|
|
|
|
$prod_document_root = $request->prod_document_root;
|
|
|
|
|
$dev_document_root = $request->dev_document_root;
|
|
|
|
|
$prod_unix_user = $request->prod_unix_user;
|
|
|
|
|
$dev_unix_user = $request->dev_unix_user;
|
|
|
|
|
$prod_unix_pwd = $request->prod_unix_pwd;
|
|
|
|
|
$dev_unix_pwd = $request->dev_unix_pwd;
|
|
|
|
|
$prod_db_user = $request->prod_db_user;
|
|
|
|
|
$dev_db_user = $request->dev_db_user;
|
|
|
|
|
$prod_db_pwd = $request->prod_db_pwd;
|
|
|
|
|
$dev_db_pwd = $request->dev_db_pwd;
|
|
|
|
|
$prod_db_schema = $request->prod_db_schema;
|
|
|
|
|
$dev_db_schema = $request->dev_db_schema;
|
|
|
|
|
$prod_db_server_id = $request->prod_db_server_id;
|
|
|
|
|
$dev_db_server_id = $request->dev_db_server_id;
|
|
|
|
|
$prod_web_server_id = $request->prod_web_server_id;
|
|
|
|
|
$dev_web_server_id = $request->dev_web_server_id;
|
|
|
|
|
$prod_comment = $request->prod_comment;
|
|
|
|
|
$dev_comment = $request->dev_comment;
|
|
|
|
|
$prod_eai = $request->prod_eai;
|
|
|
|
|
$dev_eai = $request->dev_eai;
|
|
|
|
|
$prod_whitelist_fw = $request->prod_whitelist_fw;
|
|
|
|
|
$dev_whitelist_fw = $request->dev_whitelist_fw;
|
|
|
|
|
$dev_htaccess_user = $request->dev_htaccess_user;
|
|
|
|
|
$dev_htaccess_pwd = $request->dev_htaccess_pwd;
|
2020-04-17 09:18:42 +02:00
|
|
|
$prod_ga_id = $request->prod_ga_id;
|
2022-01-17 11:19:17 +01:00
|
|
|
$prod_laravel_app_key = $request->prod_laravel_app_key;
|
|
|
|
|
$dev_laravel_app_key = $request->dev_laravel_app_key;
|
2022-01-17 12:58:24 +01:00
|
|
|
$prod_smtp_config = $request->prod_smtp_config;
|
|
|
|
|
$prod_smtp_key = $request->prod_smtp_key;
|
2020-04-17 09:18:42 +02:00
|
|
|
|
|
|
|
|
if (Auth::user()->role === 1) {
|
|
|
|
|
$prod_login = $request->prod_login;
|
|
|
|
|
$dev_login = $request->dev_login;
|
|
|
|
|
$prod_bo_url = $request->prod_bo_url;
|
|
|
|
|
$dev_bo_url = $request->dev_bo_url;
|
|
|
|
|
}
|
2020-04-14 15:58:24 +02:00
|
|
|
|
|
|
|
|
$project->name = $name;
|
|
|
|
|
$project->display_name = $display_name;
|
|
|
|
|
$project->php = $php;
|
|
|
|
|
$project->type = $type;
|
|
|
|
|
$project->https = $https;
|
2022-01-23 19:55:37 +01:00
|
|
|
$project->prod_haproxy_id = $prod_haproxy_id;
|
|
|
|
|
$project->dev_haproxy_id = $dev_haproxy_id;
|
2020-04-14 15:58:24 +02:00
|
|
|
$project->prod_url = $prod_url;
|
|
|
|
|
$project->dev_url = $dev_url;
|
|
|
|
|
$project->prod_document_root = $prod_document_root;
|
|
|
|
|
$project->dev_document_root = $dev_document_root;
|
|
|
|
|
$project->prod_unix_user = $prod_unix_user;
|
|
|
|
|
$project->dev_unix_user = $dev_unix_user;
|
|
|
|
|
$project->prod_unix_pwd = $prod_unix_pwd;
|
|
|
|
|
$project->dev_unix_pwd = $dev_unix_pwd;
|
|
|
|
|
$project->prod_db_user = $prod_db_user;
|
|
|
|
|
$project->dev_db_user = $dev_db_user;
|
|
|
|
|
$project->prod_db_pwd = $prod_db_pwd;
|
|
|
|
|
$project->dev_db_pwd = $dev_db_pwd;
|
|
|
|
|
$project->prod_db_schema = $prod_db_schema;
|
|
|
|
|
$project->dev_db_schema = $dev_db_schema;
|
|
|
|
|
$project->prod_db_server_id = $prod_db_server_id;
|
|
|
|
|
$project->dev_db_server_id = $dev_db_server_id;
|
|
|
|
|
$project->prod_web_server_id = $prod_web_server_id;
|
|
|
|
|
$project->dev_web_server_id = $dev_web_server_id;
|
|
|
|
|
$project->prod_comment = $prod_comment;
|
|
|
|
|
$project->dev_comment = $dev_comment;
|
|
|
|
|
$project->prod_eai = $prod_eai;
|
|
|
|
|
$project->dev_eai = $dev_eai;
|
|
|
|
|
$project->prod_whitelist_fw = $prod_whitelist_fw;
|
|
|
|
|
$project->dev_whitelist_fw = $dev_whitelist_fw;
|
|
|
|
|
$project->dev_htaccess_user = $dev_htaccess_user;
|
|
|
|
|
$project->dev_htaccess_pwd = $dev_htaccess_pwd;
|
2020-04-17 09:18:42 +02:00
|
|
|
$project->prod_ga_id = $prod_ga_id;
|
2022-01-17 11:19:17 +01:00
|
|
|
$project->prod_laravel_app_key = $prod_laravel_app_key;
|
|
|
|
|
$project->dev_laravel_app_key = $dev_laravel_app_key;
|
2022-01-17 12:58:24 +01:00
|
|
|
$project->prod_smtp_config = $prod_smtp_config;
|
|
|
|
|
$project->prod_smtp_key = $prod_smtp_key;
|
2020-04-14 15:58:24 +02:00
|
|
|
|
2020-04-17 09:18:42 +02:00
|
|
|
if (Auth::user()->role === 1) {
|
|
|
|
|
$project->prod_login = $prod_login;
|
|
|
|
|
$project->dev_login = $dev_login;
|
|
|
|
|
$project->prod_bo_url = $prod_bo_url;
|
|
|
|
|
$project->dev_bo_url = $dev_bo_url;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$project->save();
|
2020-04-14 15:58:24 +02:00
|
|
|
}
|
|
|
|
|
}
|