Blame | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace Illuminate\Encryption;use Illuminate\Support\ServiceProvider;use Illuminate\Support\Str;use Laravel\SerializableClosure\SerializableClosure;class EncryptionServiceProvider extends ServiceProvider{/*** Register the service provider.** @return void*/public function register(){$this->registerEncrypter();$this->registerSerializableClosureSecurityKey();}/*** Register the encrypter.** @return void*/protected function registerEncrypter(){$this->app->singleton('encrypter', function ($app) {$config = $app->make('config')->get('app');return new Encrypter($this->parseKey($config), $config['cipher']);});}/*** Configure Serializable Closure signing for security.** @return void*/protected function registerSerializableClosureSecurityKey(){$config = $this->app->make('config')->get('app');if (! class_exists(SerializableClosure::class) || empty($config['key'])) {return;}SerializableClosure::setSecretKey($this->parseKey($config));}/*** Parse the encryption key.** @param array $config* @return string*/protected function parseKey(array $config){if (Str::startsWith($key = $this->key($config), $prefix = 'base64:')) {$key = base64_decode(Str::after($key, $prefix));}return $key;}/*** Extract the encryption key from the given configuration.** @param array $config* @return string** @throws \Illuminate\Encryption\MissingAppKeyException*/protected function key(array $config){return tap($config['key'], function ($key) {if (empty($key)) {throw new MissingAppKeyException;}});}}