Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions backend/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
id("org.springframework.boot") version "4.0.6"
id("org.springframework.boot") version "4.1.1"
id("io.spring.dependency-management") version "1.1.7"
id("org.owasp.dependencycheck") version "12.2.2"
kotlin("jvm") version "2.3.21"
kotlin("plugin.spring") version "2.3.21"
id("org.sonarqube") version "7.3.0.8198"
id("org.owasp.dependencycheck") version "13.0.0"
kotlin("jvm") version "2.4.10"
kotlin("plugin.spring") version "2.4.10"
id("org.sonarqube") version "7.5.0.8588"
}

group = "hu.bme.sch"
Expand Down Expand Up @@ -54,18 +54,18 @@ dependencies {
implementation("com.github.spullara.mustache.java:compiler:0.9.14")
implementation("com.google.zxing:core:3.5.4")
implementation("com.google.zxing:javase:3.5.4")
implementation("com.itextpdf:itext-core:9.6.0")
implementation("com.squareup.okhttp3:okhttp:5.3.2")
implementation("com.itextpdf:itext-core:9.7.1")
implementation("com.squareup.okhttp3:okhttp:5.5.0")
implementation(platform("io.jsonwebtoken:jjwt-bom:0.13.0"))
runtimeOnly("io.jsonwebtoken:jjwt-impl")
runtimeOnly("io.jsonwebtoken:jjwt-jackson")
implementation("io.jsonwebtoken:jjwt-api")
implementation(platform("io.micrometer:micrometer-bom:1.16.5"))
implementation(platform("io.micrometer:micrometer-bom:1.17.1"))
runtimeOnly("io.micrometer:micrometer-core")
runtimeOnly("io.micrometer:micrometer-observation")
runtimeOnly("io.micrometer:micrometer-registry-prometheus")
implementation("org.commonmark:commonmark-ext-gfm-tables:0.28.0")
implementation("org.commonmark:commonmark:0.28.0")
implementation("org.commonmark:commonmark-ext-gfm-tables:0.30.0")
implementation("org.commonmark:commonmark:0.30.0")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-scripting-common")
implementation("org.jetbrains.kotlin:kotlin-scripting-dependencies")
Expand All @@ -75,7 +75,7 @@ dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:1.11.0")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0")
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:3.0.3")
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:3.1.0")
implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-oauth2-client")
Expand All @@ -85,7 +85,7 @@ dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-webclient")
implementation("org.springframework.session:spring-session-jdbc")
implementation("software.amazon.awssdk:s3:2.44.12")
implementation("software.amazon.awssdk:s3:2.54.13")
runtimeOnly("com.h2database:h2")
runtimeOnly("org.postgresql:postgresql")
testImplementation("org.springframework.boot:spring-boot-starter-test")
Expand All @@ -99,7 +99,7 @@ dependencyCheck {
tasks.withType<KotlinCompile> {
compilerOptions {
freeCompilerArgs.add("-Xjsr305=strict")
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_3)
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_4)
jvmTarget.set(JvmTarget.JVM_25)
}
}
Expand Down
Binary file modified backend/gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion backend/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.1-bin.zip
networkTimeout=10000
retries=0
retryBackOffMs=500
Expand Down
4 changes: 2 additions & 2 deletions backend/gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions backend/gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -27,23 +27,40 @@ class AdmissionComponentController(
auditLogService = auditLogService,
storageService = storageService,
documentationMarkdown = """
A **Beléptetés** (Admission) komponens a rendezvényre való bejutást és a helyszíni jegyellenőrzést kezeli. Lehetővé teszi a hozzáférési szintek finomhangolását csoportok, felhasználók és szerepkörök alapján.

## Beállítások

A **Komponens beállításai** menüpontban konfigurálhatod a beléptetési szabályokat:

- **Beléptetés működése** – szabályozható a belépési naplózás és az űrlapalapú beléptetés (csak elfogadott jelentkezéssel engedjen be).
- **Csoportok hozzáférése** – csoportonként (pl. VIP, Szervezők, Fellépők) definiálható a hozzáférési szint.
- **Felhasználók hozzáférése** – egyedi CMSCH ID alapján adható kiemelt hozzáférés.
- **Szerepkörök hozzáférése** – globális szabályok a felhasználói szerepkörök (pl. STAFF, ADMIN) szerinti beléptetéshez.
- **Tiltólista** – csoportok vagy egyének kizárása a beléptetésből.
- **Jegyek** – BME Jegy integráció és a korábbi belépések számának megjelenítése a beolvasónál.

## Funkciók

- **Hozzáférési szintek** – támogatott szintek: USER, VIP, PERFORMER, ORGANIZER, LEAD_ORGANIZER. A rendszer mindig a felhasználó számára elérhető legmagasabb szintet veszi alapul.
- **Naplózás** – minden sikeres és sikertelen belépési kísérlet rögzíthető az utólagos ellenőrzéshez.
A **Beléptetés** komponens a helyszíni beengedést végzi: a rendező beolvassa a belépő kódját, a rendszer pedig a beállított szabályok alapján dönt. Nyilvános (résztvevői) menüpontja nincs, minden funkció a rendezői menü **Beléptetés** kategóriájában érhető el.

## Beengedés menete

1. A **Jogosultságok** menüpontban állítsd be, kiket engedj be (lásd lent).
2. A beolvasókhoz a **Beléptetés kezelése**, a naplóhoz a **Beléptetés logok megtekintése** jogosultságot add meg a kijelölt rendezőknek.
3. A **Beléptetés** menüpontban nyílik a kamerás beolvasó (mobilon érdemes használni). Az eredmény ablakban a **Név**, a **Belépés** (csoport) és a **JOGKÖR** látszik: KITILTVA, NEM JOGOSULT, BELÉPHET, VIP, RENDEZŐ, FELLÉPŐ, FŐRENDEZŐ.
4. Űrlapos beengedéshez az **Űrlapos beléptetés**, jegyekhez a **Jegyellenőrzés** menüpontot használd.

## Jogosultsági szabályok

A rendszer minden forrásból összegyűjti a jogosultságokat, és a **legmagasabb** elért szintet adja. Ha egyik lista sem tartalmazza a belépőt, a válasz **NEM JOGOSULT** – üres listákkal senki sem jut be.

- **Csoportok hozzáférése** – a **USER / VIP / PERFORMER / ORGANIZER / LEAD_ORGANIZER hozzáférésű csoportok** mezőkben a csoportnevek pontos, vesszővel elválasztott felsorolása.
- **Felhasználók hozzáférése** – ugyanezek a szintek CMSCH ID-k alapján.
- **Szerepek hozzáférése** – a **USER hozzáférés** és az **ORGANIZER hozzáférés** a kiválasztott szerepkörtől felfelé mindenkire vonatkozik.
- **Tiltó lista** – a **Kitiltott csoportok** és a **Kitiltott felhasználók** minden más szabályt felülírnak, az érintett belépő KITILTVA jelzést kap.

## Beállítások (Jogosultságok menüpont)

| Beállítás | Mit tesz |
| --- | --- |
| **Beléptetések mentése** | Minden beolvasás a **Belépés logok** közé és az audit naplóba kerül. Kikapcsolva nem működik az ismételt beolvasás számlálása, és az űrlapos CSV export sem jelöli, ki lépett már be. |
| **Csak az elfogadott űrlapok számítanak** | Űrlapos beléptetésnél csak az elfogadott és nem elutasított beadás enged be. Csak az űrlapok komponenssel együtt működik. |
| **BME Jegyesek beengedése** | BME Jegy utalványkódokat is elfogad (csak bekapcsolt bmejegy komponens mellett). |
| **Belépések számának mutatása** | A **Jegyellenőrzés** beolvasónál kiírja, hányszor olvasták be ugyanazt a kódot; ismétlésnél **NEM ELSŐ!!!** figyelmeztetést ad. |

## Beolvasók és oldalak

- **Beléptetés** – CMSCH profil QR kódot (a beállított előtaggal kezdődik) és BME Jegy utalványkódot ismer fel. A **Jegyek** listát nem használja.
- **Jegyellenőrzés** – a **Jegyek** listából dolgozik. **A jegy megléte önmagában beenged**, a jegy **Belépési jogosultság** mezője csak a kijelzett jogkört adja meg.
- **Űrlapos beléptetés** – csak a felhasználók által létrehozott (nem csoport-tulajdonú) űrlapokat listázza, űrlapok komponens nélkül csak figyelmeztetést mutat. A **Beengedés** művelet az adott űrlap beolvasóját nyitja, a **CSV Export** a beadásokat és a belépéseket adja egy táblában (**Beléptetés kimentése** jogosultság kell hozzá). Az elfogadott beadás önmagában BELÉPHET szintet ad, amit a csoport/felhasználó/szerep szabályok emelhetnek; névtelen beadásnál az űrlap token mezőjének kódja is beolvasható.
- **Jegyek** – egy sor egy jegy, a listában **Tulajdonos**, **Email** és **QR** látszik; szerkesztve adható meg a **Belépési jogosultság**, a **Megjegyzés** és a **Profil QR kód használata** (bekapcsolva a jegy a **QR** mezőben tárolt kóddal, kikapcsolva a belépő profiljához tartozó **Email** címmel azonosítható). Import és export is elérhető.
- **Belépés logok** – a listában a **Felhasználó**, az **Engedélyezve** és a **Frissült** látszik; a sorok szerkeszthetők és törölhetők, de a törlés az ismételt beolvasás számlálóját is módosítja.
"""
)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,53 +31,38 @@ class FooterComponentController(
auditLogService = auditLogService,
storageService = storageService,
documentationMarkdown = """
# Stílus
A **Lábléc** a felhasználói oldalak alján minden oldalon megjelenő sáv. A beállításai a **Stílus** kategória **Lábléc** menüpontjában találhatók, a színei (**Footer színe**, **Footer alsó sáv színe**, **A footerre alkalmazott filter**) viszont a **Stílus beállítások** menüpontban állíthatók, világos és sötét témához külön.

A **Stílus** komponens segítségével testre szabhatod a weboldal megjelenését CSS-ismeretek nélkül.
## Felépítés

## Beállítások
- Bal oldalon a **Footer szöveg**, mellette a szervező logója a linkjeivel és a Kir-Dev logó.
- Felette a támogatói és partneri logósáv, legalul pedig egy fix, nem állítható sáv (Made with ♥ by Kir-Dev / Minden jog fenntartva, az aktuális évszámmal).

A **Komponens beállításai** menüpontban konfigurálhatod a témákat:
## Lábléc

- **Világos téma (Light Mode)** – színek (háttér, szöveg, brand), háttérképek és logók beállítása nappali módhoz.
- **Sötét téma (Dark Mode)** – színek és képek éjszakai módhoz. Szabályozható, hogy a rendszer automatikusan kövesse-e az eszköz beállításait, vagy kényszerítve legyen valamelyik mód.
- **Tipográfia** – az oldalon használt betűtípusok (fontok) és azok forrásának (CDN) megadása.
- **Minimalisztikus lábléc** – elrejti a támogatói és partneri logósávot, valamint a szervező linkjeit (Weboldal, Facebook, Instagram); csak a logók, a **Footer szöveg** és az alsó sáv maradnak.
- **Esemény szervezőjének a logója** – feltölthető kép vagy URL; ha üres, nem jelenik meg kép. **Esemény szervezőjének alt szövege** – ha a kép nem tölt be, ez látszik.
- **Esemény szervezőjének oldala** – a logó melletti Weboldal link. **Facebook url**, **Instagram url** – üresen hagyva az adott ikon nem jelenik meg.
- **Footer szöveg** – a lábléc szöveges tartalma, Markdown formázással, több sorban is írható.
- **A kir-dev oldala**, **A kir-dev kapcsolat linkje** – a Kir-Dev logó melletti linkek, csak **Fejlesztő** (SUPERUSER) szerepkörrel szerkeszthetők.

## Funkciók
## Támogatók

- **Brand-szín** – egyetlen szín megadásával az egész oldal arculatát a rendezvényhez igazíthatod (gombok, linkek, kiemelések).
- **Reszponzív hátterek** – külön háttérképet állíthatsz be asztali és mobil nézethez.
- **Sponsorok láthatóak** – enélkül a támogatói blokk egyáltalán nem jelenik meg.
- **Szponzorok fejléc** – a blokk fölé kerülő cím (alapértéke: Támogatóink).
- **Sponsor logók**, **Sponsor alt üzenetek**, **Sponsor weblapok** – vesszővel elválasztott listák, amelyek pozíció szerint párosulnak: az első logóhoz az első alt szöveg és az első weblap tartozik. Ha egy weblap üres, az adott logó nem lesz kattintható.

# Manifest
## Partnerek

A **Manifest** komponens a webalkalmazás (PWA - Progressive Web App) telepítési tulajdonságait szabályozza. Ez határozza meg, hogyan jelenik meg az oldal, ha a felhasználó hozzáadja a kezdőképernyőjéhez.
- **BME VIK logó**, **BME logó**, **Schönherz logó**, **schdesign logó** – beépített logók, világos és sötét témához külön változatban.
- **Szponzorok fejléc** – a partneri blokk címe (a felirat tévesen ugyanaz, mint a támogatóknál, alapértéke: Partnereink), továbbá **Partner logók**, **Partner alt üzenetek**, **Partner weblapok** – a támogatókéhoz hasonló vesszős listák.
- A partneri blokk akkor jelenik meg, ha bármelyik beépített logó be van kapcsolva, vagy a **Partner logók** mező nem üres.

## Beállítások
## Figyelmeztetések

A **Komponens beállításai** menüpontban konfigurálhatod a manifest fájlt:

- **A manifest.json tartalma** – az alkalmazás neve, rövid neve, leírása, színei és megjelenítési módja (pl. `standalone`, `browser`).
- **Ikonok** – a különböző eszközökhöz és felbontásokhoz szükséges ikonok feltöltése.

## Funkciók

- **PWA támogatás** – a helyesen beállított manifest lehetővé teszi, hogy az oldal alkalmazásként viselkedjen (ikon a főképernyőn, nincs böngésző keret).

# Lábléc

A **Lábléc** (Footer) komponens az oldal alján megjelenő információkat kezeli.

## Beállítások

A **Komponens beállításai** menüpontban konfigurálhatod a láblécet:

- **Lábléc** – alapvető adatok: szervező logója, linkje, közösségi média elérhetőségek és a copyright szöveg.
- **Támogatók** – a rendezvény szponzorainak logói és weboldalai.
- **Partnerek** – együttműködő partnerek (pl. BME, VIK, SCH) logóinak megjelenítése.

## Funkciók

- **Minimalisztikus lábléc** – ha be van kapcsolva, a lábléc kevesebb helyet foglal, és csak a legszükségesebb információkat mutatja.
- **Dinamikus partnerek** – a szponzorok és partnerek listája vesszővel elválasztott URL-ek megadásával egyszerűen bővíthető.
- A **Sponsor logók** és **Partner logók** alapértéke `url1,url2`: írd felül valódi URL-ekkel vagy töröld, különben törött képek jelennek meg.
- A három lista mindig ugyanannyi és ugyanolyan sorrendű elemet tartalmazzon, különben elcsúsznak az alt szövegek és a linkek.
- A támogatói és partneri sáv a **Minimalisztikus lábléc** bekapcsolása esetén nem jelenik meg, hiába állítod be a többi beállítást.
- A Kir-Dev logó és linkjei az admin felületről nem kapcsolhatók ki, csak a frontend `VITE_HIDE_KIR_DEV_IN_FOOTER` beállításával.
"""
)
Loading
Loading