. */ use Illuminate\Support\Str; use App\Account; use App\DigestNonce; use App\ExternalAccount; use Illuminate\Support\Facades\Schema; use League\CommonMark\CommonMarkConverter; use League\CommonMark\Extension\HeadingPermalink\HeadingPermalinkExtension; use League\CommonMark\Extension\TableOfContents\TableOfContentsExtension; function generateNonce(): string { return Str::random(32); } function generateValidNonce(Account $account): string { $nonce = new DigestNonce; $nonce->account_id = $account->id; $nonce->nonce = generateNonce(); $nonce->save(); return $nonce->nonce; } function bchash(string $username, string $domain, string $password, string $algorithm = 'MD5') { $algos = ['MD5' => 'md5', 'SHA-256' => 'sha256']; return hash($algos[$algorithm], $username . ':' . $domain . ':' . $password); } function generatePin() { return mt_rand(1000, 9999); } function percent($value, $max) { if ($max == 0) $max = 1; return round(($value * 100) / $max, 2); } function markdownDocumentationView($view): string { $converter = new CommonMarkConverter([ 'heading_permalink' => [ 'html_class' => 'permalink', 'insert' => 'after', 'title' => 'Permalink', 'id_prefix' => '', 'fragment_prefix' => '', ], 'table_of_contents' => [ 'html_class' => 'table-of-contents float-right', ], ]); $converter->getEnvironment()->addExtension(new HeadingPermalinkExtension); $converter->getEnvironment()->addExtension(new TableOfContentsExtension); return (string) $converter->convert( (string)view($view, [ 'app_name' => config('app.name') ])->render() ); } function getAvailableExternalAccount(): ?ExternalAccount { if (Schema::hasTable('external_accounts')) { return ExternalAccount::where('used', false) ->where('account_id', null) ->first(); } return null; } function publicRegistrationEnabled(): bool { if (config('app.public_registration')) { if (config('app.consume_external_account_on_create')) { return (bool)getAvailableExternalAccount(); } return true; } return false; } function isRegularExpression($string): bool { set_error_handler(function () { }, E_WARNING); $isRegularExpression = preg_match($string, '') !== false; restore_error_handler(); return $isRegularExpression; }