Service Providers
App Service Provider
The following are customizations from the default app service provider
Default String Length
Set the database varchar data types to be 191 chars by default.
Schema::defaultStringLength(191);
Force SSL
When the environment is not on local force SSL.
if (config('app.env') !== 'local') {
$url->forceScheme('https');
}
Record sent emails
When an email is sent the following events first to save a copy of the email into a database. The sent emails can be seen in the settings menu.
Event::listen(
MessageSending::class,
EmailLogger::class
);
Cache settings
System settings are saved in a settings table to reduce database lookups they are cached, if the cache exists the settings will be read otherwise they are looked up from the database.
If a setting matches a config name they the settings will override the config value.
//if key exists
if (Cache::has('setting_keys')) {
//decode keys to array
$keys = json_decode(Cache::get('setting_keys'), true);
//loop over keys
foreach ($keys as $key) {
//override config setting
config()->set([$key => Cache::get($key)]);
}
} else {
if (!Cache::has('setting_keys') && Schema::hasTable('settings')) { //if cache key does not exist
//get all rows
$settings = Setting::all();
$keys = [];
//loop over rows
foreach ($settings as $setting) {
$key = $setting->key;
$value = $setting->value;
$keys[] = $key;
//remember setting
Cache::forever($key, $value);
//override config setting
config()->set([$key => $value]);
}
if (count($keys) > 0) {
$keys = json_encode($keys);
//create cache key remember forever
Cache::forever('setting_keys', $keys);
}
}
}
Route Service Provider
The one change from a default laravel install is to change HOME constant to /admin
public const HOME = '/admin';