Merge branch '25-add-ssl-for-alias-domains-automatically' into develop

# Conflicts:
#	public/js/app.js
This commit is contained in:
Dennis Smink
2022-07-20 08:06:48 +02:00
38 changed files with 27713 additions and 181 deletions

View File

@@ -6,7 +6,6 @@ use App\Http\Requests\SiteAliasRequest;
use App\Http\Resources\SiteAliasResource;
use App\Jobs\Aliases\CreateAlias;
use App\Jobs\Aliases\DeleteAlias;
use Illuminate\Http\Request;
class SiteAliasController extends Controller
{
@@ -26,7 +25,7 @@ class SiteAliasController extends Controller
$site->addAlias($request->input('domain'));
dispatch(new CreateAlias($site, $request->input('domain')));
dispatch(new CreateAlias($site, $request->input('domain'), $request->boolean('request_new_certificate')));
return redirect()->route('sites.aliases.index', $id)->with('success', __('Alias has been created'));
}

View File

@@ -19,6 +19,9 @@ class SiteAliasRequest extends FormRequest
'required',
'string',
new Hostname,
],
'request_new_certificate' => [
'required',
]
];
}

View File

@@ -2,10 +2,12 @@
namespace App\Jobs\Aliases;
use App\Jobs\Certificates\CreateCertificate;
use App\Jobs\Certificates\DeleteCertificate;
use App\Models\Certificate;
use App\Models\Site;
use App\Traits\HasPloi;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
@@ -15,14 +17,11 @@ class CreateAlias implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, HasPloi;
public Site $site;
public string $alias;
public function __construct(Site $site, $alias)
{
$this->site = $site;
$this->alias = $alias;
}
public function __construct(
public Site $site,
public string $alias,
public bool $requestNewCertificate = false,
) {}
public function handle()
{
@@ -31,6 +30,35 @@ class CreateAlias implements ShouldQueue
->sites($this->site->ploi_id)
->aliases()
->create([$this->alias]);
if ($this->requestNewCertificate) {
$currentCertificate = $this
->site
->certificates()
->whereIn('status', [Certificate::STATUS_ACTIVE, Certificate::STATUS_BUSY])
->latest()
->first();
if (! $currentCertificate) {
return;
}
dispatch(new DeleteCertificate($this->site->server->ploi_id, $this->site->ploi_id, $currentCertificate->ploi_id));
$newCertificate = $this->site->certificates()->create([
'domain' => $currentCertificate->domain . ',' . $this->alias,
'type' => $currentCertificate->type,
'certificate' => $currentCertificate->certificate,
'private' => $currentCertificate->private
]);
$currentCertificate->delete();
$newCertificate->server_id = $this->site->server_id;
$newCertificate->save();
dispatch(new CreateCertificate($newCertificate))->delay(now()->addSeconds(5));
}
}
public function failed()