mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-24 02:14:21 -04:00
Add Smtp check route
This commit is contained in:
parent
726ba91368
commit
998dd1c16c
@ -169,13 +169,16 @@ class ConnectedAccountController extends BaseController
|
||||
'email_verified_at' => now(),
|
||||
];
|
||||
|
||||
auth()->user()->update($connected_account);
|
||||
auth()->user()->email_verified_at = now();
|
||||
auth()->user()->save();
|
||||
/** @var \App\Models\User $logged_in_user */
|
||||
$logged_in_user = auth()->user();
|
||||
|
||||
$this->setLoginCache(auth()->user());
|
||||
$logged_in_user->update($connected_account);
|
||||
$logged_in_user->email_verified_at = now();
|
||||
$logged_in_user->save();
|
||||
|
||||
return $this->itemResponse(auth()->user());
|
||||
$this->setLoginCache($logged_in_user);
|
||||
|
||||
return $this->itemResponse($logged_in_user);
|
||||
}
|
||||
|
||||
return response()
|
||||
@ -214,20 +217,22 @@ class ConnectedAccountController extends BaseController
|
||||
// 'email_verified_at' =>now(),
|
||||
];
|
||||
|
||||
if (auth()->user()->email != $google->harvestEmail($user)) {
|
||||
/** @var \App\Models\User $logged_in_user */
|
||||
$logged_in_user = auth()->user();
|
||||
|
||||
if ($logged_in_user->email != $google->harvestEmail($user)) {
|
||||
return response()->json(['message' => 'Primary Email differs to OAuth email. Emails must match.'], 400);
|
||||
}
|
||||
|
||||
auth()->user()->update($connected_account);
|
||||
auth()->user()->email_verified_at = now();
|
||||
auth()->user()->oauth_user_token = $token;
|
||||
auth()->user()->oauth_user_refresh_token = $refresh_token;
|
||||
$logged_in_user->update($connected_account);
|
||||
$logged_in_user->email_verified_at = now();
|
||||
$logged_in_user->oauth_user_token = $token;
|
||||
$logged_in_user->oauth_user_refresh_token = $refresh_token;
|
||||
$logged_in_user->save();
|
||||
|
||||
auth()->user()->save();
|
||||
$this->activateGmail($logged_in_user);
|
||||
|
||||
$this->activateGmail(auth()->user());
|
||||
|
||||
return $this->itemResponse(auth()->user());
|
||||
return $this->itemResponse($logged_in_user);
|
||||
}
|
||||
|
||||
return response()
|
||||
|
63
app/Http/Controllers/SmtpController.php
Normal file
63
app/Http/Controllers/SmtpController.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Mail\TestMailServer;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
|
||||
class SmtpController extends BaseController
|
||||
{
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function check(Request $request)
|
||||
{
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
$company = $user->company();
|
||||
|
||||
|
||||
|
||||
config([
|
||||
'mail.mailers.smtp' => [
|
||||
'transport' => 'smtp',
|
||||
'host' => $request->input('smtp_host', $company->smtp_host),
|
||||
'port' => $request->input('smtp_port', $company->smtp_port),
|
||||
'username' => $request->input('smtp_username', $company->smtp_username),
|
||||
'password' => $request->input('smtp_password', $company->smtp_password),
|
||||
'encryption' => $request->input('smtp_encryption', $company->smtp_encryption ?? 'tls'),
|
||||
'local_domain' => $request->input('smtp_local_domain', strlen($company->smtp_local_domain) > 2 ? $company->smtp_local_domain : null),
|
||||
'verify_peer' => $request->input('verify_peer', $company->smtp_verify_peer ?? true),
|
||||
'timeout' => 5,
|
||||
],
|
||||
]);
|
||||
|
||||
(new \Illuminate\Mail\MailServiceProvider(app()))->register();
|
||||
|
||||
try {
|
||||
Mail::to($user->email, $user->present()->name())->send(new TestMailServer('Email Server Works!', strlen($company->settings->custom_sending_email) > 1 ? $company->settings->custom_sending_email : $user->email));
|
||||
} catch (\Exception $e) {
|
||||
app('mail.manager')->forgetMailers();
|
||||
return response()->json(['message' => $e->getMessage()], 400);
|
||||
}
|
||||
|
||||
app('mail.manager')->forgetMailers();
|
||||
|
||||
return response()->json(['message' => 'Ok'], 200);
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -60,8 +60,8 @@ class UpdateCompanyRequest extends Request
|
||||
|
||||
$rules['smtp_host'] = 'sometimes|string';
|
||||
$rules['smtp_port'] = 'sometimes|string';
|
||||
$rules['smtp_encryption'] = 'sometimes|string';
|
||||
$rules['smtp_local_domain'] = 'sometimes|string';
|
||||
$rules['smtp_encryption'] = 'sometimes|string|nullable';
|
||||
$rules['smtp_local_domain'] = 'sometimes|string|nullable';
|
||||
// $rules['smtp_verify_peer'] = 'sometimes|string';
|
||||
|
||||
|
||||
|
@ -112,13 +112,13 @@ use Laracasts\Presenter\PresentableTrait;
|
||||
* @property int $notify_vendor_when_paid
|
||||
* @property int $invoice_task_hours
|
||||
* @property int $deleted_at
|
||||
* @property string smtp_username
|
||||
* @property string smtp_password
|
||||
* @property string smtp_host
|
||||
* @property string smtp_port
|
||||
* @property string smtp_encryption
|
||||
* @property string smtp_local_domain
|
||||
* @property boolean smtp_verify_peer
|
||||
* @property string $smtp_username
|
||||
* @property string $smtp_password
|
||||
* @property string $smtp_host
|
||||
* @property string $smtp_port
|
||||
* @property string $smtp_encryption
|
||||
* @property string $smtp_local_domain
|
||||
* @property boolean $smtp_verify_peer
|
||||
* @property-read \App\Models\Account $account
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
|
||||
* @property-read int|null $activities_count
|
||||
|
163
routes/api.php
163
routes/api.php
@ -10,113 +10,114 @@
|
||||
| is assigned the "api" middleware group. Enjoy building your API!
|
||||
|
|
||||
*/
|
||||
use App\Http\Controllers\AccountController;
|
||||
use App\Http\Controllers\ActivityController;
|
||||
use App\Http\Controllers\Auth\ForgotPasswordController;
|
||||
use App\Http\Controllers\Auth\LoginController;
|
||||
use App\Http\Controllers\Auth\PasswordTimeoutController;
|
||||
use App\Http\Controllers\Bank\NordigenController;
|
||||
use App\Http\Controllers\Bank\YodleeController;
|
||||
use App\Http\Controllers\BankIntegrationController;
|
||||
use App\Http\Controllers\BankTransactionController;
|
||||
use App\Http\Controllers\BankTransactionRuleController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use App\Http\Controllers\BaseController;
|
||||
use App\Http\Controllers\PingController;
|
||||
use App\Http\Controllers\SmtpController;
|
||||
use App\Http\Controllers\TaskController;
|
||||
use App\Http\Controllers\UserController;
|
||||
use App\Http\Controllers\ChartController;
|
||||
use App\Http\Controllers\EmailController;
|
||||
use App\Http\Controllers\QuoteController;
|
||||
use App\Http\Controllers\TokenController;
|
||||
use App\Http\Controllers\ClientController;
|
||||
use App\Http\Controllers\ClientGatewayTokenController;
|
||||
use App\Http\Controllers\ClientStatementController;
|
||||
use App\Http\Controllers\CompanyController;
|
||||
use App\Http\Controllers\CompanyGatewayController;
|
||||
use App\Http\Controllers\CompanyLedgerController;
|
||||
use App\Http\Controllers\CompanyUserController;
|
||||
use App\Http\Controllers\ConnectedAccountController;
|
||||
use App\Http\Controllers\CreditController;
|
||||
use App\Http\Controllers\DesignController;
|
||||
use App\Http\Controllers\DocumentController;
|
||||
use App\Http\Controllers\EmailController;
|
||||
use App\Http\Controllers\EmailHistoryController;
|
||||
use App\Http\Controllers\ExpenseCategoryController;
|
||||
use App\Http\Controllers\ExpenseController;
|
||||
use App\Http\Controllers\ExportController;
|
||||
use App\Http\Controllers\FilterController;
|
||||
use App\Http\Controllers\GroupSettingController;
|
||||
use App\Http\Controllers\HostedMigrationController;
|
||||
use App\Http\Controllers\ImportController;
|
||||
use App\Http\Controllers\ImportJsonController;
|
||||
use App\Http\Controllers\InAppPurchase\AppleController;
|
||||
use App\Http\Controllers\LogoutController;
|
||||
use App\Http\Controllers\SearchController;
|
||||
use App\Http\Controllers\StaticController;
|
||||
use App\Http\Controllers\StripeController;
|
||||
use App\Http\Controllers\TwilioController;
|
||||
use App\Http\Controllers\VendorController;
|
||||
use App\Http\Controllers\AccountController;
|
||||
use App\Http\Controllers\CompanyController;
|
||||
use App\Http\Controllers\ExpenseController;
|
||||
use App\Http\Controllers\InvoiceController;
|
||||
use App\Http\Controllers\LicenseController;
|
||||
use App\Http\Controllers\LogoutController;
|
||||
use App\Http\Controllers\MailgunWebhookController;
|
||||
use App\Http\Controllers\MigrationController;
|
||||
use App\Http\Controllers\OneTimeTokenController;
|
||||
use App\Http\Controllers\PaymentController;
|
||||
use App\Http\Controllers\PaymentNotificationWebhookController;
|
||||
use App\Http\Controllers\PaymentTermController;
|
||||
use App\Http\Controllers\PaymentWebhookController;
|
||||
use App\Http\Controllers\PingController;
|
||||
use App\Http\Controllers\PostMarkController;
|
||||
use App\Http\Controllers\PreviewController;
|
||||
use App\Http\Controllers\PreviewPurchaseOrderController;
|
||||
use App\Http\Controllers\ProductController;
|
||||
use App\Http\Controllers\ProjectController;
|
||||
use App\Http\Controllers\ProtectedDownloadController;
|
||||
use App\Http\Controllers\TaxRateController;
|
||||
use App\Http\Controllers\WebCronController;
|
||||
use App\Http\Controllers\WebhookController;
|
||||
use App\Http\Controllers\ActivityController;
|
||||
use App\Http\Controllers\DocumentController;
|
||||
use App\Http\Controllers\PostMarkController;
|
||||
use App\Http\Controllers\TemplateController;
|
||||
use App\Http\Controllers\MigrationController;
|
||||
use App\Http\Controllers\SchedulerController;
|
||||
use App\Http\Controllers\SubdomainController;
|
||||
use App\Http\Controllers\SystemLogController;
|
||||
use App\Http\Controllers\TwoFactorController;
|
||||
use App\Http\Controllers\Auth\LoginController;
|
||||
use App\Http\Controllers\ImportJsonController;
|
||||
use App\Http\Controllers\SelfUpdateController;
|
||||
use App\Http\Controllers\TaskStatusController;
|
||||
use App\Http\Controllers\Bank\YodleeController;
|
||||
use App\Http\Controllers\CompanyUserController;
|
||||
use App\Http\Controllers\PaymentTermController;
|
||||
use App\PaymentDrivers\PayPalPPCPPaymentDriver;
|
||||
use App\Http\Controllers\EmailHistoryController;
|
||||
use App\Http\Controllers\GroupSettingController;
|
||||
use App\Http\Controllers\OneTimeTokenController;
|
||||
use App\Http\Controllers\SubscriptionController;
|
||||
use App\Http\Controllers\Bank\NordigenController;
|
||||
use App\Http\Controllers\CompanyLedgerController;
|
||||
use App\Http\Controllers\PurchaseOrderController;
|
||||
use App\Http\Controllers\QuoteController;
|
||||
use App\Http\Controllers\TaskSchedulerController;
|
||||
use App\Http\Controllers\CompanyGatewayController;
|
||||
use App\Http\Controllers\MailgunWebhookController;
|
||||
use App\Http\Controllers\PaymentWebhookController;
|
||||
use App\Http\Controllers\RecurringQuoteController;
|
||||
use App\Http\Controllers\BankIntegrationController;
|
||||
use App\Http\Controllers\BankTransactionController;
|
||||
use App\Http\Controllers\ClientStatementController;
|
||||
use App\Http\Controllers\ExpenseCategoryController;
|
||||
use App\Http\Controllers\HostedMigrationController;
|
||||
use App\Http\Controllers\TemplatePreviewController;
|
||||
use App\Http\Controllers\ConnectedAccountController;
|
||||
use App\Http\Controllers\RecurringExpenseController;
|
||||
use App\Http\Controllers\RecurringInvoiceController;
|
||||
use App\Http\Controllers\RecurringQuoteController;
|
||||
use App\Http\Controllers\Reports\ActivityReportController;
|
||||
use App\Http\Controllers\Reports\ARDetailReportController;
|
||||
use App\Http\Controllers\Reports\ARSummaryReportController;
|
||||
use App\Http\Controllers\Reports\ClientBalanceReportController;
|
||||
use App\Http\Controllers\Reports\ClientContactReportController;
|
||||
use App\Http\Controllers\ProtectedDownloadController;
|
||||
use App\Http\Controllers\ClientGatewayTokenController;
|
||||
use App\Http\Controllers\Reports\TaskReportController;
|
||||
use App\Http\Controllers\Auth\ForgotPasswordController;
|
||||
use App\Http\Controllers\BankTransactionRuleController;
|
||||
use App\Http\Controllers\InAppPurchase\AppleController;
|
||||
use App\Http\Controllers\Reports\QuoteReportController;
|
||||
use App\Http\Controllers\Auth\PasswordTimeoutController;
|
||||
use App\Http\Controllers\PreviewPurchaseOrderController;
|
||||
use App\Http\Controllers\Reports\ClientReportController;
|
||||
use App\Http\Controllers\Reports\ClientSalesReportController;
|
||||
use App\Http\Controllers\Reports\CreditReportController;
|
||||
use App\Http\Controllers\Reports\DocumentReportController;
|
||||
use App\Http\Controllers\Reports\ReportExportController;
|
||||
use App\Http\Controllers\Reports\VendorReportController;
|
||||
use App\Http\Controllers\Reports\ExpenseReportController;
|
||||
use App\Http\Controllers\Reports\InvoiceItemReportController;
|
||||
use App\Http\Controllers\Reports\InvoiceReportController;
|
||||
use App\Http\Controllers\Reports\PaymentReportController;
|
||||
use App\Http\Controllers\Reports\ProductReportController;
|
||||
use App\Http\Controllers\Reports\ProductSalesReportController;
|
||||
use App\Http\Controllers\Reports\ProfitAndLossController;
|
||||
use App\Http\Controllers\Reports\PurchaseOrderItemReportController;
|
||||
use App\Http\Controllers\Reports\PurchaseOrderReportController;
|
||||
use App\Http\Controllers\Reports\QuoteItemReportController;
|
||||
use App\Http\Controllers\Reports\QuoteReportController;
|
||||
use App\Http\Controllers\Reports\RecurringInvoiceReportController;
|
||||
use App\Http\Controllers\Reports\ReportExportController;
|
||||
use App\Http\Controllers\Reports\ReportPreviewController;
|
||||
use App\Http\Controllers\Reports\TaskReportController;
|
||||
use App\Http\Controllers\Reports\TaxSummaryReportController;
|
||||
use App\Http\Controllers\Reports\ActivityReportController;
|
||||
use App\Http\Controllers\Reports\ARDetailReportController;
|
||||
use App\Http\Controllers\Reports\DocumentReportController;
|
||||
use App\Http\Controllers\Reports\ARSummaryReportController;
|
||||
use App\Http\Controllers\Reports\QuoteItemReportController;
|
||||
use App\Http\Controllers\Reports\UserSalesReportController;
|
||||
use App\Http\Controllers\Reports\VendorReportController;
|
||||
use App\Http\Controllers\SchedulerController;
|
||||
use App\Http\Controllers\SearchController;
|
||||
use App\Http\Controllers\SelfUpdateController;
|
||||
use App\Http\Controllers\StaticController;
|
||||
use App\Http\Controllers\StripeController;
|
||||
use App\Http\Controllers\SubdomainController;
|
||||
use App\Http\Controllers\SubscriptionController;
|
||||
use App\Http\Controllers\Reports\TaxSummaryReportController;
|
||||
use App\Http\Controllers\Support\Messages\SendingController;
|
||||
use App\Http\Controllers\SystemLogController;
|
||||
use App\Http\Controllers\TaskController;
|
||||
use App\Http\Controllers\TaskSchedulerController;
|
||||
use App\Http\Controllers\TaskStatusController;
|
||||
use App\Http\Controllers\TaxRateController;
|
||||
use App\Http\Controllers\TemplateController;
|
||||
use App\Http\Controllers\TemplatePreviewController;
|
||||
use App\Http\Controllers\TokenController;
|
||||
use App\Http\Controllers\TwilioController;
|
||||
use App\Http\Controllers\TwoFactorController;
|
||||
use App\Http\Controllers\UserController;
|
||||
use App\Http\Controllers\VendorController;
|
||||
use App\Http\Controllers\WebCronController;
|
||||
use App\Http\Controllers\WebhookController;
|
||||
use App\PaymentDrivers\PayPalPPCPPaymentDriver;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use App\Http\Controllers\Reports\ClientSalesReportController;
|
||||
use App\Http\Controllers\Reports\InvoiceItemReportController;
|
||||
use App\Http\Controllers\PaymentNotificationWebhookController;
|
||||
use App\Http\Controllers\Reports\ProductSalesReportController;
|
||||
use App\Http\Controllers\Reports\ClientBalanceReportController;
|
||||
use App\Http\Controllers\Reports\ClientContactReportController;
|
||||
use App\Http\Controllers\Reports\PurchaseOrderReportController;
|
||||
use App\Http\Controllers\Reports\RecurringInvoiceReportController;
|
||||
use App\Http\Controllers\Reports\PurchaseOrderItemReportController;
|
||||
|
||||
Route::group(['middleware' => ['throttle:api', 'api_secret_check']], function () {
|
||||
Route::post('api/v1/signup', [AccountController::class, 'store'])->name('signup.submit');
|
||||
@ -392,6 +393,8 @@ Route::group(['middleware' => ['throttle:api', 'api_db', 'token_auth', 'locale']
|
||||
// Route::post('hooks', [SubscriptionController::class, 'subscribe'])->name('hooks.subscribe');
|
||||
// Route::delete('hooks/{subscription_id}', [SubscriptionController::class, 'unsubscribe'])->name('hooks.unsubscribe');
|
||||
|
||||
Route::post('smtp/check', [SmtpController::class, 'check'])->name('smtp.check')->middleware('throttle:10,1');
|
||||
|
||||
Route::post('stripe/update_payment_methods', [StripeController::class, 'update'])->middleware('password_protected')->name('stripe.update');
|
||||
Route::post('stripe/import_customers', [StripeController::class, 'import'])->middleware('password_protected')->name('stripe.import');
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user