diff --git a/app/Http/Controllers/SetupController.php b/app/Http/Controllers/SetupController.php index d142d98b..6e3d5f27 100644 --- a/app/Http/Controllers/SetupController.php +++ b/app/Http/Controllers/SetupController.php @@ -42,6 +42,22 @@ class SetupController extends Controller 'redis' => 'Redis', ]; + /** + * Array of cache drivers. + * + * @var string[] + */ + protected $mailDrivers = [ + 'smtp' => 'SMTP', + 'mail' => 'Mail', + 'sendmail' => 'Sendmail', + 'mailgun' => 'Mailgun', + 'mandrill' => 'Mandrill', + // 'ses' => 'Amazon SES', this will be available only if aws/aws-sdk-php is installed + 'sparkpost' => 'SparkPost', + 'log' => 'Log (Testing)', + ]; + /** * Array of step1 rules. * @@ -73,6 +89,7 @@ class SetupController extends Controller $this->rulesStep1 = [ 'env.cache_driver' => 'required|in:'.implode(',', array_keys($this->cacheDrivers)), 'env.session_driver' => 'required|in:'.implode(',', array_keys($this->cacheDrivers)), + 'env.mail_driver' => 'required|in:'.implode(',', array_keys($this->mailDrivers)), ]; $this->rulesStep2 = [ @@ -112,6 +129,7 @@ class SetupController extends Controller return View::make('setup') ->withPageTitle(trans('setup.setup')) ->withCacheDrivers($this->cacheDrivers) + ->withMailDrivers($this->mailDrivers) ->withUserLanguage($userLanguage) ->withAppUrl(Request::root()); } @@ -127,6 +145,14 @@ class SetupController extends Controller $v = Validator::make($postData, $this->rulesStep1); + $v->sometimes('env.mail_host', 'required', function ($input) { + return $input->mail_driver === 'smtp'; + }); + + $v->sometimes(['env.mail_address', 'env.mail_username', 'env.mail_password'], 'required', function ($input) { + return $input->mail_driver !== 'log'; + }); + if ($v->passes()) { return Response::json(['status' => 1]); } @@ -224,8 +250,10 @@ class SetupController extends Controller try { (new Dotenv($dir, $file))->load(); + $envValue = env(strtoupper($key)) ?: 'null'; + file_put_contents($path, str_replace( - env(strtoupper($key)), $value, file_get_contents($path) + $envValue, $value, file_get_contents($path) )); } catch (InvalidPathException $e) { // diff --git a/config/services.php b/config/services.php index 77ea1cba..f1a4e4c1 100644 --- a/config/services.php +++ b/config/services.php @@ -28,22 +28,22 @@ return [ ], 'mailgun' => [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), + 'domain' => env('MAIL_USERNAME'), + 'secret' => env('MAIL_PASSWORD'), ], 'mandrill' => [ - 'secret' => env('MANDRILL_SECRET'), + 'secret' => env('MAIL_PASSWORD'), ], 'ses' => [ - 'key' => env('SES_KEY'), - 'secret' => env('SES_SECRET'), + 'key' => env('MAIL_USERNAME'), + 'secret' => env('MAIL_PASSWORD'), 'region' => 'us-east-1', ], 'sparkpost' => [ - 'secret' => env('SPARKPOST_SECRET'), + 'secret' => env('MAIL_PASSWORD'), ], ]; diff --git a/resources/lang/en/forms.php b/resources/lang/en/forms.php index e706de8a..fa09b231 100755 --- a/resources/lang/en/forms.php +++ b/resources/lang/en/forms.php @@ -23,6 +23,11 @@ return [ 'enable_google2fa' => 'Enable Google Two Factor Authentication', 'cache_driver' => 'Cache Driver', 'session_driver' => 'Session Driver', + 'mail_driver' => 'Mail Driver', + 'mail_host' => 'Mail Host', + 'mail_address' => 'Mail From', + 'mail_username' => 'Mail Client User', + 'mail_password' => 'Mail Client Password', ], // Login form fields diff --git a/resources/views/setup.blade.php b/resources/views/setup.blade.php index 37fe7e21..f5ff6ad8 100644 --- a/resources/views/setup.blade.php +++ b/resources/views/setup.blade.php @@ -56,6 +56,46 @@ {{ $errors->first('env.session_driver') }} @endif +
+ + + @if($errors->has('env.mail_driver')) + {{ $errors->first('env.mail_driver') }} + @endif +
+
+ + + @if($errors->has('env.mail_host')) + {{ $errors->first('env.mail_host') }} + @endif +
+
+ + + @if($errors->has('env.mail_address')) + {{ $errors->first('env.mail_address') }} + @endif +
+
+ + + @if($errors->has('env.mail_username')) + {{ $errors->first('env.mail_username') }} + @endif +
+
+ + + @if($errors->has('env.mail_password')) + {{ $errors->first('env.mail_password') }} + @endif +