mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-24 02:14:21 -04:00
Disconnect OAuth Mailer
This commit is contained in:
parent
6f579ba321
commit
ec597d7b2e
@ -11,30 +11,31 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\User;
|
||||
use App\Utils\Ninja;
|
||||
use App\Models\CompanyUser;
|
||||
use App\Factory\UserFactory;
|
||||
use App\Filters\UserFilters;
|
||||
use Illuminate\Http\Response;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use App\Events\User\UserWasCreated;
|
||||
use App\Events\User\UserWasDeleted;
|
||||
use App\Events\User\UserWasUpdated;
|
||||
use App\Factory\UserFactory;
|
||||
use App\Filters\UserFilters;
|
||||
use App\Http\Controllers\Traits\VerifiesUserEmail;
|
||||
use App\Http\Requests\User\BulkUserRequest;
|
||||
use App\Http\Requests\User\CreateUserRequest;
|
||||
use App\Http\Requests\User\DestroyUserRequest;
|
||||
use App\Http\Requests\User\DetachCompanyUserRequest;
|
||||
use App\Http\Requests\User\EditUserRequest;
|
||||
use App\Http\Requests\User\ReconfirmUserRequest;
|
||||
use App\Http\Requests\User\ShowUserRequest;
|
||||
use App\Http\Requests\User\StoreUserRequest;
|
||||
use App\Http\Requests\User\UpdateUserRequest;
|
||||
use App\Jobs\Company\CreateCompanyToken;
|
||||
use App\Jobs\User\UserEmailChanged;
|
||||
use App\Models\CompanyUser;
|
||||
use App\Models\User;
|
||||
use App\Repositories\UserRepository;
|
||||
use App\Transformers\UserTransformer;
|
||||
use App\Utils\Ninja;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use Illuminate\Http\Response;
|
||||
use App\Jobs\Company\CreateCompanyToken;
|
||||
use App\Http\Requests\User\BulkUserRequest;
|
||||
use App\Http\Requests\User\EditUserRequest;
|
||||
use App\Http\Requests\User\ShowUserRequest;
|
||||
use App\Http\Requests\User\StoreUserRequest;
|
||||
use App\Http\Requests\User\CreateUserRequest;
|
||||
use App\Http\Requests\User\UpdateUserRequest;
|
||||
use App\Http\Requests\User\DestroyUserRequest;
|
||||
use App\Http\Requests\User\ReconfirmUserRequest;
|
||||
use App\Http\Controllers\Traits\VerifiesUserEmail;
|
||||
use App\Http\Requests\User\DetachCompanyUserRequest;
|
||||
use App\Http\Requests\User\DisconnectUserMailerRequest;
|
||||
|
||||
/**
|
||||
* Class UserController.
|
||||
@ -724,4 +725,15 @@ class UserController extends BaseController
|
||||
|
||||
return response()->json(['message' => ctrans('texts.confirmation_resent')], 200);
|
||||
}
|
||||
|
||||
public function disconnectOauthMailer(DisconnectUserMailerRequest $request, User $user)
|
||||
{
|
||||
|
||||
$user->oauth_user_token = null;
|
||||
$user->oauth_user_refresh_token = null;
|
||||
$user->save();
|
||||
|
||||
return $this->itemResponse($user->fresh());
|
||||
|
||||
}
|
||||
}
|
||||
|
43
app/Http/Requests/User/DisconnectUserMailerRequest.php
Normal file
43
app/Http/Requests/User/DisconnectUserMailerRequest.php
Normal file
@ -0,0 +1,43 @@
|
||||
<?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\Requests\User;
|
||||
|
||||
use App\Http\Requests\Request;
|
||||
|
||||
class DisconnectUserMailerRequest extends Request
|
||||
{
|
||||
private bool $phone_has_changed = false;
|
||||
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->id == $this->user->id || auth()->user()->isAdmin();
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
|
||||
$rules = [
|
||||
];
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -238,14 +238,11 @@ class User extends Authenticatable implements MustVerifyEmail
|
||||
'accepted_terms_version',
|
||||
'oauth_user_id',
|
||||
'oauth_provider_id',
|
||||
'oauth_user_token',
|
||||
'oauth_user_refresh_token',
|
||||
'custom_value1',
|
||||
'custom_value2',
|
||||
'custom_value3',
|
||||
'custom_value4',
|
||||
'is_deleted',
|
||||
// 'google_2fa_secret',
|
||||
];
|
||||
|
||||
/**
|
||||
|
@ -331,6 +331,7 @@ Route::group(['middleware' => ['throttle:api', 'api_db', 'token_auth', 'locale']
|
||||
|
||||
Route::post('users/bulk', [UserController::class, 'bulk'])->name('users.bulk')->middleware('password_protected');
|
||||
Route::post('/users/{user}/invite', [UserController::class, 'invite'])->middleware('password_protected');
|
||||
Route::post('/users/{user}/disconnect_mailer', [UserController::class, 'disconnectOauthMailer']);
|
||||
Route::post('/user/{user}/reconfirm', [UserController::class, 'reconfirm']);
|
||||
|
||||
Route::resource('webhooks', WebhookController::class);
|
||||
|
@ -56,6 +56,29 @@ class UserTest extends TestCase
|
||||
);
|
||||
}
|
||||
|
||||
public function testDisconnectUserOauthMailer()
|
||||
{
|
||||
$user =
|
||||
User::factory()->create([
|
||||
'account_id' => $this->account->id,
|
||||
'email' => $this->faker->safeEmail(),
|
||||
'oauth_user_id' => '123456789',
|
||||
'oauth_provider_id' => '123456789',
|
||||
]);
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->post("/api/v1/users/{$user->hashed_id}/disconnect_mailer");
|
||||
|
||||
$response->assertStatus(200);
|
||||
|
||||
$user->fresh();
|
||||
|
||||
$this->assertNull($user->oauth_user_token);
|
||||
$this->assertNull($user->oauth_user_refresh_token);
|
||||
|
||||
}
|
||||
|
||||
public function testUserFiltersWith()
|
||||
{
|
||||
$response = $this->withHeaders([
|
||||
|
Loading…
x
Reference in New Issue
Block a user