feat(profile): self-service name/email/password + desktop installers in CI
Self-service profile: any signed-in user edits their OWN fullName/email and changes their OWN password (proving the current one), without any user:* permission. New routes PUT /api/auth/profile + /api/auth/password act only on req.user.sub (cannot touch username/role), CSRF-guarded; SPA screen at /profile reachable from the header username chip. email added to the session view + SessionUser. 7 tests (routes/profile.test.ts); 148 server tests green. Desktop in CI: new .gitea/workflows/build-desktop.yml builds .deb + .AppImage on every push to dev/main and uploads them as unsigned workflow artifacts (per-commit test build). Signed/versioned release stays on release.yml (tag v*). Wiki: local-jwt-auth (self-service routes), desktop-shell-tauri (two-workflow CI split), log entry. Claude-Session: https://claude.ai/code/session_01Xcm6ikLgGoCxxHrxtjkk5V
This commit is contained in:
@@ -60,6 +60,27 @@ export const sq = {
|
||||
reports: "Raportet",
|
||||
recycleBin: "Koshi",
|
||||
logs: "Loget",
|
||||
profile: "Profili",
|
||||
},
|
||||
profile: {
|
||||
title: "Profili im",
|
||||
accountSection: "Llogaria",
|
||||
fullName: "Emri i plotë",
|
||||
fullNamePh: "Emri dhe mbiemri",
|
||||
email: "Email",
|
||||
emailPh: "ti@shembull.com",
|
||||
username: "Përdoruesi",
|
||||
role: "Roli",
|
||||
saveProfile: "Ruaj profilin",
|
||||
profileSaved: "Profili u ruajt.",
|
||||
passwordSection: "Ndrysho fjalëkalimin",
|
||||
currentPassword: "Fjalëkalimi aktual",
|
||||
newPassword: "Fjalëkalimi i ri",
|
||||
confirmPassword: "Konfirmo fjalëkalimin",
|
||||
changePassword: "Ndrysho fjalëkalimin",
|
||||
passwordChanged: "Fjalëkalimi u ndryshua.",
|
||||
passwordsDontMatch: "Fjalëkalimet nuk përputhen.",
|
||||
passwordTooShort: "Fjalëkalimi duhet të jetë të paktën {{min}} karaktere.",
|
||||
},
|
||||
status: {
|
||||
live: "LIVE",
|
||||
|
||||
Reference in New Issue
Block a user