Merge pull request #1886 from CachetHQ/wizard-smtp
Wizard email configuration
This commit is contained in:
@@ -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) {
|
||||
//
|
||||
|
||||
+6
-6
@@ -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'),
|
||||
],
|
||||
|
||||
];
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -56,6 +56,46 @@
|
||||
<span class="text-danger">{{ $errors->first('env.session_driver') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.setup.mail_driver') }}</label>
|
||||
<select name="env[mail_driver]" class="form-control" required>
|
||||
<option disabled>{{ trans('forms.setup.mail_driver') }}</option>
|
||||
@foreach($mail_drivers as $driver => $driverName)
|
||||
<option value="{{ $driver }}" {{ Binput::old('env.mail_driver') == $driver ? "selected" : null }}>{{ $driverName }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@if($errors->has('env.mail_driver'))
|
||||
<span class="text-danger">{{ $errors->first('env.mail_driver') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.setup.mail_host') }} (optional)</label>
|
||||
<input type="text" class="form-control" name="env[mail_host]" value="{{ Binput::old('env.mail_host') }}">
|
||||
@if($errors->has('env.mail_host'))
|
||||
<span class="text-danger">{{ $errors->first('env.mail_host') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.setup.mail_address') }}</label>
|
||||
<input type="text" class="form-control" name="env[mail_address]" value="{{ Binput::old('env.mail_address') }}" placeholder="notifications@alt-three.com">
|
||||
@if($errors->has('env.mail_address'))
|
||||
<span class="text-danger">{{ $errors->first('env.mail_address') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.setup.mail_username') }}</label>
|
||||
<input type="text" class="form-control" name="env[mail_username]" value="{{ Binput::old('env.mail_username') }}">
|
||||
@if($errors->has('env.mail_username'))
|
||||
<span class="text-danger">{{ $errors->first('env.mail_username') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.setup.mail_password') }}</label>
|
||||
<input type="text" class="form-control" name="env[mail_password]" value="{{ Binput::old('env.mail_password') }}" autocomplete="off">
|
||||
@if($errors->has('env.mail_password'))
|
||||
<span class="text-danger">{{ $errors->first('env.mail_password') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
</fieldset>
|
||||
<hr>
|
||||
<div class="form-group text-center">
|
||||
|
||||
Reference in New Issue
Block a user