From 6a2316c6f4dfdd8128e5460513acc67299382c8e Mon Sep 17 00:00:00 2001 From: tracer Date: Tue, 24 Feb 2026 19:16:55 +0100 Subject: [PATCH] fix storage on CI setup --- ansible/roles/speedBB/tasks/main.yaml | 13 +++++++++++++ app/Http/Controllers/UserController.php | 4 ++++ resources/js/pages/ResetPassword.jsx | 2 +- tests/Feature/UserControllerTest.php | 25 +++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 1 deletion(-) diff --git a/ansible/roles/speedBB/tasks/main.yaml b/ansible/roles/speedBB/tasks/main.yaml index 06ff9e7..ea3e5b0 100644 --- a/ansible/roles/speedBB/tasks/main.yaml +++ b/ansible/roles/speedBB/tasks/main.yaml @@ -27,6 +27,19 @@ state: directory mode: "0775" +- name: Ensure public storage directory exists + file: + path: "{{ prod_base_dir }}/storage/app/public" + state: directory + mode: "0775" + +- name: Ensure public storage symlink exists + file: + src: "{{ prod_base_dir }}/storage/app/public" + dest: "{{ prod_base_dir }}/public/storage" + state: link + force: true + - name: Download and installs all libs and dependencies block: - name: Composer install diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index b1d92d5..3221aa1 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -209,6 +209,10 @@ class UserController extends Controller ->pluck('id') ->all(); $user->roles()->sync($roleIds); + + if (in_array('ROLE_FOUNDER', $roleNames, true) && $user->email_verified_at === null) { + $user->forceFill(['email_verified_at' => now()])->save(); + } } $user->loadMissing('rank'); diff --git a/resources/js/pages/ResetPassword.jsx b/resources/js/pages/ResetPassword.jsx index 9e7ccb8..6a6507f 100644 --- a/resources/js/pages/ResetPassword.jsx +++ b/resources/js/pages/ResetPassword.jsx @@ -38,7 +38,7 @@ export default function ResetPassword() { navigate('/login') } else { await requestPasswordReset(email) - navigate('/login') + navigate('/') } } catch (err) { setError(err.message) diff --git a/tests/Feature/UserControllerTest.php b/tests/Feature/UserControllerTest.php index 8f7b540..8a80ef1 100644 --- a/tests/Feature/UserControllerTest.php +++ b/tests/Feature/UserControllerTest.php @@ -285,3 +285,28 @@ it('updates user name and email as admin', function (): void { expect($target->email)->toBe('new@example.com'); expect($target->email_verified_at)->toBeNull(); }); + +it('marks email verified when assigning founder role', function (): void { + $admin = makeAdmin(); + $founderRole = Role::firstOrCreate(['name' => 'ROLE_FOUNDER'], ['color' => '#111111']); + $target = User::factory()->create([ + 'name' => 'Target', + 'email' => 'target@example.com', + 'email_verified_at' => null, + ]); + + $admin->roles()->syncWithoutDetaching([$founderRole->id]); + + Sanctum::actingAs($admin); + $response = $this->patchJson("/api/users/{$target->id}", [ + 'name' => 'Target', + 'email' => 'target@example.com', + 'rank_id' => null, + 'roles' => ['ROLE_FOUNDER'], + ]); + + $response->assertOk(); + + $target->refresh(); + expect($target->email_verified_at)->not()->toBeNull(); +});