Merge remote-tracking branch 'origin/develop'
This commit is contained in:
commit
c8835bf5db
5 changed files with 54 additions and 13 deletions
|
@ -25,6 +25,7 @@ use Illuminate\Support\Facades\Artisan;
|
|||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Crypt;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
|
@ -106,17 +107,7 @@ class SettingsController extends Controller
|
|||
$start_settings['owner_is_admin'] = false;
|
||||
}
|
||||
|
||||
if ((is_writable(storage_path()))
|
||||
&& (is_writable(storage_path().'/framework'))
|
||||
&& (is_writable(storage_path().'/framework/cache'))
|
||||
&& (is_writable(storage_path().'/framework/sessions'))
|
||||
&& (is_writable(storage_path().'/framework/views'))
|
||||
&& (is_writable(storage_path().'/logs'))
|
||||
) {
|
||||
$start_settings['writable'] = true;
|
||||
} else {
|
||||
$start_settings['writable'] = false;
|
||||
}
|
||||
$start_settings['writable'] = $this->storagePathIsWritable();
|
||||
|
||||
$start_settings['gd'] = extension_loaded('gd');
|
||||
|
||||
|
@ -145,6 +136,19 @@ class SettingsController extends Controller
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the app storage path is writable.
|
||||
*/
|
||||
protected function storagePathIsWritable(): bool
|
||||
{
|
||||
return File::isWritable(storage_path()) &&
|
||||
File::isWritable(storage_path('framework')) &&
|
||||
File::isWritable(storage_path('framework/cache')) &&
|
||||
File::isWritable(storage_path('framework/sessions')) &&
|
||||
File::isWritable(storage_path('framework/views')) &&
|
||||
File::isWritable(storage_path('logs'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the first admin user from Setup.
|
||||
*
|
||||
|
|
|
@ -572,7 +572,6 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo
|
|||
|
||||
if ($format=='firstname.lastname') {
|
||||
$username = str_slug($first_name) . '.' . str_slug($last_name);
|
||||
|
||||
} elseif ($format == 'lastnamefirstinitial') {
|
||||
$username = str_slug($last_name.substr($first_name, 0, 1));
|
||||
} elseif ($format == 'firstintial.lastname') {
|
||||
|
@ -589,7 +588,9 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo
|
|||
$username = str_slug($first_name).str_slug($last_name);
|
||||
} elseif ($format == 'firstnamelastinitial') {
|
||||
$username = str_slug(($first_name.substr($last_name, 0, 1)));
|
||||
}
|
||||
} elseif ($format == 'lastname.firstname') {
|
||||
$username = str_slug($last_name).'.'.str_slug($first_name);
|
||||
}
|
||||
}
|
||||
|
||||
$user['first_name'] = $first_name;
|
||||
|
|
|
@ -134,6 +134,7 @@ return [
|
|||
'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)',
|
||||
'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)',
|
||||
'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)',
|
||||
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
|
||||
'first_name' => 'First Name',
|
||||
'first_name_format' => 'First Name (jane@example.com)',
|
||||
'files' => 'Files',
|
||||
|
|
|
@ -190,6 +190,7 @@ Form::macro('username_format', function ($name = 'username_format', $selected =
|
|||
'lastname_firstinitial' => trans('general.lastname_firstinitial'),
|
||||
'firstnamelastname' => trans('general.firstnamelastname'),
|
||||
'firstnamelastinitial' => trans('general.firstnamelastinitial'),
|
||||
'lastname.firstname' => trans('general.lastnamefirstname'),
|
||||
];
|
||||
|
||||
$select = '<select name="'.$name.'" class="'.$class.'" style="width: 100%" aria-label="'.$name.'">';
|
||||
|
|
|
@ -9,6 +9,7 @@ use Illuminate\Http\Client\Response;
|
|||
use Illuminate\Log\Events\MessageLogged;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
|
@ -267,4 +268,37 @@ class ShowSetUpPageTest extends TestCase
|
|||
|
||||
$this->assertSeeAppUrlMisconfigurationErrorMessage();
|
||||
}
|
||||
|
||||
public function testWillSeeDirectoryPermissionErrorWhenStoragePathIsNotWritable(): void
|
||||
{
|
||||
File::shouldReceive('isWritable')->andReturn(false);
|
||||
|
||||
$this->getSetUpPageResponse()->assertOk();
|
||||
|
||||
$this->assertSeeDirectoryPermissionError();
|
||||
}
|
||||
|
||||
protected function assertSeeDirectoryPermissionError(bool $shouldSee = true): void
|
||||
{
|
||||
$storagePath = storage_path();
|
||||
|
||||
$errorMessage = "Uh-oh. Your <code>{$storagePath}</code> directory (or sub-directories within) are not writable by the web-server. Those directories need to be writable by the web server in order for the app to work.";
|
||||
$successMessage = 'Yippee! Your app storage directory seems writable';
|
||||
|
||||
if ($shouldSee) {
|
||||
self::$latestResponse->assertSee($errorMessage, false)->assertDontSee($successMessage, false);
|
||||
return;
|
||||
}
|
||||
|
||||
self::$latestResponse->assertSee($successMessage, false)->assertDontSee($errorMessage,false);
|
||||
}
|
||||
|
||||
public function testWillNotSeeDirectoryPermissionErrorWhenStoragePathIsWritable(): void
|
||||
{
|
||||
File::shouldReceive('isWritable')->andReturn(true);
|
||||
|
||||
$this->getSetUpPageResponse()->assertOk();
|
||||
|
||||
$this->assertSeeDirectoryPermissionError(false);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue