- Add Datastore PCC Management
- Add Domain Names Management - Add Servers Management - Update EDL Web Management - Add SAML conf - Add Laravel to StatusChecker
This commit is contained in:
parent
9d5b54a5ea
commit
4fd8f4bf37
40 changed files with 2122 additions and 66981 deletions
|
|
@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
|
|||
use App\Models\Projects;
|
||||
use App\Models\ProjectsStatusChecker;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class StatusCheckerController extends Controller
|
||||
{
|
||||
|
|
@ -37,6 +38,7 @@ class StatusCheckerController extends Controller
|
|||
$project_sc->sitemap = $sitemap;
|
||||
$project_sc->robots = $robots;
|
||||
$project_sc->logs = $logs;
|
||||
$project_sc->updated_at = NOW();
|
||||
$project_sc->save();
|
||||
|
||||
return response('OK');
|
||||
|
|
|
|||
86
app/Http/Controllers/DatastorePCCController.php
Normal file
86
app/Http/Controllers/DatastorePCCController.php
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\DatastorePcc;
|
||||
use App\Models\Servers;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use lfkeitel\phptotp\Base32;
|
||||
use lfkeitel\phptotp\Totp;
|
||||
|
||||
class DatastorePCCController extends Controller
|
||||
{
|
||||
public function index(Request $request) {
|
||||
$dpccs = DatastorePcc::all();
|
||||
return view('dpccs.index', ['dpccs' => $dpccs]);
|
||||
}
|
||||
|
||||
public function add(Request $request) {
|
||||
return view('dpccs.add');
|
||||
}
|
||||
|
||||
public function edit(Request $request) {
|
||||
$dpcc_id = $request->id;
|
||||
$dpcc = DatastorePcc::findOrFail($dpcc_id);
|
||||
return view('dpccs.edit', ['dpcc' => $dpcc]);
|
||||
}
|
||||
|
||||
public function update(Request $request) {
|
||||
$dpcc_id = $request->id;
|
||||
$dpcc = DatastorePcc::findOrFail($dpcc_id);
|
||||
$this->makeChanges($request, $dpcc);
|
||||
return redirect()->route('dpccs.edit', ['id' => $dpcc->id])->with('status', 'Sauvegardé !');
|
||||
}
|
||||
|
||||
public function store(Request $request) {
|
||||
$dpcc = new DatastorePcc();
|
||||
$this->makeChanges($request, $dpcc);
|
||||
return redirect()->route('dpccs.edit', ['id' => $dpcc->id])->with('status', 'Sauvegardé !');
|
||||
}
|
||||
|
||||
public function delete(Request $request) {
|
||||
$dpcc_id = $request->id;
|
||||
$dpcc = DatastorePcc::findOrFail($dpcc_id);
|
||||
|
||||
$isUsed = Servers::where('datastore_pcc_id', '=', $dpcc->id)->get();
|
||||
if ($isUsed->count() === 0)
|
||||
$isUsed = false;
|
||||
|
||||
return view('dpccs.delete', ['dpcc' => $dpcc, 'isUsed' => $isUsed]);
|
||||
}
|
||||
|
||||
public function forceDelete(Request $request)
|
||||
{
|
||||
$dpcc_id = $request->id;
|
||||
$otp1 = $request->otp1;
|
||||
$otp2 = $request->otp2;
|
||||
$otp3 = $request->otp3;
|
||||
$otp4 = $request->otp4;
|
||||
$otp5 = $request->otp5;
|
||||
$otp6 = $request->otp6;
|
||||
|
||||
$otp = $otp1 . $otp2 . $otp3 . $otp4 . $otp5 . $otp6;
|
||||
|
||||
$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) {
|
||||
$dpcc = DatastorePcc::findOrFail($dpcc_id);
|
||||
$dpcc->delete();
|
||||
return redirect()->route('dpccs.index')->with('status', 'Datastore PCC supprimé !');
|
||||
}else{
|
||||
return redirect()->route('dpccs.edit', ['id' => $dpcc_id])->with('error', 'Code de vérification invalide.');
|
||||
}
|
||||
}
|
||||
|
||||
private function makeChanges($request, $dpcc) {
|
||||
$title = $request->title;
|
||||
$comment = $request->comment;
|
||||
|
||||
$dpcc->title = $title;
|
||||
$dpcc->comment = $comment;
|
||||
$dpcc->save();
|
||||
}
|
||||
}
|
||||
89
app/Http/Controllers/DomainNamesController.php
Normal file
89
app/Http/Controllers/DomainNamesController.php
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\DomainNames;
|
||||
use App\Models\Servers;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use lfkeitel\phptotp\Base32;
|
||||
use lfkeitel\phptotp\Totp;
|
||||
|
||||
class DomainNamesController extends Controller
|
||||
{
|
||||
public function index(Request $request) {
|
||||
$dms = DomainNames::all();
|
||||
return view('domain-names.index', ['dms' => $dms]);
|
||||
}
|
||||
|
||||
public function add(Request $request) {
|
||||
return view('domain-names.add');
|
||||
}
|
||||
|
||||
public function edit(Request $request) {
|
||||
$dm_id = $request->id;
|
||||
$dm = DomainNames::findOrFail($dm_id);
|
||||
return view('domain-names.edit', ['dm' => $dm]);
|
||||
}
|
||||
|
||||
public function update(Request $request) {
|
||||
$dm_id = $request->id;
|
||||
$dm = DomainNames::findOrFail($dm_id);
|
||||
$this->makeChanges($request, $dm);
|
||||
return redirect()->route('domain-names.edit', ['id' => $dm->id])->with('status', 'Sauvegardé !');
|
||||
}
|
||||
|
||||
public function store(Request $request) {
|
||||
$dm = new DomainNames();
|
||||
$this->makeChanges($request, $dm);
|
||||
return redirect()->route('domain-names.edit', ['id' => $dm->id])->with('status', 'Sauvegardé !');
|
||||
}
|
||||
|
||||
public function delete(Request $request) {
|
||||
$dm_id = $request->id;
|
||||
$dm = DomainNames::findOrFail($dm_id);
|
||||
return view('domain-names.delete', ['dm' => $dm]);
|
||||
}
|
||||
|
||||
public function forceDelete(Request $request)
|
||||
{
|
||||
$dm_id = $request->id;
|
||||
$otp1 = $request->otp1;
|
||||
$otp2 = $request->otp2;
|
||||
$otp3 = $request->otp3;
|
||||
$otp4 = $request->otp4;
|
||||
$otp5 = $request->otp5;
|
||||
$otp6 = $request->otp6;
|
||||
|
||||
$otp = $otp1 . $otp2 . $otp3 . $otp4 . $otp5 . $otp6;
|
||||
|
||||
$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) {
|
||||
$dm = DomainNames::findOrFail($dm_id);
|
||||
$dm->delete();
|
||||
return redirect()->route('domain-names.index')->with('status', 'Nom de domaine supprimé !');
|
||||
}else{
|
||||
return redirect()->route('domain-names.edit', ['id' => $dm_id])->with('error', 'Code de vérification invalide.');
|
||||
}
|
||||
}
|
||||
|
||||
private function makeChanges($request, $dm) {
|
||||
$ascii_name = $request->ascii_name;
|
||||
$utf8_name = $request->utf8_name;
|
||||
$exp_date = $request->expiration_date;
|
||||
$renew = $request->renew;
|
||||
$related_brand = $request->related_brand;
|
||||
$comment = $request->comment;
|
||||
|
||||
$dm->ascii_name = $ascii_name;
|
||||
$dm->utf8_name = $utf8_name;
|
||||
$dm->expiration_date = $exp_date;
|
||||
$dm->renew = $renew;
|
||||
$dm->related_brand = $related_brand;
|
||||
$dm->comment = $comment;
|
||||
$dm->save();
|
||||
}
|
||||
}
|
||||
|
|
@ -11,7 +11,7 @@ class HomeController extends Controller
|
|||
*
|
||||
* @return \Illuminate\Contracts\Support\Renderable
|
||||
*/
|
||||
public function index()
|
||||
public function index(Request $request)
|
||||
{
|
||||
// otpauth://totp/LDC%20WEB:vincent.bridier@ldc.fr?secret=JWAQXGWVH2UDGEPFIY6IOHDZIY&issuer=LDC%20WEB
|
||||
return view('home');
|
||||
|
|
|
|||
|
|
@ -4,15 +4,40 @@ namespace App\Http\Controllers;
|
|||
|
||||
use App\Models\Projects;
|
||||
use App\Models\Servers;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use lfkeitel\phptotp\Base32;
|
||||
use lfkeitel\phptotp\Totp;
|
||||
use Ramsey\Uuid\Uuid;
|
||||
|
||||
class ProjectsController extends Controller
|
||||
{
|
||||
public function index(Request $request) {
|
||||
$projects = Projects::all();
|
||||
$projects = Projects::orderBy('name')->get();
|
||||
return view('projects.index', ['projects' => $projects]);
|
||||
}
|
||||
|
||||
public function add(Request $request) {
|
||||
$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]);
|
||||
}
|
||||
|
||||
public function edit(Request $request) {
|
||||
$uuid = $request->uuid;
|
||||
$project = Projects::where('uuid', '=', $uuid)->first();
|
||||
|
|
@ -43,7 +68,53 @@ class ProjectsController extends Controller
|
|||
$project = Projects::where('uuid', '=', $uuid)->first();
|
||||
if (!$project)
|
||||
abort(404);
|
||||
$this->makeChanges($request, $project);
|
||||
return redirect()->route('projects.edit', ['uuid' => $project->uuid])->with('status', 'Sauvegardé !');
|
||||
}
|
||||
|
||||
public function store(Request $request) {
|
||||
$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;
|
||||
$otp1 = $request->otp1;
|
||||
$otp2 = $request->otp2;
|
||||
$otp3 = $request->otp3;
|
||||
$otp4 = $request->otp4;
|
||||
$otp5 = $request->otp5;
|
||||
$otp6 = $request->otp6;
|
||||
|
||||
$otp = $otp1 . $otp2 . $otp3 . $otp4 . $otp5 . $otp6;
|
||||
|
||||
$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é !');
|
||||
}else{
|
||||
return redirect()->route('projects.edit', ['uuid' => $uuid])->with('error', 'Code de vérification invalide.');
|
||||
}
|
||||
}
|
||||
|
||||
private function makeChanges(Request $request, $project) {
|
||||
$name = $request->name;
|
||||
$display_name = $request->display_name;
|
||||
$php = $request->php;
|
||||
|
|
@ -82,6 +153,14 @@ class ProjectsController extends Controller
|
|||
$dev_redirect_dns = $request->dev_redirect_dns;
|
||||
$dev_htaccess_user = $request->dev_htaccess_user;
|
||||
$dev_htaccess_pwd = $request->dev_htaccess_pwd;
|
||||
$prod_ga_id = $request->prod_ga_id;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
$project->name = $name;
|
||||
$project->display_name = $display_name;
|
||||
|
|
@ -121,8 +200,15 @@ class ProjectsController extends Controller
|
|||
$project->dev_redirect_dns = $dev_redirect_dns;
|
||||
$project->dev_htaccess_user = $dev_htaccess_user;
|
||||
$project->dev_htaccess_pwd = $dev_htaccess_pwd;
|
||||
$project->save();
|
||||
$project->prod_ga_id = $prod_ga_id;
|
||||
|
||||
return redirect()->route('projects.edit', ['uuid' => $project->uuid])->with('status', 'Sauvegardé !');
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
109
app/Http/Controllers/ServersController.php
Normal file
109
app/Http/Controllers/ServersController.php
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\DatastorePcc;
|
||||
use App\Models\Projects;
|
||||
use App\Models\Servers;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use lfkeitel\phptotp\Base32;
|
||||
use lfkeitel\phptotp\Totp;
|
||||
|
||||
class ServersController extends Controller
|
||||
{
|
||||
public function index(Request $request) {
|
||||
$servers = Servers::all();
|
||||
return view('servers.index', ['servers' => $servers]);
|
||||
}
|
||||
|
||||
public function add(Request $request) {
|
||||
$datastores_pcc = DatastorePcc::orderBy('title')->get();
|
||||
return view('servers.add', ['datastores_pcc' => $datastores_pcc]);
|
||||
}
|
||||
|
||||
public function edit(Request $request) {
|
||||
$server_id = $request->id;
|
||||
$server = Servers::findOrFail($server_id);
|
||||
$datastores_pcc = DatastorePcc::orderBy('title')->get();
|
||||
return view('servers.edit', ['server' => $server, 'datastores_pcc' => $datastores_pcc]);
|
||||
}
|
||||
|
||||
public function update(Request $request) {
|
||||
$server_id = $request->id;
|
||||
$server = Servers::findOrFail($server_id);
|
||||
$this->makeChanges($request, $server);
|
||||
return redirect()->route('servers.edit', ['id' => $server_id])->with('status', 'Sauvegardé !');
|
||||
}
|
||||
|
||||
public function store(Request $request) {
|
||||
$server = new Servers();
|
||||
$this->makeChanges($request, $server);
|
||||
return redirect()->route('servers.edit', ['id' => $server->id])->with('status', 'Sauvegardé !');
|
||||
}
|
||||
|
||||
public function delete(Request $request) {
|
||||
$server_id = $request->id;
|
||||
$server = Servers::findOrFail($server_id);
|
||||
|
||||
if ($server->type === 'DB' || $server->type === 'WEB') {
|
||||
$isUsed = Projects::where('dev_db_server_id', '=', $server->id)->orWhere('dev_web_server_id', '=', $server->id)->orWhere('prod_db_server_id', '=', $server->id)->orWhere('prod_web_server_id', '=', $server->id)->get();
|
||||
if ($isUsed->count() === 0)
|
||||
$isUsed = false;
|
||||
} else {
|
||||
$isUsed = false;
|
||||
}
|
||||
|
||||
return view('servers.delete', ['server' => $server, 'isUsed' => $isUsed]);
|
||||
}
|
||||
|
||||
public function forceDelete(Request $request)
|
||||
{
|
||||
$server_id = $request->id;
|
||||
$otp1 = $request->otp1;
|
||||
$otp2 = $request->otp2;
|
||||
$otp3 = $request->otp3;
|
||||
$otp4 = $request->otp4;
|
||||
$otp5 = $request->otp5;
|
||||
$otp6 = $request->otp6;
|
||||
|
||||
$otp = $otp1 . $otp2 . $otp3 . $otp4 . $otp5 . $otp6;
|
||||
|
||||
$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) {
|
||||
$server = Servers::findOrFail($server_id);
|
||||
$server->delete();
|
||||
return redirect()->route('servers.index')->with('status', 'Serveur supprimé !');
|
||||
}else{
|
||||
return redirect()->route('servers.edit', ['id' => $server_id])->with('error', 'Code de vérification invalide.');
|
||||
}
|
||||
}
|
||||
|
||||
private function makeChanges($request, $server) {
|
||||
$env = $request->env;
|
||||
$virtual_ip = $request->virtual_ip;
|
||||
$ssh = $request->ssh;
|
||||
$infraweb_ip = $request->infraweb_ip;
|
||||
$title = $request->title;
|
||||
$name = $request->name;
|
||||
$function = $request->function;
|
||||
$dpcc = $request->datastore_pcc_id;
|
||||
$comment = $request->comment;
|
||||
$type = $request->type;
|
||||
|
||||
$server->env = $env;
|
||||
$server->virtual_ip = $virtual_ip;
|
||||
$server->ssh = $ssh;
|
||||
$server->infraweb_ip = $infraweb_ip;
|
||||
$server->title = $title;
|
||||
$server->name = $name;
|
||||
$server->function = $function;
|
||||
$server->datastore_pcc_id = $dpcc;
|
||||
$server->comment = $comment;
|
||||
$server->type = $type;
|
||||
$server->save();
|
||||
}
|
||||
}
|
||||
|
|
@ -8,7 +8,22 @@ use Illuminate\Http\Request;
|
|||
class StatusCheckerController extends Controller
|
||||
{
|
||||
public function index(Request $request) {
|
||||
$projects = Projects::all();
|
||||
return view('status-checker.index', ['projects' => $projects]);
|
||||
$wp_endpoint = 'https://api.wordpress.org/core/version-check/1.7/';
|
||||
$client = new \GuzzleHttp\Client();
|
||||
$response = $client->request('GET', $wp_endpoint);
|
||||
$content = $response->getBody();
|
||||
$oContent = json_decode($content);
|
||||
|
||||
$laravel_endpoint = 'https://github.com/laravel/laravel/releases/latest';
|
||||
$client = new \GuzzleHttp\Client();
|
||||
$response = $client->request('GET', $laravel_endpoint, [
|
||||
'allow_redirects' => false
|
||||
]);
|
||||
$content = $response->getBody()->getContents();
|
||||
$laravel_latest = substr($content, 84);
|
||||
$laravel_latest = substr($laravel_latest, 0, -31);
|
||||
|
||||
$projects = Projects::orderBy('name')->get();
|
||||
return view('status-checker.index', ['projects' => $projects, 'wp_latest' => $oContent->offers[0]->version, 'laravel_latest' => $laravel_latest]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
23
app/Http/Middleware/LDCNetwork.php
Normal file
23
app/Http/Middleware/LDCNetwork.php
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Symfony\Component\HttpFoundation\IpUtils;
|
||||
|
||||
class LDCNetwork
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
//IpUtils::checkIp();
|
||||
// https://github.com/symfony/http-foundation/blob/master/IpUtils.php#L36
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
10
app/Models/DatastorePcc.php
Normal file
10
app/Models/DatastorePcc.php
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class DatastorePcc extends Model
|
||||
{
|
||||
protected $table = 'datastore_pcc';
|
||||
}
|
||||
102
app/Models/Projects.php
Normal file
102
app/Models/Projects.php
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Projects extends Model
|
||||
{
|
||||
public function getDevWebIpAttribute() {
|
||||
$value = Servers::find($this->dev_web_server_id);
|
||||
if ($value)
|
||||
$value = $value->ssh;
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function getDevDbIpAttribute() {
|
||||
$value = Servers::find($this->dev_db_server_id);
|
||||
if ($value)
|
||||
$value = $value->ssh;
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function getProdWebIpAttribute() {
|
||||
$value = Servers::find($this->prod_web_server_id);
|
||||
if ($value)
|
||||
$value = $value->ssh;
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function getProdDbIpAttribute() {
|
||||
$value = Servers::find($this->prod_db_server_id);
|
||||
if ($value)
|
||||
$value = $value->ssh;
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function getCheckedAttribute() {
|
||||
$value = ProjectsStatusChecker::select('updated_at')->where('project_uuid', '=', $this->uuid)->first();
|
||||
if (!$value) {
|
||||
$value = 'missing';
|
||||
} else {
|
||||
$value = $value->updated_at;
|
||||
$dt = Carbon::now();
|
||||
if ($dt->diffInMinutes($value) > 30) {
|
||||
$value = 'false';
|
||||
} else {
|
||||
$value = 'true';
|
||||
}
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
public function getSitemapCheckedAttribute() {
|
||||
$value = ProjectsStatusChecker::select('sitemap')->where('project_uuid', '=', $this->uuid)->first();
|
||||
if(!$value) {
|
||||
$value = 'missing';
|
||||
} else {
|
||||
$value = $value->sitemap;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function getRobotsCheckedAttribute() {
|
||||
$value = ProjectsStatusChecker::select('robots')->where('project_uuid', '=', $this->uuid)->first();
|
||||
if(!$value) {
|
||||
$value = 'missing';
|
||||
} else {
|
||||
$value = $value->robots;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function getLogsCheckedAttribute() {
|
||||
$value = ProjectsStatusChecker::select('logs')->where('project_uuid', '=', $this->uuid)->first();
|
||||
if(!$value) {
|
||||
$value = 'missing';
|
||||
} else {
|
||||
$value = $value->logs;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function getCodeAttribute() {
|
||||
$value = ProjectsStatusChecker::select('code')->where('project_uuid', '=', $this->uuid)->first();
|
||||
if(!$value) {
|
||||
$value = 'missing';
|
||||
} else {
|
||||
$value = $value->code;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function getLogsHrAttribute() {
|
||||
$value = ProjectsStatusChecker::select('logs')->where('project_uuid', '=', $this->uuid)->first();
|
||||
return $this->human_filesize($value->logs);
|
||||
}
|
||||
|
||||
private function human_filesize($size, $precision = 2) {
|
||||
$i = floor(log($size, 1024));
|
||||
return round($size / pow(1024, $i), [0,0,2,2,3][$i]).[' O',' Ko',' Mo',' Go',' To'][$i];
|
||||
}
|
||||
}
|
||||
10
app/Models/ProjectsStatusChecker.php
Normal file
10
app/Models/ProjectsStatusChecker.php
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class ProjectsStatusChecker extends Model
|
||||
{
|
||||
protected $table = 'projects_status_checker';
|
||||
}
|
||||
10
app/Models/Servers.php
Normal file
10
app/Models/Servers.php
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Servers extends Model
|
||||
{
|
||||
//
|
||||
}
|
||||
|
|
@ -11,6 +11,7 @@
|
|||
"php": "^7.2",
|
||||
"aacotroneo/laravel-saml2": "^2.1",
|
||||
"fideloper/proxy": "^4.0",
|
||||
"guzzlehttp/guzzle": "^6.5",
|
||||
"laravel/framework": "^6.2",
|
||||
"laravel/tinker": "^2.0",
|
||||
"laravel/ui": "1.0",
|
||||
|
|
|
|||
176
config/saml2/ldc_idp_settings.php
Normal file
176
config/saml2/ldc_idp_settings.php
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
<?php
|
||||
|
||||
// If you choose to use ENV vars to define these values, give this IdP its own env var names
|
||||
// so you can define different values for each IdP, all starting with 'SAML2_'.$this_idp_env_id
|
||||
$this_idp_env_id = 'ldc';
|
||||
|
||||
//This is variable is for simplesaml example only.
|
||||
// For real IdP, you must set the url values in the 'idp' config to conform to the IdP's real urls.
|
||||
$idp_host = env('SAML2_'.$this_idp_env_id.'_IDP_HOST', 'http://localhost:8000/simplesaml');
|
||||
|
||||
return $settings = array(
|
||||
|
||||
/*****
|
||||
* One Login Settings
|
||||
*/
|
||||
|
||||
// If 'strict' is True, then the PHP Toolkit will reject unsigned
|
||||
// or unencrypted messages if it expects them signed or encrypted
|
||||
// Also will reject the messages if not strictly follow the SAML
|
||||
// standard: Destination, NameId, Conditions ... are validated too.
|
||||
'strict' => true, //@todo: make this depend on laravel config
|
||||
|
||||
// Enable debug mode (to print errors)
|
||||
'debug' => env('APP_DEBUG', false),
|
||||
|
||||
// Service Provider Data that we are deploying
|
||||
'sp' => array(
|
||||
|
||||
// Specifies constraints on the name identifier to be used to
|
||||
// represent the requested subject.
|
||||
// Take a look on lib/Saml2/Constants.php to see the NameIdFormat supported
|
||||
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
|
||||
|
||||
// Usually x509cert and privateKey of the SP are provided by files placed at
|
||||
// the certs folder. But we can also provide them with the following parameters
|
||||
'x509cert' => env('SAML2_'.$this_idp_env_id.'_SP_x509',''),
|
||||
'privateKey' => env('SAML2_'.$this_idp_env_id.'_SP_PRIVATEKEY',''),
|
||||
|
||||
// Identifier (URI) of the SP entity.
|
||||
// Leave blank to use the '{idpName}_metadata' route, e.g. 'test_metadata'.
|
||||
'entityId' => env('SAML2_'.$this_idp_env_id.'_SP_ENTITYID',''),
|
||||
|
||||
// Specifies info about where and how the <AuthnResponse> message MUST be
|
||||
// returned to the requester, in this case our SP.
|
||||
'assertionConsumerService' => array(
|
||||
// URL Location where the <Response> from the IdP will be returned,
|
||||
// using HTTP-POST binding.
|
||||
// Leave blank to use the '{idpName}_acs' route, e.g. 'test_acs'
|
||||
'url' => '',
|
||||
),
|
||||
// Specifies info about where and how the <Logout Response> message MUST be
|
||||
// returned to the requester, in this case our SP.
|
||||
// Remove this part to not include any URL Location in the metadata.
|
||||
'singleLogoutService' => array(
|
||||
// URL Location where the <Response> from the IdP will be returned,
|
||||
// using HTTP-Redirect binding.
|
||||
// Leave blank to use the '{idpName}_sls' route, e.g. 'test_sls'
|
||||
'url' => '',
|
||||
),
|
||||
),
|
||||
|
||||
// Identity Provider Data that we want connect with our SP
|
||||
'idp' => array(
|
||||
// Identifier of the IdP entity (must be a URI)
|
||||
'entityId' => env('SAML2_'.$this_idp_env_id.'_IDP_ENTITYID', $idp_host . '/saml2/idp/metadata.php'),
|
||||
// SSO endpoint info of the IdP. (Authentication Request protocol)
|
||||
'singleSignOnService' => array(
|
||||
// URL Target of the IdP where the SP will send the Authentication Request Message,
|
||||
// using HTTP-Redirect binding.
|
||||
'url' => env('SAML2_'.$this_idp_env_id.'_IDP_SSO_URL', $idp_host . '/saml2/idp/SSOService.php'),
|
||||
),
|
||||
// SLO endpoint info of the IdP.
|
||||
'singleLogoutService' => array(
|
||||
// URL Location of the IdP where the SP will send the SLO Request,
|
||||
// using HTTP-Redirect binding.
|
||||
'url' => env('SAML2_'.$this_idp_env_id.'_IDP_SL_URL', $idp_host . '/saml2/idp/SingleLogoutService.php'),
|
||||
),
|
||||
// Public x509 certificate of the IdP
|
||||
'x509cert' => env('SAML2_'.$this_idp_env_id.'_IDP_x509', 'MIID/TCCAuWgAwIBAgIJAI4R3WyjjmB1MA0GCSqGSIb3DQEBCwUAMIGUMQswCQYDVQQGEwJBUjEVMBMGA1UECAwMQnVlbm9zIEFpcmVzMRUwEwYDVQQHDAxCdWVub3MgQWlyZXMxDDAKBgNVBAoMA1NJVTERMA8GA1UECwwIU2lzdGVtYXMxFDASBgNVBAMMC09yZy5TaXUuQ29tMSAwHgYJKoZIhvcNAQkBFhFhZG1pbmlAc2l1LmVkdS5hcjAeFw0xNDEyMDExNDM2MjVaFw0yNDExMzAxNDM2MjVaMIGUMQswCQYDVQQGEwJBUjEVMBMGA1UECAwMQnVlbm9zIEFpcmVzMRUwEwYDVQQHDAxCdWVub3MgQWlyZXMxDDAKBgNVBAoMA1NJVTERMA8GA1UECwwIU2lzdGVtYXMxFDASBgNVBAMMC09yZy5TaXUuQ29tMSAwHgYJKoZIhvcNAQkBFhFhZG1pbmlAc2l1LmVkdS5hcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbzW/EpEv+qqZzfT1Buwjg9nnNNVrxkCfuR9fQiQw2tSouS5X37W5h7RmchRt54wsm046PDKtbSz1NpZT2GkmHN37yALW2lY7MyVUC7itv9vDAUsFr0EfKIdCKgxCKjrzkZ5ImbNvjxf7eA77PPGJnQ/UwXY7W+cvLkirp0K5uWpDk+nac5W0JXOCFR1BpPUJRbz2jFIEHyChRt7nsJZH6ejzNqK9lABEC76htNy1Ll/D3tUoPaqo8VlKW3N3MZE0DB9O7g65DmZIIlFqkaMH3ALd8adodJtOvqfDU/A6SxuwMfwDYPjoucykGDu1etRZ7dF2gd+W+1Pn7yizPT1q8CAwEAAaNQME4wHQYDVR0OBBYEFPsn8tUHN8XXf23ig5Qro3beP8BuMB8GA1UdIwQYMBaAFPsn8tUHN8XXf23ig5Qro3beP8BuMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAGu60odWFiK+DkQekozGnlpNBQz5lQ/bwmOWdktnQj6HYXu43e7sh9oZWArLYHEOyMUekKQAxOK51vbTHzzw66BZU91/nqvaOBfkJyZKGfluHbD0/hfOl/D5kONqI9kyTu4wkLQcYGyuIi75CJs15uA03FSuULQdY/Liv+czS/XYDyvtSLnu43VuAQWN321PQNhuGueIaLJANb2C5qq5ilTBUw6PxY9Z+vtMjAjTJGKEkE/tQs7CvzLPKXX3KTD9lIILmX5yUC3dLgjVKi1KGDqNApYGOMtjr5eoxPQrqDBmyx3flcy0dQTdLXud3UjWVW3N0PYgJtw5yBsS74QTGD4='),
|
||||
/*
|
||||
* Instead of use the whole x509cert you can use a fingerprint
|
||||
* (openssl x509 -noout -fingerprint -in "idp.crt" to generate it)
|
||||
*/
|
||||
// 'certFingerprint' => '',
|
||||
),
|
||||
|
||||
|
||||
|
||||
/***
|
||||
*
|
||||
* OneLogin advanced settings
|
||||
*
|
||||
*
|
||||
*/
|
||||
// Security settings
|
||||
'security' => array(
|
||||
|
||||
/** signatures and encryptions offered */
|
||||
|
||||
// Indicates that the nameID of the <samlp:logoutRequest> sent by this SP
|
||||
// will be encrypted.
|
||||
'nameIdEncrypted' => false,
|
||||
|
||||
// Indicates whether the <samlp:AuthnRequest> messages sent by this SP
|
||||
// will be signed. [The Metadata of the SP will offer this info]
|
||||
'authnRequestsSigned' => false,
|
||||
|
||||
// Indicates whether the <samlp:logoutRequest> messages sent by this SP
|
||||
// will be signed.
|
||||
'logoutRequestSigned' => false,
|
||||
|
||||
// Indicates whether the <samlp:logoutResponse> messages sent by this SP
|
||||
// will be signed.
|
||||
'logoutResponseSigned' => false,
|
||||
|
||||
/* Sign the Metadata
|
||||
False || True (use sp certs) || array (
|
||||
keyFileName => 'metadata.key',
|
||||
certFileName => 'metadata.crt'
|
||||
)
|
||||
*/
|
||||
'signMetadata' => false,
|
||||
|
||||
|
||||
/** signatures and encryptions required **/
|
||||
|
||||
// Indicates a requirement for the <samlp:Response>, <samlp:LogoutRequest> and
|
||||
// <samlp:LogoutResponse> elements received by this SP to be signed.
|
||||
'wantMessagesSigned' => false,
|
||||
|
||||
// Indicates a requirement for the <saml:Assertion> elements received by
|
||||
// this SP to be signed. [The Metadata of the SP will offer this info]
|
||||
'wantAssertionsSigned' => false,
|
||||
|
||||
// Indicates a requirement for the NameID received by
|
||||
// this SP to be encrypted.
|
||||
'wantNameIdEncrypted' => false,
|
||||
|
||||
// Authentication context.
|
||||
// Set to false and no AuthContext will be sent in the AuthNRequest,
|
||||
// Set true or don't present thi parameter and you will get an AuthContext 'exact' 'urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport'
|
||||
// Set an array with the possible auth context values: array ('urn:oasis:names:tc:SAML:2.0:ac:classes:Password', 'urn:oasis:names:tc:SAML:2.0:ac:classes:X509'),
|
||||
'requestedAuthnContext' => true,
|
||||
),
|
||||
|
||||
// Contact information template, it is recommended to suply a technical and support contacts
|
||||
'contactPerson' => array(
|
||||
'technical' => array(
|
||||
'givenName' => 'name',
|
||||
'emailAddress' => 'no@reply.com'
|
||||
),
|
||||
'support' => array(
|
||||
'givenName' => 'Support',
|
||||
'emailAddress' => 'no@reply.com'
|
||||
),
|
||||
),
|
||||
|
||||
// Organization information template, the info in en_US lang is recomended, add more if required
|
||||
'organization' => array(
|
||||
'en-US' => array(
|
||||
'name' => 'Name',
|
||||
'displayname' => 'Display Name',
|
||||
'url' => 'http://url'
|
||||
),
|
||||
),
|
||||
|
||||
/* Interoperable SAML 2.0 Web Browser SSO Profile [saml2int] http://saml2int.org/profile/current
|
||||
|
||||
'authnRequestsSigned' => false, // SP SHOULD NOT sign the <samlp:AuthnRequest>,
|
||||
// MUST NOT assume that the IdP validates the sign
|
||||
'wantAssertionsSigned' => true,
|
||||
'wantAssertionsEncrypted' => true, // MUST be enabled if SSL/HTTPs is disabled
|
||||
'wantNameIdEncrypted' => false,
|
||||
*/
|
||||
|
||||
);
|
||||
71
config/saml2_settings.php
Normal file
71
config/saml2_settings.php
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
|
||||
return $settings = array(
|
||||
|
||||
/**
|
||||
* Array of IDP prefixes to be configured e.g. 'idpNames' => ['test1', 'test2', 'test3'],
|
||||
* Separate routes will be automatically registered for each IDP specified with IDP name as prefix
|
||||
* Separate config file saml2/<idpName>_idp_settings.php should be added & configured accordingly
|
||||
*/
|
||||
'idpNames' => ['ldc'],
|
||||
|
||||
/**
|
||||
* If 'useRoutes' is set to true, the package defines five new routes for reach entry in idpNames:
|
||||
*
|
||||
* Method | URI | Name
|
||||
* -------|------------------------------------|------------------
|
||||
* POST | {routesPrefix}/{idpName}/acs | saml_acs
|
||||
* GET | {routesPrefix}/{idpName}/login | saml_login
|
||||
* GET | {routesPrefix}/{idpName}/logout | saml_logout
|
||||
* GET | {routesPrefix}/{idpName}/metadata | saml_metadata
|
||||
* GET | {routesPrefix}/{idpName}/sls | saml_sls
|
||||
*/
|
||||
'useRoutes' => true,
|
||||
|
||||
/**
|
||||
* Optional, leave empty if you want the defined routes to be top level, i.e. "/{idpName}/*"
|
||||
*/
|
||||
'routesPrefix' => '/saml2',
|
||||
|
||||
/**
|
||||
* which middleware group to use for the saml routes
|
||||
* Laravel 5.2 will need a group which includes StartSession
|
||||
*/
|
||||
'routesMiddleware' => ['saml'],
|
||||
|
||||
/**
|
||||
* Indicates how the parameters will be
|
||||
* retrieved from the sls request for signature validation
|
||||
*/
|
||||
'retrieveParametersFromServer' => false,
|
||||
|
||||
/**
|
||||
* Where to redirect after logout
|
||||
*/
|
||||
'logoutRoute' => '/',
|
||||
|
||||
/**
|
||||
* Where to redirect after login if no other option was provided
|
||||
*/
|
||||
'loginRoute' => '/',
|
||||
|
||||
/**
|
||||
* Where to redirect after login if no other option was provided
|
||||
*/
|
||||
'errorRoute' => '/',
|
||||
|
||||
// If 'proxyVars' is True, then the Saml lib will trust proxy headers
|
||||
// e.g X-Forwarded-Proto / HTTP_X_FORWARDED_PROTO. This is useful if
|
||||
// your application is running behind a load balancer which terminates
|
||||
// SSL.
|
||||
'proxyVars' => false,
|
||||
|
||||
/**
|
||||
* (Optional) Which class implements the route functions.
|
||||
* If commented out, defaults to this lib's controller (Aacotroneo\Saml2\Http\Controllers\Saml2Controller).
|
||||
* If you need to extend Saml2Controller (e.g. to override the `login()` function to pass
|
||||
* a `$returnTo` argument), this value allows you to pass your own controller, and have
|
||||
* it used in the routes definition.
|
||||
*/
|
||||
// 'saml2_controller' => '',
|
||||
);
|
||||
|
|
@ -13,13 +13,13 @@
|
|||
"axios": "^0.19",
|
||||
"bootstrap": "^4.0.0",
|
||||
"cross-env": "^7.0",
|
||||
"jquery": "^3.2",
|
||||
"jquery": "^3.5.0",
|
||||
"laravel-mix": "^5.0.1",
|
||||
"lodash": "^4.17.13",
|
||||
"popper.js": "^1.12",
|
||||
"resolve-url-loader": "2.3.1",
|
||||
"sass": "^1.20.1",
|
||||
"sass-loader": "7.*",
|
||||
"sass-loader": "^8.0.2",
|
||||
"vue": "^2.5.17",
|
||||
"vue-template-compiler": "^2.6.10"
|
||||
}
|
||||
|
|
|
|||
16968
public/css/app.css
vendored
16968
public/css/app.css
vendored
File diff suppressed because one or more lines are too long
49987
public/js/app.js
vendored
49987
public/js/app.js
vendored
File diff suppressed because one or more lines are too long
1
resources/js/app.js
vendored
1
resources/js/app.js
vendored
|
|
@ -20,6 +20,7 @@ window.Vue = require('vue');
|
|||
// files.keys().map(key => Vue.component(key.split('/').pop().split('.')[0], files(key).default))
|
||||
|
||||
Vue.component('otp-form', require('./components/OTPFormComponent.vue').default);
|
||||
Vue.component('login-id', require('./components/LoginIDComponent.vue').default);
|
||||
|
||||
/**
|
||||
* Next, we will create a fresh Vue application instance and attach it to
|
||||
|
|
|
|||
56
resources/js/components/LoginIDComponent.vue
Normal file
56
resources/js/components/LoginIDComponent.vue
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
<template>
|
||||
<div>
|
||||
<div class="row" style="margin: 10px;">
|
||||
<div v-if="datas.length > 0" class="col-md-12">
|
||||
<div class="row" v-for="(item, index) in datas">
|
||||
<div class="col-md-5">
|
||||
<div class="form-group">
|
||||
<input v-model="item.login" type="text" placeholder="Login" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<div class="form-group">
|
||||
<input v-model="item.pwd" type="text" placeholder="Password" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<a @click="removeItem(index)" href="#" class="btn btn-danger"><i class="fas fa-user-times"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-12 text-center">
|
||||
<button @click="newItem" class="btn btn-primary" type="button"><i class="fas fa-user-plus"></i></button>
|
||||
<input type="hidden" :name="name" :value="JSON.stringify(datas)" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
mounted() {
|
||||
console.log('Login ID Component mounted.');
|
||||
this.datas = JSON.parse(this.dbdatas);
|
||||
},
|
||||
props: [
|
||||
'name',
|
||||
'dbdatas'
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
datas: []
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
||||
},
|
||||
methods: {
|
||||
newItem() {
|
||||
this.datas.push({login: '', pwd: ''});
|
||||
},
|
||||
removeItem(index) {
|
||||
this.datas.splice(index, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
81
resources/views/domain-names/add.blade.php
Normal file
81
resources/views/domain-names/add.blade.php
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-header">Ajout d'un nom de domaine</div>
|
||||
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
@if (session('error'))
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ session('error') }}
|
||||
</div>
|
||||
@endif
|
||||
<form action="{{route('domain-names.store')}}" method="POST">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Nom UTF-8 :</b></label>
|
||||
<input type="text" class="form-control" name="utf8_name"
|
||||
placeholder="Nom UTF-8" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Nom ASCII :</b></label>
|
||||
<input type="text" class="form-control" name="ascii_name"
|
||||
placeholder="Nom ASCII" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Date d'expiration :</b></label>
|
||||
<input type="date" class="form-control" name="expiration_date" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Renouvellement ? :</b></label>
|
||||
<select name="renew" class="form-control" required>
|
||||
<option value="1">OUI</option>
|
||||
<option value="0">NON</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Marque référente :</b></label>
|
||||
<input type="text" class="form-control" name="related_brand" placeholder="Marque référente">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Commentaire :</b></label>
|
||||
<input type="text" class="form-control" name="comment" placeholder="Commentaire">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
<input type="submit" value="Enregistrer" class="btn btn-primary">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
17
resources/views/domain-names/delete.blade.php
Normal file
17
resources/views/domain-names/delete.blade.php
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">Confirmation de suppression du nom de domaine <a href="{{route('domain-names.edit', ['id' => $dm->id])}}" class="btn btn-sm btn-primary float-right">Retour</a></div>
|
||||
|
||||
<div class="card-body">
|
||||
<otp-form csrf='{{ csrf_token() }}' action="{{route('domain-names.force-delete', ['id' => $dm->id])}}"></otp-form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
82
resources/views/domain-names/edit.blade.php
Normal file
82
resources/views/domain-names/edit.blade.php
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-header">Détails du nom de domaine <a href="{{route('domain-names.delete', ['id' => $dm->id])}}" class="btn btn-sm btn-danger float-right">Supprimer</a>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
@if (session('error'))
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ session('error') }}
|
||||
</div>
|
||||
@endif
|
||||
<form action="{{route('domain-names.update', ['id' => $dm->id])}}" method="POST">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Nom UTF-8 :</b></label>
|
||||
<input type="text" class="form-control" name="utf8_name"
|
||||
placeholder="Nom UTF-8" required value="{{$dm->utf8_name}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Nom ASCII :</b></label>
|
||||
<input type="text" class="form-control" name="ascii_name"
|
||||
placeholder="Nom ASCII" required value="{{$dm->ascii_name}}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Date d'expiration :</b></label>
|
||||
<input type="date" class="form-control" name="expiration_date" required value="{{$dm->expiration_date}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Renouvellement ? :</b></label>
|
||||
<select name="renew" class="form-control" required>
|
||||
<option value="1" @if($dm->renew === 1) selected @endif>OUI</option>
|
||||
<option value="0" @if($dm->renew === 0) selected @endif>NON</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Marque référente :</b></label>
|
||||
<input type="text" class="form-control" name="related_brand" placeholder="Marque référente" value="{{$dm->related_brand}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Commentaire :</b></label>
|
||||
<input type="text" class="form-control" name="comment" placeholder="Commentaire" value="{{$dm->comment}}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
<input type="submit" value="Enregistrer" class="btn btn-primary">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
41
resources/views/domain-names/index.blade.php
Normal file
41
resources/views/domain-names/index.blade.php
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-header">Gestion des noms de domaine <a href="{{route('domain-names.add')}}" class="btn btn-sm btn-primary float-right">Ajouter</a></div>
|
||||
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
<table class="table text-center">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th scope="col">Nom UTF-8</th>
|
||||
<th scope="col">Expiration</th>
|
||||
<th scope="col">Renouvellement ?</th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($dms as $dm)
|
||||
<tr>
|
||||
<td>{{$dm->utf8_name}}</td>
|
||||
<td>{{date('d-m-Y', strtotime($dm->expiration_date))}}</td>
|
||||
<td>{{$dm->renew === 1 ? 'OUI' : 'NON'}}</td>
|
||||
<td><a href="{{route('domain-names.edit', ['id' => $dm->id])}}" class="btn btn-sm btn-primary">Détails</a></td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
50
resources/views/dpccs/add.blade.php
Normal file
50
resources/views/dpccs/add.blade.php
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-header">Ajout d'un datastore pcc</div>
|
||||
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
@if (session('error'))
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ session('error') }}
|
||||
</div>
|
||||
@endif
|
||||
<form action="{{route('dpccs.store')}}" method="POST">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Titre :</b></label>
|
||||
<input type="text" class="form-control" name="title"
|
||||
placeholder="Titre" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Commentaire :</b></label>
|
||||
<input type="text" class="form-control" name="comment"
|
||||
placeholder="Commentaire" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
<input type="submit" value="Enregistrer" class="btn btn-primary">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
30
resources/views/dpccs/delete.blade.php
Normal file
30
resources/views/dpccs/delete.blade.php
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
@if ($isUsed === false)
|
||||
<div class="card-header">Confirmation de suppression du datastore pcc <a href="{{route('dpccs.edit', ['id' => $dpcc->id])}}" class="btn btn-sm btn-primary float-right">Retour</a></div>
|
||||
|
||||
<div class="card-body">
|
||||
<otp-form csrf='{{ csrf_token() }}' action="{{route('dpccs.force-delete', ['id' => $dpcc->id])}}"></otp-form>
|
||||
</div>
|
||||
@else
|
||||
<div class="card-header">Suppression du datastore pcc refusée <a href="{{route('dpccs.edit', ['id' => $dpcc->id])}}" class="btn btn-sm btn-primary float-right">Retour</a></div>
|
||||
|
||||
<div class="card-body">
|
||||
<p>Le datastore pcc est utilisé par le(s) serveur(s) suivant(s) :</p>
|
||||
<ul>
|
||||
@foreach($isUsed as $server)
|
||||
<li>{{$server->title}} {{$server->name}}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
51
resources/views/dpccs/edit.blade.php
Normal file
51
resources/views/dpccs/edit.blade.php
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-header">Détails du datastore pcc <a href="{{route('dpccs.delete', ['id' => $dpcc->id])}}" class="btn btn-sm btn-danger float-right">Supprimer</a>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
@if (session('error'))
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ session('error') }}
|
||||
</div>
|
||||
@endif
|
||||
<form action="{{route('dpccs.update', ['id' => $dpcc->id])}}" method="POST">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Titre :</b></label>
|
||||
<input type="text" class="form-control" name="title"
|
||||
placeholder="Titre" value="{{$dpcc->title}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Commentaire :</b></label>
|
||||
<input type="text" class="form-control" name="comment"
|
||||
placeholder="Commentaire" value="{{$dpcc->comment}}" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
<input type="submit" value="Enregistrer" class="btn btn-primary">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
39
resources/views/dpccs/index.blade.php
Normal file
39
resources/views/dpccs/index.blade.php
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-header">Gestion des datastores PCC <a href="{{route('dpccs.add')}}" class="btn btn-sm btn-primary float-right">Ajouter</a></div>
|
||||
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
<table class="table text-center">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th scope="col">Titre</th>
|
||||
<th scope="col">Commentaire</th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($dpccs as $dpcc)
|
||||
<tr>
|
||||
<td>{{$dpcc->title}}</td>
|
||||
<td>{{$dpcc->comment}}</td>
|
||||
<td><a href="{{route('dpccs.edit', ['id' => $dpcc->id])}}" class="btn btn-sm btn-primary">Détails</a></td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -7,22 +7,40 @@
|
|||
<div class="card">
|
||||
<div class="card-header">Dashboard</div>
|
||||
|
||||
<div class="card-body" style="display: flex;justify-content: space-around;">
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<a href="/projects" class="btn btn-lg btn-primary">
|
||||
<i class="far fa-list-alt"></i><br>
|
||||
EDL Web
|
||||
</a>
|
||||
<a href="/status-checker" class="btn btn-lg btn-primary">
|
||||
<i class="fas fa-clipboard-check"></i><br>
|
||||
Status Checker
|
||||
</a>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12 d-flex justify-content-around">
|
||||
<a href="/projects" class="btn btn-lg btn-primary">
|
||||
<i class="far fa-list-alt"></i><br>
|
||||
EDL Web
|
||||
</a>
|
||||
<a href="/servers" class="btn btn-lg btn-primary">
|
||||
<i class="fas fa-server"></i><br>
|
||||
Serveurs
|
||||
</a>
|
||||
<a href="/dpccs" class="btn btn-lg btn-primary">
|
||||
<i class="fas fa-database"></i><br>
|
||||
Datastores PCC
|
||||
</a>
|
||||
<a href="/status-checker" class="btn btn-lg btn-primary">
|
||||
<i class="fas fa-clipboard-check"></i><br>
|
||||
Status Checker
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-4">
|
||||
<div class="col-md-12 d-flex justify-content-around">
|
||||
<a href="/domain-names" class="btn btn-lg btn-primary">
|
||||
<i class="fas fa-copyright"></i><br>
|
||||
Noms de domaine
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -46,6 +46,15 @@
|
|||
<li class="nav-item">
|
||||
<a href="/projects" class="nav-link">EDL Web</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="/servers" class="nav-link">Serveurs</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="/dpccs" class="nav-link">Datastores PCC</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="/domain-names" class="nav-link">Noms de domaine</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="/status-checker" class="nav-link">Status Checker</a>
|
||||
</li>
|
||||
|
|
|
|||
395
resources/views/projects/add.blade.php
Normal file
395
resources/views/projects/add.blade.php
Normal file
|
|
@ -0,0 +1,395 @@
|
|||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-header">Ajout d'un projet</div>
|
||||
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
<form action="/projects/store" method="POST">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Nom court :</b></label>
|
||||
<input type="text" name="name" class="form-control" placeholder="Nom court" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Nom :</b></label>
|
||||
<input type="text" name="display_name" class="form-control" placeholder="Nom" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>Dépôt GIT :</b></label>
|
||||
<input type="text" name="git_repo" class="form-control" placeholder="Dépôt GIT">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label><b>PHP :</b></label>
|
||||
<select name="php" class="form-control">
|
||||
<option value="7.3">7.3</option>
|
||||
<option value="7">7</option>
|
||||
<option value="5.6">5.6</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label><b>Type :</b></label>
|
||||
<select name="type" class="form-control" required>
|
||||
<option value="WP">WP</option>
|
||||
<option value="Laravel">Laravel</option>
|
||||
<option value="Symfony">Symfony</option>
|
||||
<option value="other">Autres</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label><b>HTTPS :</b></label>
|
||||
<select name="https" class="form-control">
|
||||
<option value="1">Oui</option>
|
||||
<option value="0">Non</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>GIT User :</b></label>
|
||||
<input type="text" name="git_user" class="form-control" placeholder="GIT User">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>GIT Password :</b></label>
|
||||
<input type="text" name="git_pwd" class="form-control" placeholder="GIT Password">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if (Auth::user()->role === 1)
|
||||
<div class="row text-center" style="background-color: rgba(0, 0, 0, 0.03);display: flex;justify-content: space-around;">
|
||||
<p style="margin: 10px"><b>BO DEV</b></p>
|
||||
<p style="margin: 10px;"><b>BO PROD</b></p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>URL BO :</b></label>
|
||||
<input type="url" name="dev_bo_url" placeholder="URL BO" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>URL BO :</b></label>
|
||||
<input type="url" name="prod_bo_url" placeholder="URL BO" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<login-id name="dev_login" dbdatas="[]"/>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<login-id name="prod_login" dbdatas="[]"/>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="row text-center" style="background-color: rgba(0, 0, 0, 0.03);display: flex;justify-content: space-around;">
|
||||
<p style="margin: 10px"><b>DEV</b></p>
|
||||
<p style="margin: 10px;"><b>PROD</b></p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>URL :</b></label>
|
||||
<input type="url" name="dev_url" class="form-control" placeholder="URL">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>Type Certificats :</b></label>
|
||||
<input type="text" name="dev_certificats" class="form-control" placeholder="Type Certificats">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>Document Root :</b></label>
|
||||
<input type="text" name="dev_document_root" class="form-control" placeholder="Document Root">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>WEB Server :</b></label>
|
||||
<select name="dev_web_server_id" class="form-control">
|
||||
@foreach($dev_web_server as $server)
|
||||
<option value="{{$server->id}}">{{$server->title}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Unix user :</b></label>
|
||||
<input type="text" name="dev_unix_user" class="form-control" placeholder="Unix user">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Unix password :</b></label>
|
||||
<input type="text" name="dev_unix_pwd" class="form-control" placeholder="Unix password">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>DB Server :</b></label>
|
||||
<select name="dev_db_server_id" class="form-control">
|
||||
@foreach($dev_db_server as $server)
|
||||
<option value="{{$server->id}}">{{$server->title}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>DB Schema :</b></label>
|
||||
<input type="text" name="dev_db_schema" class="form-control" placeholder="DB Schema">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>DB user :</b></label>
|
||||
<input type="text" name="dev_db_user" class="form-control" placeholder="DB user">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>DB password :</b></label>
|
||||
<input type="text" name="dev_db_pwd" class="form-control" placeholder="DB password">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>DNS Redirigés :</b></label>
|
||||
<textarea name="dev_redirect_dns" cols="30" rows="5" class="form-control"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>Flux EAI :</b></label>
|
||||
<input type="text" name="dev_eai" class="form-control" placeholder="Flux EAI">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>Whitelist FW :</b></label>
|
||||
<input type="text" name="dev_whitelist_fw" class="form-control" placeholder="Whitelist FW">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>Commentaire :</b></label>
|
||||
<textarea name="dev_comment" cols="30" rows="5" class="form-control"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>HTACCESS User :</b></label>
|
||||
<input type="text" name="dev_htaccess_user" class="form-control" placeholder="HTACCESS User">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>HTACCESS Password :</b></label>
|
||||
<input type="text" name="dev_htaccess_pwd" class="form-control" placeholder="HTACCESS Password">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>URL :</b></label>
|
||||
<input type="url" name="prod_url" class="form-control" placeholder="URL">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>Type Certificats :</b></label>
|
||||
<input type="text" name="prod_certificats" class="form-control" placeholder="Type Certificats">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>Document Root :</b></label>
|
||||
<input type="text" name="prod_document_root" class="form-control" placeholder="Document Root">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>WEB Server :</b></label>
|
||||
<select name="prod_web_server_id" class="form-control">
|
||||
@foreach($prod_web_server as $server)
|
||||
<option value="{{$server->id}}">{{$server->title}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Unix user :</b></label>
|
||||
<input type="text" name="prod_unix_user" class="form-control" placeholder="Unix user">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Unix password :</b></label>
|
||||
<input type="text" name="prod_unix_pwd" class="form-control" placeholder="Unix password">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>DB Server :</b></label>
|
||||
<select name="prod_db_server_id" class="form-control">
|
||||
@foreach($prod_db_server as $server)
|
||||
<option value="{{$server->id}}">{{$server->title}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>DB Schema :</b></label>
|
||||
<input type="text" name="prod_db_schema" class="form-control" placeholder="DB Schema">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>DB user :</b></label>
|
||||
<input type="text" name="prod_db_user" class="form-control" placeholder="DB user">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>DB password :</b></label>
|
||||
<input type="text" name="prod_db_pwd" class="form-control" placeholder="DB password">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>DNS Redirigés :</b></label>
|
||||
<textarea name="prod_redirect_dns" cols="30" rows="5" class="form-control"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>Flux EAI :</b></label>
|
||||
<input type="text" name="prod_eai" class="form-control" placeholder="Flux EAI">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>Whitelist FW :</b></label>
|
||||
<input type="text" name="prod_whitelist_fw" class="form-control" placeholder="Whitelist FW">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label><b>Commentaire :</b></label>
|
||||
<textarea name="prod_comment" cols="30" rows="5" class="form-control"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>ID Google Analytics :</b></label>
|
||||
<input type="text" name="prod_ga_id" class="form-control" placeholder="ID Google Analytics">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
<input type="submit" value="Enregistrer" class="btn btn-primary">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
17
resources/views/projects/delete.blade.php
Normal file
17
resources/views/projects/delete.blade.php
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">Confirmation de suppression du projet {{ $project->display_name }} <a href="/projects/{{$project->uuid}}/edit" class="btn btn-sm btn-primary float-right">Retour</a></div>
|
||||
|
||||
<div class="card-body">
|
||||
<otp-form csrf='{{ csrf_token() }}' action="/projects/{{$project->uuid}}/force-delete"></otp-form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-header">{{$project->name}} - {{$project->display_name}}</div>
|
||||
<div class="card-header">{{$project->name}} - {{$project->display_name}} <a href="/projects/{{$project->uuid}}/delete" class="btn btn-sm btn-danger float-right">Supprimer</a></div>
|
||||
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
|
|
@ -13,6 +13,11 @@
|
|||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
@if (session('error'))
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ session('error') }}
|
||||
</div>
|
||||
@endif
|
||||
<form action="/projects/{{$project->uuid}}/update" method="POST">
|
||||
@csrf
|
||||
<div class="row">
|
||||
|
|
@ -21,13 +26,13 @@
|
|||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Nom court :</b></label>
|
||||
<input type="text" name="name" class="form-control" placeholder="Nom court" value="{{$project->name}}">
|
||||
<input type="text" name="name" class="form-control" placeholder="Nom court" value="{{$project->name}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Nom :</b></label>
|
||||
<input type="text" name="display_name" class="form-control" placeholder="Nom" value="{{$project->display_name}}">
|
||||
<input type="text" name="display_name" class="form-control" placeholder="Nom" value="{{$project->display_name}}" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -46,16 +51,16 @@
|
|||
<div class="form-group">
|
||||
<label><b>PHP :</b></label>
|
||||
<select name="php" class="form-control">
|
||||
<option @if ($project->php === '5.6') selected @endif value="5.6">5.6</option>
|
||||
<option @if ($project->php === '7') selected @endif value="7">7</option>
|
||||
<option @if ($project->php === '7.3') selected @endif value="7.3">7.3</option>
|
||||
<option @if ($project->php === '7') selected @endif value="7">7</option>
|
||||
<option @if ($project->php === '5.6') selected @endif value="5.6">5.6</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label><b>Type :</b></label>
|
||||
<select name="type" class="form-control">
|
||||
<select name="type" class="form-control" required>
|
||||
<option @if ($project->type === 'WP') selected @endif value="WP">WP</option>
|
||||
<option @if ($project->type === 'Laravel') selected @endif value="Laravel">Laravel</option>
|
||||
<option @if ($project->type === 'Symfony') selected @endif value="Symfony">Symfony</option>
|
||||
|
|
@ -89,6 +94,34 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if (Auth::user()->role === 1)
|
||||
<div class="row text-center" style="background-color: rgba(0, 0, 0, 0.03);display: flex;justify-content: space-around;">
|
||||
<p style="margin: 10px"><b>BO DEV</b></p>
|
||||
<p style="margin: 10px;"><b>BO PROD</b></p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>URL BO :</b></label>
|
||||
<input type="url" name="dev_bo_url" placeholder="URL BO" class="form-control" value="{{$project->dev_bo_url}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>URL BO :</b></label>
|
||||
<input type="url" name="prod_bo_url" placeholder="URL BO" class="form-control" value="{{$project->prod_bo_url}}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<login-id name="dev_login" dbdatas="{{$project->dev_login}}"/>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<login-id name="prod_login" dbdatas="{{$project->prod_login}}"/>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="row text-center" style="background-color: rgba(0, 0, 0, 0.03);display: flex;justify-content: space-around;">
|
||||
<p style="margin: 10px"><b>DEV</b></p>
|
||||
<p style="margin: 10px;"><b>PROD</b></p>
|
||||
|
|
@ -123,7 +156,7 @@
|
|||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>IP:Port SSH/SFTP :</b></label>
|
||||
<input type="text" class="form-control" placeholder="IP:Port SSH/SFTP" value="">
|
||||
<input type="text" class="form-control" placeholder="IP:Port SSH/SFTP" value="{{$project->dev_web_ip}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
|
|
@ -155,7 +188,7 @@
|
|||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>DB IP:Port SSH :</b></label>
|
||||
<input type="text" class="form-control" placeholder="DB SSH" value="">
|
||||
<input type="text" class="form-control" placeholder="DB SSH" value="{{$project->dev_db_ip}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
|
|
@ -267,7 +300,7 @@
|
|||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>IP:Port SSH/SFTP :</b></label>
|
||||
<input type="text" class="form-control" placeholder="IP:Port SSH/SFTP" value="">
|
||||
<input type="text" class="form-control" placeholder="IP:Port SSH/SFTP" value="{{$project->prod_web_ip}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
|
|
@ -299,7 +332,7 @@
|
|||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>DB IP:Port SSH :</b></label>
|
||||
<input type="text" class="form-control" placeholder="DB SSH" value="">
|
||||
<input type="text" class="form-control" placeholder="DB SSH" value="{{$project->prod_db_ip}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
|
|
@ -367,6 +400,14 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>ID Google Analytics :</b></label>
|
||||
<input type="text" name="prod_ga_id" class="form-control" placeholder="ID Google Analytics" value="{{$project->prod_ga_id}}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-header">EDL Web</div>
|
||||
<div class="card-header">EDL Web <a href="/projects/add" class="btn btn-sm btn-primary float-right">Ajouter</a></div>
|
||||
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
|
|
|
|||
113
resources/views/servers/add.blade.php
Normal file
113
resources/views/servers/add.blade.php
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-header">Ajout d'un serveur</div>
|
||||
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
@if (session('error'))
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ session('error') }}
|
||||
</div>
|
||||
@endif
|
||||
<form action="{{route('servers.store')}}" method="POST">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Environnement :</b></label>
|
||||
<select name="env" class="form-control" required>
|
||||
<option value="PROD">PROD</option>
|
||||
<option value="DEV">DEV</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>IP Virtuelle :</b></label>
|
||||
<input type="text" class="form-control" name="virtual_ip"
|
||||
placeholder="IP Virtuelle" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>SSH :</b></label>
|
||||
<input type="text" class="form-control" name="ssh" placeholder="SSH" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>IP Infraweb :</b></label>
|
||||
<input type="text" class="form-control" name="infraweb_ip" placeholder="IP Infraweb" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Titre :</b></label>
|
||||
<input type="text" class="form-control" name="title" placeholder="Titre" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Libellé :</b></label>
|
||||
<input type="text" class="form-control" name="name" placeholder="Libellé" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Fonction :</b></label>
|
||||
<input type="text" class="form-control" name="function" placeholder="Fonction" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Commentaire :</b></label>
|
||||
<input type="text" class="form-control" name="comment" placeholder="Commentaire">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Type (utilisé dans l'application) :</b></label>
|
||||
<input type="text" class="form-control" name="type" placeholder="Type">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Datastore PCC :</b></label>
|
||||
<select name="datastore_pcc_id" class="form-control">
|
||||
<option value=""></option>
|
||||
@foreach($datastores_pcc as $dpcc)
|
||||
<option value="{{$dpcc->id}}">{{$dpcc->title}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
<input type="submit" value="Enregistrer" class="btn btn-primary">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
30
resources/views/servers/delete.blade.php
Normal file
30
resources/views/servers/delete.blade.php
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
@if ($isUsed === false)
|
||||
<div class="card-header">Confirmation de suppression du serveur <a href="{{route('servers.edit', ['id' => $server->id])}}" class="btn btn-sm btn-primary float-right">Retour</a></div>
|
||||
|
||||
<div class="card-body">
|
||||
<otp-form csrf='{{ csrf_token() }}' action="{{route('servers.force-delete', ['id' => $server->id])}}"></otp-form>
|
||||
</div>
|
||||
@else
|
||||
<div class="card-header">Suppression du serveur refusée <a href="{{route('servers.edit', ['id' => $server->id])}}" class="btn btn-sm btn-primary float-right">Retour</a></div>
|
||||
|
||||
<div class="card-body">
|
||||
<p>Le serveur est utilisé par le(s) projet(s) suivant(s) :</p>
|
||||
<ul>
|
||||
@foreach($isUsed as $project)
|
||||
<li>{{$project->name}}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
123
resources/views/servers/edit.blade.php
Normal file
123
resources/views/servers/edit.blade.php
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-header">Détails du serveur <a href="{{route('servers.delete', ['id' => $server->id])}}" class="btn btn-sm btn-danger float-right">Supprimer</a>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
@if (session('error'))
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ session('error') }}
|
||||
</div>
|
||||
@endif
|
||||
<form action="{{route('servers.update', ['id' => $server->id])}}" method="POST">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Environnement :</b></label>
|
||||
<select name="env" class="form-control" required>
|
||||
<option @if ($server->env === 'PROD') selected @endif value="PROD">PROD
|
||||
</option>
|
||||
<option @if ($server->env === 'DEV') selected @endif value="DEV">DEV
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>IP Virtuelle :</b></label>
|
||||
<input type="text" class="form-control" name="virtual_ip"
|
||||
placeholder="IP Virtuelle" value="{{$server->virtual_ip}}" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>SSH :</b></label>
|
||||
<input type="text" class="form-control" name="ssh" placeholder="SSH"
|
||||
value="{{$server->ssh}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>IP Infraweb :</b></label>
|
||||
<input type="text" class="form-control" name="infraweb_ip" placeholder="IP Infraweb"
|
||||
value="{{$server->infraweb_ip}}" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Titre :</b></label>
|
||||
<input type="text" class="form-control" name="title" placeholder="Titre"
|
||||
value="{{$server->title}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Libellé :</b></label>
|
||||
<input type="text" class="form-control" name="name" placeholder="Libellé"
|
||||
value="{{$server->name}}" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Fonction :</b></label>
|
||||
<input type="text" class="form-control" name="function" placeholder="Fonction"
|
||||
value="{{$server->function}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Commentaire :</b></label>
|
||||
<input type="text" class="form-control" name="comment" placeholder="Commentaire"
|
||||
value="{{$server->comment}}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Type (utilisé dans l'application) :</b></label>
|
||||
<input type="text" class="form-control" name="type" placeholder="Type"
|
||||
value="{{$server->type}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><b>Datastore PCC :</b></label>
|
||||
<select name="datastore_pcc_id" class="form-control">
|
||||
<option value=""></option>
|
||||
@foreach($datastores_pcc as $dpcc)
|
||||
<option value="{{$dpcc->id}}" @if($server->datastore_pcc_id === $dpcc->id) selected @endif>{{$dpcc->title}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
<input type="submit" value="Enregistrer" class="btn btn-primary">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
47
resources/views/servers/index.blade.php
Normal file
47
resources/views/servers/index.blade.php
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-header">Gestion des serveurs <a href="{{route('servers.add')}}" class="btn btn-sm btn-primary float-right">Ajouter</a></div>
|
||||
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
<table class="table text-center">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th scope="col">ENV</th>
|
||||
<th scope="col">Libellé</th>
|
||||
<th scope="col">Titre</th>
|
||||
<th scope="col">Fonction</th>
|
||||
<th scope="col">SSH</th>
|
||||
<th scope="col">IP Infraweb</th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($servers as $server)
|
||||
<tr>
|
||||
<td>{{$server->env}}</td>
|
||||
<td>{{$server->name}}</td>
|
||||
<td>{{$server->title}}</td>
|
||||
<td>{{$server->function}}</td>
|
||||
<td>{{$server->ssh}}</td>
|
||||
<td>{{$server->infraweb_ip}}</td>
|
||||
<td><a href="{{route('servers.edit', ['id' => $server->id])}}" class="btn btn-sm btn-primary">Détails</a></td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -40,7 +40,30 @@
|
|||
<th scope="row" class="text-left"><a href="/projects/{{$project->uuid}}/edit">{{$project->display_name}}</a></th>
|
||||
<td><b>{{$project->php}}</b></td>
|
||||
<td>{{$project->type}}</td>
|
||||
<td></td>
|
||||
<td>
|
||||
@if ($project->code === 'missing')
|
||||
<i class="fas fa-ghost"></i>
|
||||
@else
|
||||
@php
|
||||
$code = json_decode($project->code);
|
||||
@endphp
|
||||
@if ($project->type === 'WP')
|
||||
@if ($code->version === $wp_latest)
|
||||
{{$code->version}}
|
||||
@else
|
||||
<b class="red">{{$code->version}} ({{$wp_latest}})</b>
|
||||
@endif
|
||||
@elseif ($project->type === 'Laravel')
|
||||
@if ($code->version === $laravel_latest)
|
||||
{{$code->version}}
|
||||
@else
|
||||
<b class="red">{{$code->version}} ({{$laravel_latest}})</b>
|
||||
@endif
|
||||
@else
|
||||
{{$code->version}}
|
||||
@endif
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@if ($project->sitemap_checked === 'missing')
|
||||
<i class="fas fa-ghost"></i>
|
||||
|
|
@ -65,7 +88,7 @@
|
|||
@elseif($project->logs_checked === 0)
|
||||
<i class="fas fa-bug green"></i>
|
||||
@else
|
||||
<i class="fas fa-bug red"></i> {{$project->logs_checked}} B
|
||||
<i class="fas fa-bug red"></i> {{ $project->logs_HR }}
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -21,7 +21,35 @@ Route::group(['middleware' => ['auth']], function () {
|
|||
/* STATUS CHECKER */
|
||||
Route::get('/status-checker', 'StatusCheckerController@index');
|
||||
/* EDL WEB */
|
||||
Route::get('/projects', 'ProjectsController@index');
|
||||
Route::get('/projects', 'ProjectsController@index')->name('projects.index');
|
||||
Route::get('/projects/{uuid}/edit', 'ProjectsController@edit')->name('projects.edit');
|
||||
Route::post('/projects/{uuid}/update', 'ProjectsController@update');
|
||||
Route::get('/projects/{uuid}/delete', 'ProjectsController@delete');
|
||||
Route::post('/projects/{uuid}/force-delete', 'ProjectsController@forceDelete');
|
||||
Route::get('/projects/add', 'ProjectsController@add');
|
||||
Route::post('/projects/store', 'ProjectsController@store');
|
||||
/* SERVERS */
|
||||
Route::get('/servers', 'ServersController@index')->name('servers.index');
|
||||
Route::post('/servers/store', 'ServersController@store')->name('servers.store');
|
||||
Route::get('/servers/add', 'ServersController@add')->name('servers.add');
|
||||
Route::get('/servers/{id}', 'ServersController@edit')->name('servers.edit');
|
||||
Route::post('/servers/{id}/update', 'ServersController@update')->name('servers.update');
|
||||
Route::get('/servers/{id}/delete', 'ServersController@delete')->name('servers.delete');
|
||||
Route::post('/servers/{id}/force-delete', 'ServersController@forceDelete')->name('servers.force-delete');
|
||||
/* DATASTORE PCC */
|
||||
Route::get('/dpccs', 'DatastorePCCController@index')->name('dpccs.index');
|
||||
Route::post('/dpccs/store', 'DatastorePCCController@store')->name('dpccs.store');
|
||||
Route::get('/dpccs/add', 'DatastorePCCController@add')->name('dpccs.add');
|
||||
Route::get('/dpccs/{id}', 'DatastorePCCController@edit')->name('dpccs.edit');
|
||||
Route::post('/dpccs/{id}/update', 'DatastorePCCController@update')->name('dpccs.update');
|
||||
Route::get('/dpccs/{id}/delete', 'DatastorePCCController@delete')->name('dpccs.delete');
|
||||
Route::post('/dpccs/{id}/force-delete', 'DatastorePCCController@forceDelete')->name('dpccs.force-delete');
|
||||
/* DOMAIN NAMES */
|
||||
Route::get('/domain-names', 'DomainNamesController@index')->name('domain-names.index');
|
||||
Route::post('/domain-names/store', 'DomainNamesController@store')->name('domain-names.store');
|
||||
Route::get('/domain-names/add', 'DomainNamesController@add')->name('domain-names.add');
|
||||
Route::get('/domain-names/{id}', 'DomainNamesController@edit')->name('domain-names.edit');
|
||||
Route::post('/domain-names/{id}/update', 'DomainNamesController@update')->name('domain-names.update');
|
||||
Route::get('/domain-names/{id}/delete', 'DomainNamesController@delete')->name('domain-names.delete');
|
||||
Route::post('/domain-names/{id}/force-delete', 'DomainNamesController@forceDelete')->name('domain-names.force-delete');
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue