mirror of
https://github.com/tiennm99/coolify.git
synced 2026-04-17 15:20:40 +00:00
Merge branch 'next' into feat/copy-resource-logs-with-sanitization
This commit is contained in:
@@ -73,6 +73,7 @@ const SUPPORTED_OS = [
|
||||
const NEEDS_TO_CONNECT_TO_PREDEFINED_NETWORK = [
|
||||
'pgadmin',
|
||||
'postgresus',
|
||||
'redis-insight',
|
||||
];
|
||||
const NEEDS_TO_DISABLE_GZIP = [
|
||||
'beszel' => ['beszel'],
|
||||
|
||||
@@ -33,6 +33,7 @@ use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Facades\Process;
|
||||
use Illuminate\Support\Facades\RateLimiter;
|
||||
@@ -300,6 +301,24 @@ function generate_application_name(string $git_repository, string $git_branch, ?
|
||||
return Str::kebab("$git_repository:$git_branch-$cuid");
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort branches by priority: main first, master second, then alphabetically.
|
||||
*
|
||||
* @param Collection $branches Collection of branch objects with 'name' key
|
||||
*/
|
||||
function sortBranchesByPriority(Collection $branches): Collection
|
||||
{
|
||||
return $branches->sortBy(function ($branch) {
|
||||
$name = data_get($branch, 'name');
|
||||
|
||||
return match ($name) {
|
||||
'main' => '0_main',
|
||||
'master' => '1_master',
|
||||
default => '2_'.$name,
|
||||
};
|
||||
})->values();
|
||||
}
|
||||
|
||||
function base_ip(): string
|
||||
{
|
||||
if (isDev()) {
|
||||
@@ -3332,3 +3351,57 @@ function formatContainerStatus(string $status): string
|
||||
return str($status)->headline()->value();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if password confirmation should be skipped.
|
||||
* Returns true if:
|
||||
* - Two-step confirmation is globally disabled
|
||||
* - User has no password (OAuth users)
|
||||
*
|
||||
* Used by modal-confirmation.blade.php to determine if password step should be shown.
|
||||
*
|
||||
* @return bool True if password confirmation should be skipped
|
||||
*/
|
||||
function shouldSkipPasswordConfirmation(): bool
|
||||
{
|
||||
// Skip if two-step confirmation is globally disabled
|
||||
if (data_get(InstanceSettings::get(), 'disable_two_step_confirmation')) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Skip if user has no password (OAuth users)
|
||||
if (! Auth::user()?->hasPassword()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify password for two-step confirmation.
|
||||
* Skips verification if:
|
||||
* - Two-step confirmation is globally disabled
|
||||
* - User has no password (OAuth users)
|
||||
*
|
||||
* @param mixed $password The password to verify (may be array if skipped by frontend)
|
||||
* @param \Livewire\Component|null $component Optional Livewire component to add errors to
|
||||
* @return bool True if verification passed (or skipped), false if password is incorrect
|
||||
*/
|
||||
function verifyPasswordConfirmation(mixed $password, ?Livewire\Component $component = null): bool
|
||||
{
|
||||
// Skip if password confirmation should be skipped
|
||||
if (shouldSkipPasswordConfirmation()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Verify the password
|
||||
if (! Hash::check($password, Auth::user()->password)) {
|
||||
if ($component) {
|
||||
$component->addError('password', 'The provided password is incorrect.');
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user