mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-31 16:34:35 -04:00
Disconnect OAuth Mailer
This commit is contained in:
parent
6f579ba321
commit
ec597d7b2e
@ -11,30 +11,31 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers;
|
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\UserWasCreated;
|
||||||
use App\Events\User\UserWasDeleted;
|
use App\Events\User\UserWasDeleted;
|
||||||
use App\Events\User\UserWasUpdated;
|
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\Jobs\User\UserEmailChanged;
|
||||||
use App\Models\CompanyUser;
|
|
||||||
use App\Models\User;
|
|
||||||
use App\Repositories\UserRepository;
|
use App\Repositories\UserRepository;
|
||||||
use App\Transformers\UserTransformer;
|
use App\Transformers\UserTransformer;
|
||||||
use App\Utils\Ninja;
|
use App\Jobs\Company\CreateCompanyToken;
|
||||||
use App\Utils\Traits\MakesHash;
|
use App\Http\Requests\User\BulkUserRequest;
|
||||||
use Illuminate\Http\Response;
|
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.
|
* Class UserController.
|
||||||
@ -724,4 +725,15 @@ class UserController extends BaseController
|
|||||||
|
|
||||||
return response()->json(['message' => ctrans('texts.confirmation_resent')], 200);
|
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',
|
'accepted_terms_version',
|
||||||
'oauth_user_id',
|
'oauth_user_id',
|
||||||
'oauth_provider_id',
|
'oauth_provider_id',
|
||||||
'oauth_user_token',
|
|
||||||
'oauth_user_refresh_token',
|
|
||||||
'custom_value1',
|
'custom_value1',
|
||||||
'custom_value2',
|
'custom_value2',
|
||||||
'custom_value3',
|
'custom_value3',
|
||||||
'custom_value4',
|
'custom_value4',
|
||||||
'is_deleted',
|
'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/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}/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::post('/user/{user}/reconfirm', [UserController::class, 'reconfirm']);
|
||||||
|
|
||||||
Route::resource('webhooks', WebhookController::class);
|
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()
|
public function testUserFiltersWith()
|
||||||
{
|
{
|
||||||
$response = $this->withHeaders([
|
$response = $this->withHeaders([
|
||||||
|
Loading…
x
Reference in New Issue
Block a user