Compare commits

..

41 Commits

Author SHA1 Message Date
Constantin Graf
f3ec660243 Add password check to users.destroy and organizations.destroy 2026-06-17 16:16:54 +02:00
Constantin Graf
37496a7547 Add option to enable email verification locally for testing 2026-06-17 15:20:36 +02:00
Constantin Graf
8c71a43191 Add comments to events about legacy events 2026-06-17 15:20:35 +02:00
Constantin Graf
f4107a9a49 Fixed middlwares after jetstream removal 2026-06-17 15:20:35 +02:00
Gregor Vostrak
4afcb24dc9 add comprehensive 2 factor authentication e2e tests 2026-06-17 15:20:35 +02:00
Gregor Vostrak
f9271664f0 add back destroy other browser sessions endpoint (jetstream migration) 2026-06-17 15:20:35 +02:00
Gregor Vostrak
5dcd8197dc update e2e test setup to use user settings api endpoint 2026-06-17 15:20:35 +02:00
Gregor Vostrak
e8c8edb4d5 change redirects and references to new organization routes 2026-06-17 15:20:35 +02:00
Gregor Vostrak
96ecc5335a add currency to organization update endpoint 2026-06-17 15:20:35 +02:00
Gregor Vostrak
c8024de452 replace hardcoded inertia props with organization delete/update perms 2026-06-17 15:20:35 +02:00
Gregor Vostrak
eef2cdaec5 remove unused inertia organization page props 2026-06-17 15:20:35 +02:00
Gregor Vostrak
ed037d40a1 fix inertia backend role data structure after jetstream migration 2026-06-17 15:20:35 +02:00
Gregor Vostrak
6c0041d249 call api for organization create/update/delete and switch 2026-06-17 15:20:35 +02:00
Constantin Graf
e8f632f330 Fixed current organization after normal registration 2026-06-17 15:20:35 +02:00
Constantin Graf
a865469d57 Added tests 2026-06-17 15:20:35 +02:00
Gregor Vostrak
b18b4ef2ce add switch current organization endpoint 2026-06-17 15:20:35 +02:00
Constantin Graf
cb42daecbf Removed Laravel Jetstream 2026-06-17 15:20:35 +02:00
Gregor Vostrak
42f9efd570 remove jetstream inertia properties; remove unused ApiTokenManager; 2026-06-17 15:20:35 +02:00
Gregor Vostrak
4349b0dfb1 move banners on login and register cards into the cards 2026-06-17 15:20:35 +02:00
Gregor Vostrak
dba214f424 add pending email cancel button 2026-06-17 15:20:35 +02:00
Constantin Graf
acb1a07ca0 Replaces all Jetstream model trait functions and relations 2026-06-17 15:20:35 +02:00
Constantin Graf
1f4a957258 Add reset pending email endpoint to user controller 2026-06-17 15:20:35 +02:00
Gregor Vostrak
10a66fa065 move user delete to api endpoint 2026-06-17 15:20:35 +02:00
Gregor Vostrak
b2a5b7a8c1 use api routes for profile information updates 2026-06-17 15:20:35 +02:00
Gregor Vostrak
161cd258f3 show null billable rate as empty not as 0 to avoid confusion 2026-06-17 15:20:35 +02:00
Gregor Vostrak
d6ed3fb3fc fix e2e selectors to adapt to reka-ui change; 2026-06-17 15:20:35 +02:00
Gregor Vostrak
7b6cdf1d45 add pending email to UserResource and update openapi client 2026-06-17 15:20:35 +02:00
Gregor Vostrak
19e1edca31 update ui package dependencies; update lucide imports 2026-06-17 15:20:35 +02:00
Gregor Vostrak
0335c355cc add user endpoint tests for idempotence email update, unauthenticated
update and invalid email
2026-06-17 15:20:35 +02:00
Gregor Vostrak
d645588aed update npm dependencies 2026-06-17 15:20:35 +02:00
Gregor Vostrak
dc35afdae8 add profile page e2e tests 2026-06-17 15:20:35 +02:00
Gregor Vostrak
12b4633e0d update email address change info to use session based banners 2026-06-17 15:20:35 +02:00
Gregor Vostrak
002c8e66a0 add 1MB photo upload limit 2026-06-17 15:20:34 +02:00
Gregor Vostrak
15fe8beecc add photo delete logic to user update endpoint 2026-06-17 15:20:34 +02:00
Constantin Graf
15b5f4b586 Updated composer dependencies 2026-06-17 15:20:34 +02:00
Constantin Graf
390acf89e1 Add more tests 2026-06-17 15:20:34 +02:00
Constantin Graf
a54d914f13 Add migration to lower case the user emails 2026-06-17 15:20:34 +02:00
Constantin Graf
bde3ec7a75 Migrate permission away from Jetstream; Moved update user to REST API 2026-06-17 15:20:34 +02:00
Gregor Vostrak
8637437808 rephrase logged out user invite accept message to clarify that the
invite was accepted
2026-06-17 15:20:34 +02:00
Gregor Vostrak
0f6e0feeae add banners for invitation accept 2026-06-17 15:20:34 +02:00
Constantin Graf
08eba2d90b Updated invitation flow, Moved jetstream function to REST endpoints; Lower case email 2026-06-17 15:20:34 +02:00
8 changed files with 45 additions and 45 deletions

View File

@@ -46,9 +46,9 @@ jobs:
- name: "Get Previous tag (normal push)"
id: previoustag
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
uses: "WyriHaximus/github-action-get-previous-tag@v2"
uses: "WyriHaximus/github-action-get-previous-tag@v1"
with:
pattern: "v*[0-9].*[0-9].*[0-9]"
prefix: "v"
- name: "Get version"
id: release-version
@@ -124,27 +124,27 @@ jobs:
- name: "Docker meta"
id: "meta"
uses: docker/metadata-action@v6
uses: docker/metadata-action@v5
with:
images: |
${{ env.DOCKER_REPO }}
- name: "Login to solidtime OnPremise Registry"
uses: docker/login-action@v4
uses: docker/login-action@v3
with:
registry: registry.on-premise.solidtime.io
username: ${{ secrets.ONPREMISE_USERNAME }}
password: ${{ secrets.ONPREMISE_TOKEN }}
- name: "Set up QEMU"
uses: docker/setup-qemu-action@v4
uses: docker/setup-qemu-action@v3
- name: "Set up Docker Buildx"
uses: docker/setup-buildx-action@v4
uses: docker/setup-buildx-action@v3
- name: "Build and push by digest"
id: build
uses: docker/build-push-action@v7
uses: docker/build-push-action@v6
with:
context: .
file: docker/prod/Dockerfile
@@ -163,7 +163,7 @@ jobs:
touch "${{ runner.temp }}/digests/${digest#sha256:}"
- name: "Upload digest"
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@v4
with:
name: digests-${{ env.PLATFORM_PAIR }}
path: ${{ runner.temp }}/digests/*
@@ -177,25 +177,25 @@ jobs:
- build
steps:
- name: "Download digests"
uses: actions/download-artifact@v8
uses: actions/download-artifact@v6
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true
- name: "Login to solidtime OnPremise Registry"
uses: docker/login-action@v4
uses: docker/login-action@v3
with:
registry: registry.on-premise.solidtime.io
username: ${{ secrets.ONPREMISE_USERNAME }}
password: ${{ secrets.ONPREMISE_TOKEN }}
- name: "Set up Docker Buildx"
uses: docker/setup-buildx-action@v4
uses: docker/setup-buildx-action@v3
- name: "Docker meta"
id: meta
uses: docker/metadata-action@v6
uses: docker/metadata-action@v5
with:
images: |
${{ env.DOCKER_REPO }}

View File

@@ -33,9 +33,9 @@ jobs:
- name: "Get Previous tag (normal push)"
id: previoustag
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
uses: "WyriHaximus/github-action-get-previous-tag@v2"
uses: "WyriHaximus/github-action-get-previous-tag@v1"
with:
pattern: "v*[0-9].*[0-9].*[0-9]"
prefix: "v"
- name: "Get version"
id: version
@@ -160,7 +160,7 @@ jobs:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
- name: "Login to GitHub Container Registry"
uses: docker/login-action@v4
uses: docker/login-action@v3
with:
registry: rg.fr-par.scw.cloud/solidtime
username: nologin
@@ -168,7 +168,7 @@ jobs:
- name: "Docker meta"
id: "meta"
uses: docker/metadata-action@v6
uses: docker/metadata-action@v5
with:
images: rg.fr-par.scw.cloud/solidtime/solidtime
tags: |
@@ -179,13 +179,13 @@ jobs:
type=sha,format=long
- name: "Set up QEMU"
uses: docker/setup-qemu-action@v4
uses: docker/setup-qemu-action@v3
- name: "Set up Docker Buildx"
uses: docker/setup-buildx-action@v4
uses: docker/setup-buildx-action@v3
- name: "Build and push"
uses: docker/build-push-action@v7
uses: docker/build-push-action@v6
with:
context: .
build-args: |

View File

@@ -47,9 +47,9 @@ jobs:
- name: "Get Previous tag (normal push)"
id: previoustag
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
uses: "WyriHaximus/github-action-get-previous-tag@v2"
uses: "WyriHaximus/github-action-get-previous-tag@v1"
with:
pattern: "v*[0-9].*[0-9].*[0-9]"
prefix: "v"
- name: "Get version"
id: release-version
@@ -109,34 +109,34 @@ jobs:
- name: "Docker meta"
id: "meta"
uses: docker/metadata-action@v6
uses: docker/metadata-action@v5
with:
images: |
${{ env.DOCKERHUB_REPO }}
${{ env.GHCR_REPO }}
- name: "Login to Docker Hub Container Registry"
uses: docker/login-action@v4
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: "Login to GitHub Container Registry"
uses: docker/login-action@v4
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: "Set up QEMU"
uses: docker/setup-qemu-action@v4
uses: docker/setup-qemu-action@v3
- name: "Set up Docker Buildx"
uses: docker/setup-buildx-action@v4
uses: docker/setup-buildx-action@v3
- name: "Build and push by digest"
id: build
uses: docker/build-push-action@v7
uses: docker/build-push-action@v6
with:
context: .
file: docker/prod/Dockerfile
@@ -155,7 +155,7 @@ jobs:
touch "${{ runner.temp }}/digests/${digest#sha256:}"
- name: "Upload digest"
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@v4
with:
name: digests-${{ env.PLATFORM_PAIR }}
path: ${{ runner.temp }}/digests/*
@@ -169,31 +169,31 @@ jobs:
- build
steps:
- name: "Download digests"
uses: actions/download-artifact@v8
uses: actions/download-artifact@v6
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true
- name: "Login to Docker Hub"
uses: docker/login-action@v4
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: "Login to GHCR"
uses: docker/login-action@v4
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: "Set up Docker Buildx"
uses: docker/setup-buildx-action@v4
uses: docker/setup-buildx-action@v3
- name: "Docker meta"
id: meta
uses: docker/metadata-action@v6
uses: docker/metadata-action@v5
with:
images: |
${{ env.DOCKERHUB_REPO }}

View File

@@ -52,7 +52,7 @@ jobs:
run: php artisan scramble:export --path=build/api-docs.json
- name: "Upload API docs to GitHub"
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@v4
with:
name: api-docs.json
path: build/api-docs.json

View File

@@ -13,10 +13,10 @@ jobs:
steps:
- name: "Checkout code"
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: "Use Node.js"
uses: actions/setup-node@v6
uses: actions/setup-node@v4
with:
node-version: '20.x'

View File

@@ -68,7 +68,7 @@ jobs:
run: php artisan test --stop-on-failure --coverage-text --coverage-clover=coverage.xml
- name: "Upload coverage reports to Codecov"
uses: codecov/codecov-action@v7.0.0
uses: codecov/codecov-action@v5.5.1
with:
token: ${{ secrets.CODECOV_TOKEN }}
slug: solidtime-io/solidtime

View File

@@ -86,7 +86,7 @@ jobs:
MAILPIT_BASE_URL: 'http://localhost:8025'
- name: "Upload blob report"
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@v4
if: always()
with:
name: blob-report-${{ matrix.shardIndex }}
@@ -102,7 +102,7 @@ jobs:
uses: actions/checkout@v6
- name: "Setup node"
uses: actions/setup-node@v6
uses: actions/setup-node@v4
with:
node-version: '20.x'
@@ -110,7 +110,7 @@ jobs:
run: npm ci
- name: "Download blob reports"
uses: actions/download-artifact@v8
uses: actions/download-artifact@v4
with:
path: all-blob-reports
pattern: blob-report-*
@@ -120,7 +120,7 @@ jobs:
run: npx playwright merge-reports --reporter html ./all-blob-reports
- name: "Upload merged HTML report"
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@v4
with:
name: playwright-report
path: playwright-report/

View File

@@ -43,17 +43,17 @@ onMounted(async () => {
<template v-else>
<UpdateTeamNameForm :team="team" :permissions="permissions" />
<SectionBorder v-if="permissions.canUpdateTeam" />
<SectionBorder />
<OrganizationBillableRate v-if="permissions.canUpdateTeam" :team="team" />
<SectionBorder />
<SectionBorder v-if="permissions.canUpdateTeam" />
<OrganizationFormatSettings v-if="permissions.canUpdateTeam" :team="team" />
<SectionBorder />
<SectionBorder v-if="permissions.canUpdateTeam" />
<OrganizationTimeEntrySettings v-if="permissions.canUpdateTeam" />
<SectionBorder />
<template v-if="permissions.canDeleteTeam">
<SectionBorder />
<DeleteTeamForm class="mt-10 sm:mt-0" :team="team" />
</template>
</template>