diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 02e03c51..3cacdde3 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -18,7 +18,9 @@ use App\Services\StripeService; use App\Models\Share; use App\Models\User; use App\Models\UserSettings; +use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\Routing\ResponseFactory; +use Illuminate\Http\Response; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Password; @@ -75,18 +77,18 @@ class UserController extends Controller * Get user subscription details * * @param $id - * @return UserSubscription + * @return UserSubscription|Application|ResponseFactory|Response */ public function subscription($id) { $user = User::find($id); if (! $user->stripeId() || ! $user->subscription('main')) { - return response('User doesn\'t have any subscription.', 404); + return response("User doesn't have any subscription.", 404); } return new UserSubscription( - User::find($id) + $user ); } @@ -146,9 +148,9 @@ class UserController extends Controller * Send user password reset link * * @param $id - * @return ResponseFactory|\Illuminate\Http\Response + * @return ResponseFactory|Response */ - public function send_password_reset_email($id) + public function reset_password($id) { $user = User::findOrFail($id); @@ -158,7 +160,8 @@ class UserController extends Controller } // Get password token - $token = Password::getRepository()->create($user); + $token = Password::getRepository() + ->create($user); // Send user email $user->sendPasswordResetNotification($token); @@ -202,7 +205,7 @@ class UserController extends Controller * * @param DeleteUserRequest $request * @param $id - * @return ResponseFactory|\Illuminate\Http\Response + * @return ResponseFactory|Response * @throws \Exception */ public function delete_user(DeleteUserRequest $request, $id) diff --git a/resources/js/views/Admin/Users/UserTabs/UserPassword.vue b/resources/js/views/Admin/Users/UserTabs/UserPassword.vue index acb88bf2..7d2c470e 100644 --- a/resources/js/views/Admin/Users/UserTabs/UserPassword.vue +++ b/resources/js/views/Admin/Users/UserTabs/UserPassword.vue @@ -52,7 +52,7 @@ this.isSendingRequest = true axios - .post(this.$store.getters.api + '/users/' + this.$route.params.id + '/send-password-email', + .post(this.$store.getters.api + '/users/' + this.$route.params.id + '/reset-password', {} ) .then(() => { diff --git a/routes/admin.php b/routes/admin.php index caad2bb4..bfab163e 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -16,7 +16,7 @@ Route::group(['prefix' => 'dashboard'], function () { // Users Route::group(['prefix' => 'users'], function () { - Route::post('/{id}/send-password-email', [UserController::class, 'send_password_reset_email']); + Route::post('/{id}/reset-password', [UserController::class, 'reset_password']); Route::patch('/{id}/capacity', [UserController::class, 'change_storage_capacity']); Route::get('/{id}/subscription', [UserController::class, 'subscription']); Route::delete('/{id}/delete', [UserController::class, 'delete_user']); diff --git a/tests/Feature/AdminTest.php b/tests/Feature/AdminTest.php index 26b00b52..f995d025 100644 --- a/tests/Feature/AdminTest.php +++ b/tests/Feature/AdminTest.php @@ -5,13 +5,11 @@ namespace Tests\Feature; use App\Models\File; use App\Models\Setting; use App\Models\User; -use Carbon\Carbon; +use App\Notifications\ResetPassword; use DB; use Illuminate\Foundation\Testing\DatabaseMigrations; -use Illuminate\Foundation\Testing\RefreshDatabase; -use Illuminate\Foundation\Testing\WithFaker; +use Notification; use Laravel\Sanctum\Sanctum; -use Stripe\Subscription; use Tests\TestCase; class AdminTest extends TestCase @@ -201,4 +199,25 @@ class AdminTest extends TestCase ] ]); } + + /** + * @test + */ + public function it_send_reset_password_for_user() + { + Notification::fake(); + + $user = User::factory(User::class) + ->create(['role' => 'user']); + + $admin = User::factory(User::class) + ->create(['role' => 'admin']); + + Sanctum::actingAs($admin); + + $this->postJson("/api/admin/users/$user->id/reset-password") + ->assertStatus(204); + + Notification::assertTimesSent(1, ResetPassword::class); + } }