- EmailAddresses Management
This commit is contained in:
parent
4fd8f4bf37
commit
6d5a116314
11 changed files with 300 additions and 1 deletions
|
|
@ -3,7 +3,6 @@
|
|||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\DomainNames;
|
||||
use App\Models\Servers;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
|
|
|||
85
app/Http/Controllers/EmailAddressesController.php
Normal file
85
app/Http/Controllers/EmailAddressesController.php
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\DomainNames;
|
||||
use App\Models\EmailAddresses;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use lfkeitel\phptotp\Base32;
|
||||
use lfkeitel\phptotp\Totp;
|
||||
|
||||
class EmailAddressesController extends Controller
|
||||
{
|
||||
public function index(Request $request) {
|
||||
$emails = EmailAddresses::all();
|
||||
return view('email-addresses.index', ['emails' => $emails]);
|
||||
}
|
||||
|
||||
public function add(Request $request) {
|
||||
$dms = DomainNames::orderBy('utf8_name')->get();
|
||||
return view('email-addresses.add', ['dms' => $dms]);
|
||||
}
|
||||
|
||||
public function edit(Request $request) {
|
||||
$email_id = $request->id;
|
||||
$email = EmailAddresses::findOrFail($email_id);
|
||||
$dms = DomainNames::orderBy('utf8_name')->get();
|
||||
return view('email-addresses.edit', ['email' => $email, 'dms' => $dms]);
|
||||
}
|
||||
|
||||
public function update(Request $request) {
|
||||
$email_id = $request->id;
|
||||
$email = EmailAddresses::findOrFail($email_id);
|
||||
$this->makeChanges($request, $email);
|
||||
return redirect()->route('email-addresses.edit', ['id' => $email->id])->with('status', 'Sauvegardée !');
|
||||
}
|
||||
|
||||
public function store(Request $request) {
|
||||
$email = new EmailAddresses();
|
||||
$this->makeChanges($request, $email);
|
||||
return redirect()->route('email-addresses.edit', ['id' => $email->id])->with('status', 'Sauvegardée !');
|
||||
}
|
||||
|
||||
public function delete(Request $request) {
|
||||
$email_id = $request->id;
|
||||
$email = EmailAddresses::findOrFail($email_id);
|
||||
return view('email-addresses.delete', ['email' => $email]);
|
||||
}
|
||||
|
||||
public function forceDelete(Request $request)
|
||||
{
|
||||
$email_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) {
|
||||
$email = EmailAddresses::findOrFail($email_id);
|
||||
$email->delete();
|
||||
return redirect()->route('email-addresses.index')->with('status', 'Adresse email supprimée !');
|
||||
}else{
|
||||
return redirect()->route('email-addresses.edit', ['id' => $email_id])->with('error', 'Code de vérification invalide.');
|
||||
}
|
||||
}
|
||||
|
||||
private function makeChanges($request, $email) {
|
||||
$account = $request->account;
|
||||
$password = $request->password;
|
||||
$domain_name_id = $request->d_n_id;
|
||||
|
||||
$email->account = $account;
|
||||
$email->password = $password;
|
||||
$email->domain_name_id = $domain_name_id;
|
||||
$email->save();
|
||||
}
|
||||
}
|
||||
10
app/Models/DomainNames.php
Normal file
10
app/Models/DomainNames.php
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class DomainNames extends Model
|
||||
{
|
||||
//
|
||||
}
|
||||
13
app/Models/EmailAddresses.php
Normal file
13
app/Models/EmailAddresses.php
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class EmailAddresses extends Model
|
||||
{
|
||||
public function getDomainNameAttribute() {
|
||||
$dn = DomainNames::findOrFail($this->domain_name_id);
|
||||
return $dn->utf8_name;
|
||||
}
|
||||
}
|
||||
60
resources/views/email-addresses/add.blade.php
Normal file
60
resources/views/email-addresses/add.blade.php
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
@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'une adresse email</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('email-addresses.store')}}" method="POST">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label><b>Compte :</b></label>
|
||||
<input type="text" class="form-control" name="account"
|
||||
placeholder="Compte" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label><b>Mot de passe :</b></label>
|
||||
<input type="text" class="form-control" name="password"
|
||||
placeholder="Mot de passe" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label><b>Nom de domaine :</b></label>
|
||||
<select name="d_n_id" class="form-control" required>
|
||||
@foreach($dms as $dm)
|
||||
<option value="{{$dm->id}}">{{$dm->utf8_name}}</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
|
||||
17
resources/views/email-addresses/delete.blade.php
Normal file
17
resources/views/email-addresses/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 de l'adresse email <a href="{{route('email-addresses.edit', ['id' => $email->id])}}" class="btn btn-sm btn-primary float-right">Retour</a></div>
|
||||
|
||||
<div class="card-body">
|
||||
<otp-form csrf='{{ csrf_token() }}' action="{{route('email-addresses.force-delete', ['id' => $email->id])}}"></otp-form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
61
resources/views/email-addresses/edit.blade.php
Normal file
61
resources/views/email-addresses/edit.blade.php
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
@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 de l'adresse email <a href="{{route('email-addresses.delete', ['id' => $email->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('email-addresses.update', ['id' => $email->id])}}" method="POST">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label><b>Compte :</b></label>
|
||||
<input type="text" class="form-control" name="account"
|
||||
placeholder="Compte" value="{{$email->account}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label><b>Mot de passe :</b></label>
|
||||
<input type="text" class="form-control" name="password"
|
||||
placeholder="Mot de passe" value="{{$email->password}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label><b>Nom de domaine :</b></label>
|
||||
<select name="d_n_id" class="form-control" required>
|
||||
@foreach($dms as $dm)
|
||||
<option value="{{$dm->id}}" @if($email->domain_name_id === $dm->id) selected @endif>{{$dm->utf8_name}}</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
|
||||
39
resources/views/email-addresses/index.blade.php
Normal file
39
resources/views/email-addresses/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 adresses email <a href="{{route('email-addresses.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">Compte</th>
|
||||
<th scope="col">Nom de domaine</th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($emails as $email)
|
||||
<tr>
|
||||
<td>{{$email->account}}</td>
|
||||
<td>@ {{$email->domain_name}}</td>
|
||||
<td><a href="{{route('email-addresses.edit', ['id' => $email->id])}}" class="btn btn-sm btn-primary">Détails</a></td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -39,6 +39,10 @@
|
|||
<i class="fas fa-copyright"></i><br>
|
||||
Noms de domaine
|
||||
</a>
|
||||
<a href="{{route('email-addresses.index')}}" class="btn btn-lg btn-primary">
|
||||
<i class="fas fa-at"></i><br>
|
||||
Adresses email
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -55,6 +55,9 @@
|
|||
<li class="nav-item">
|
||||
<a href="/domain-names" class="nav-link">Noms de domaine</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="{{route('email-addresses.index')}}" class="nav-link">Adresses email</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="/status-checker" class="nav-link">Status Checker</a>
|
||||
</li>
|
||||
|
|
|
|||
|
|
@ -52,4 +52,12 @@ Route::group(['middleware' => ['auth']], function () {
|
|||
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');
|
||||
/* EMAIL ADDRESSES */
|
||||
Route::get('/email-addresses', 'EmailAddressesController@index')->name('email-addresses.index');
|
||||
Route::post('/email-addresses/store', 'EmailAddressesController@store')->name('email-addresses.store');
|
||||
Route::get('/email-addresses/add', 'EmailAddressesController@add')->name('email-addresses.add');
|
||||
Route::get('/email-addresses/{id}', 'EmailAddressesController@edit')->name('email-addresses.edit');
|
||||
Route::post('/email-addresses/{id}/update', 'EmailAddressesController@update')->name('email-addresses.update');
|
||||
Route::get('/email-addresses/{id}/delete', 'EmailAddressesController@delete')->name('email-addresses.delete');
|
||||
Route::post('/email-addresses/{id}/force-delete', 'EmailAddressesController@forceDelete')->name('email-addresses.force-delete');
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue