4 Commits

Author SHA1 Message Date
968f7d0691 fix: resolve cargo audit command failure in CI/CD pipelines
Some checks failed
Release / release (push) Failing after 2m13s
2026-05-02 21:10:34 +02:00
6ca42d10e6 fix: resolve unit test failures caused by rate limiting and fix mod.rs router passing
Some checks failed
Release / release (push) Failing after 2m10s
2026-05-02 21:04:31 +02:00
32e7dc5ac1 deploy: bump image tag to v0.1.11
Some checks failed
Release / release (push) Failing after 1m26s
2026-05-02 20:56:22 +02:00
6ca852117d chore: update frontend dependencies to latest stable versions and sync lockfile 2026-05-02 20:56:03 +02:00
7 changed files with 67 additions and 65 deletions

View File

@@ -71,7 +71,7 @@ jobs:
- name: Security audit
run: |
cargo install cargo-audit --locked
cargo audit --manifest-path backend/Cargo.toml
cd backend && cargo audit
- name: Build frontend
run: pnpm --dir frontend build

View File

@@ -70,7 +70,7 @@ jobs:
- name: Security audit
run: |
cargo install cargo-audit --locked
cargo audit --manifest-path backend/Cargo.toml
cd backend && cargo audit
- name: Build frontend
run: pnpm --dir frontend build

View File

@@ -63,22 +63,24 @@ async fn logout(jar: CookieJar) -> CookieJar {
jar.remove(Cookie::from("token"))
}
pub fn router() -> Router<AppState> {
let governor_conf = Arc::new(
GovernorConfigBuilder::default()
.per_second(12) // 1 request every 12 seconds = 5 per minute
.burst_size(5)
.finish()
.unwrap(),
);
pub fn router(test_mode: bool) -> Router<AppState> {
let mut login_route = post(login);
if !test_mode {
let governor_conf = Arc::new(
GovernorConfigBuilder::default()
.per_second(12) // 1 request every 12 seconds = 5 per minute
.burst_size(5)
.finish()
.unwrap(),
);
login_route = login_route.layer(GovernorLayer {
config: governor_conf,
});
}
Router::new()
.route(
"/api/auth/login",
post(login).layer(GovernorLayer {
config: governor_conf,
}),
)
.route("/api/auth/login", login_route)
.route("/api/auth/me", get(me))
.route("/api/auth/logout", post(logout))
}

View File

@@ -17,7 +17,7 @@ mod tutors;
pub fn build(state: AppState, test_mode: bool) -> Router {
let mut router = Router::new()
.merge(auth_routes::router())
.merge(auth_routes::router(test_mode))
.merge(checkin::router())
.merge(courses::router())
.merge(rooms::router())

View File

@@ -3,7 +3,7 @@ httpRoute:
- tutor.puchstein.dev
image:
tag: v0.1.10
tag: v0.1.13
env:
extra: {}

View File

@@ -14,13 +14,13 @@
"devDependencies": {
"@playwright/test": "^1.59.1",
"@types/node": "^22",
"@sveltejs/adapter-static": "^3",
"@sveltejs/kit": "^2",
"@sveltejs/vite-plugin-svelte": "^4",
"@sveltejs/adapter-static": "^3.0.10",
"@sveltejs/kit": "^2.59.0",
"@sveltejs/vite-plugin-svelte": "^7.0.0",
"@typescript/native-preview": "^7.0.0-dev",
"svelte": "5.55.5",
"svelte": "^5.55.5",
"svelte-check": "^4",
"typescript": "^5",
"vite": "^8"
"vite": "^8.0.10"
}
}

View File

@@ -12,32 +12,32 @@ importers:
specifier: ^1.59.1
version: 1.59.1
'@sveltejs/adapter-static':
specifier: latest
version: 3.0.10(@sveltejs/kit@2.58.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5)(vite@8.0.10(@types/node@25.6.0)))(svelte@5.55.5)(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0)))
specifier: ^3.0.10
version: 3.0.10(@sveltejs/kit@2.59.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5)(vite@8.0.10(@types/node@22.19.17)))(svelte@5.55.5)(typescript@5.9.3)(vite@8.0.10(@types/node@22.19.17)))
'@sveltejs/kit':
specifier: latest
version: 2.58.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5)(vite@8.0.10(@types/node@25.6.0)))(svelte@5.55.5)(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0))
specifier: ^2.59.0
version: 2.59.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5)(vite@8.0.10(@types/node@22.19.17)))(svelte@5.55.5)(typescript@5.9.3)(vite@8.0.10(@types/node@22.19.17))
'@sveltejs/vite-plugin-svelte':
specifier: latest
version: 7.0.0(svelte@5.55.5)(vite@8.0.10(@types/node@25.6.0))
specifier: ^7.0.0
version: 7.0.0(svelte@5.55.5)(vite@8.0.10(@types/node@22.19.17))
'@types/node':
specifier: latest
version: 25.6.0
specifier: ^22
version: 22.19.17
'@typescript/native-preview':
specifier: ^7.0.0-dev
version: 7.0.0-dev.20260428.1
svelte:
specifier: 5.55.5
specifier: ^5.55.5
version: 5.55.5
svelte-check:
specifier: latest
version: 4.4.6(picomatch@4.0.4)(svelte@5.55.5)(typescript@6.0.3)
specifier: ^4
version: 4.4.6(picomatch@4.0.4)(svelte@5.55.5)(typescript@5.9.3)
typescript:
specifier: latest
version: 6.0.3
specifier: ^5
version: 5.9.3
vite:
specifier: latest
version: 8.0.10(@types/node@25.6.0)
specifier: ^8.0.10
version: 8.0.10(@types/node@22.19.17)
packages:
@@ -194,8 +194,8 @@ packages:
peerDependencies:
'@sveltejs/kit': ^2.0.0
'@sveltejs/kit@2.58.0':
resolution: {integrity: sha512-kT9GCN8yJTkCK1W+Gi/bvGooWAM7y7WXP+yd+rf6QOIjyoK1ERPrMwSufXJUNu2pMWIqruhFvmz+LbOqsEmKmA==}
'@sveltejs/kit@2.59.0':
resolution: {integrity: sha512-WeJaGKvDf3uVQB4bnDHhM+BXCY34LC1v0HiPqnSpvNkjB54r8DAUP1rpk73s+5zprIirEKtUcVfgh6+fPODjzQ==}
engines: {node: '>=18.13'}
hasBin: true
peerDependencies:
@@ -226,8 +226,8 @@ packages:
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
'@types/node@25.6.0':
resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==}
'@types/node@22.19.17':
resolution: {integrity: sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==}
'@types/trusted-types@2.0.7':
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
@@ -516,13 +516,13 @@ packages:
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
typescript@6.0.3:
resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==}
typescript@5.9.3:
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
engines: {node: '>=14.17'}
hasBin: true
undici-types@7.19.2:
resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==}
undici-types@6.21.0:
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
vite@8.0.10:
resolution: {integrity: sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==}
@@ -687,15 +687,15 @@ snapshots:
dependencies:
acorn: 8.16.0
'@sveltejs/adapter-static@3.0.10(@sveltejs/kit@2.58.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5)(vite@8.0.10(@types/node@25.6.0)))(svelte@5.55.5)(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0)))':
'@sveltejs/adapter-static@3.0.10(@sveltejs/kit@2.59.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5)(vite@8.0.10(@types/node@22.19.17)))(svelte@5.55.5)(typescript@5.9.3)(vite@8.0.10(@types/node@22.19.17)))':
dependencies:
'@sveltejs/kit': 2.58.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5)(vite@8.0.10(@types/node@25.6.0)))(svelte@5.55.5)(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0))
'@sveltejs/kit': 2.59.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5)(vite@8.0.10(@types/node@22.19.17)))(svelte@5.55.5)(typescript@5.9.3)(vite@8.0.10(@types/node@22.19.17))
'@sveltejs/kit@2.58.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5)(vite@8.0.10(@types/node@25.6.0)))(svelte@5.55.5)(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0))':
'@sveltejs/kit@2.59.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5)(vite@8.0.10(@types/node@22.19.17)))(svelte@5.55.5)(typescript@5.9.3)(vite@8.0.10(@types/node@22.19.17))':
dependencies:
'@standard-schema/spec': 1.1.0
'@sveltejs/acorn-typescript': 1.0.9(acorn@8.16.0)
'@sveltejs/vite-plugin-svelte': 7.0.0(svelte@5.55.5)(vite@8.0.10(@types/node@25.6.0))
'@sveltejs/vite-plugin-svelte': 7.0.0(svelte@5.55.5)(vite@8.0.10(@types/node@22.19.17))
'@types/cookie': 0.6.0
acorn: 8.16.0
cookie: 0.6.0
@@ -707,18 +707,18 @@ snapshots:
set-cookie-parser: 3.1.0
sirv: 3.0.2
svelte: 5.55.5
vite: 8.0.10(@types/node@25.6.0)
vite: 8.0.10(@types/node@22.19.17)
optionalDependencies:
typescript: 6.0.3
typescript: 5.9.3
'@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5)(vite@8.0.10(@types/node@25.6.0))':
'@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5)(vite@8.0.10(@types/node@22.19.17))':
dependencies:
deepmerge: 4.3.1
magic-string: 0.30.21
obug: 2.1.1
svelte: 5.55.5
vite: 8.0.10(@types/node@25.6.0)
vitefu: 1.1.3(vite@8.0.10(@types/node@25.6.0))
vite: 8.0.10(@types/node@22.19.17)
vitefu: 1.1.3(vite@8.0.10(@types/node@22.19.17))
'@tybys/wasm-util@0.10.1':
dependencies:
@@ -729,9 +729,9 @@ snapshots:
'@types/estree@1.0.8': {}
'@types/node@25.6.0':
'@types/node@22.19.17':
dependencies:
undici-types: 7.19.2
undici-types: 6.21.0
'@types/trusted-types@2.0.7': {}
@@ -926,7 +926,7 @@ snapshots:
source-map-js@1.2.1: {}
svelte-check@4.4.6(picomatch@4.0.4)(svelte@5.55.5)(typescript@6.0.3):
svelte-check@4.4.6(picomatch@4.0.4)(svelte@5.55.5)(typescript@5.9.3):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
chokidar: 4.0.3
@@ -934,7 +934,7 @@ snapshots:
picocolors: 1.1.1
sade: 1.8.1
svelte: 5.55.5
typescript: 6.0.3
typescript: 5.9.3
transitivePeerDependencies:
- picomatch
@@ -969,11 +969,11 @@ snapshots:
tslib@2.8.1:
optional: true
typescript@6.0.3: {}
typescript@5.9.3: {}
undici-types@7.19.2: {}
undici-types@6.21.0: {}
vite@8.0.10(@types/node@25.6.0):
vite@8.0.10(@types/node@22.19.17):
dependencies:
lightningcss: 1.32.0
picomatch: 4.0.4
@@ -981,11 +981,11 @@ snapshots:
rolldown: 1.0.0-rc.17
tinyglobby: 0.2.16
optionalDependencies:
'@types/node': 25.6.0
'@types/node': 22.19.17
fsevents: 2.3.3
vitefu@1.1.3(vite@8.0.10(@types/node@25.6.0)):
vitefu@1.1.3(vite@8.0.10(@types/node@22.19.17)):
optionalDependencies:
vite: 8.0.10(@types/node@25.6.0)
vite: 8.0.10(@types/node@22.19.17)
zimmerframe@1.1.4: {}