Skip to content
Merged

2.9.0 #446

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
f479fa3
build(deps-dev): bump @types/archiver from 6.0.3 to 7.0.0
dependabot[bot] Feb 1, 2026
71d439a
fix: record activity if applicable instead of throwing
axelrindle Feb 15, 2026
a5aa623
chore: update dependabot labels
axelrindle Feb 20, 2026
69d80df
chore(deps-dev): bump inquirer from 12.4.1 to 13.2.5
dependabot[bot] Feb 20, 2026
2999b15
chore(deps): bump hono from 4.11.1 to 4.12.0
dependabot[bot] Feb 20, 2026
62d5a34
chore(deps): bump typescript-eslint from 8.32.0 to 8.56.0
dependabot[bot] Feb 20, 2026
fd23e1f
implement program edit and delete
silasjak Feb 20, 2026
b02e6e9
ausschreibungen in gliederungen
silasjak Feb 20, 2026
9c15684
fix naming
silasjak Feb 20, 2026
234fdad
Merge pull request #433 from codeanker/feature/issue-426-edit-program…
axelrindle Feb 20, 2026
c927aa7
Merge pull request #434 from codeanker/feature/issue-56-details-auf-s…
axelrindle Feb 20, 2026
38c4fa4
remove static seed
axelrindle Feb 20, 2026
0516361
fixes
silasjak Feb 20, 2026
49736f6
change route import
silasjak Feb 20, 2026
d97e77d
Merge pull request #435 from codeanker/fixes
axelrindle Feb 20, 2026
5b13b83
add missing import
silasjak Feb 20, 2026
8b1e309
Merge pull request #436 from codeanker/add-missing-import
axelrindle Feb 20, 2026
b25c601
changes 2
silasjak Feb 20, 2026
4489faa
Merge pull request #440 from codeanker/changes-2
danielswiatek Feb 20, 2026
6d56a02
Merge pull request #432 from codeanker/dependabot/npm_and_yarn/typesc…
danielswiatek Feb 20, 2026
db33f50
Merge pull request #431 from codeanker/dependabot/npm_and_yarn/hono-4…
danielswiatek Feb 20, 2026
fe9360d
Merge pull request #430 from codeanker/dependabot/npm_and_yarn/inquir…
danielswiatek Feb 20, 2026
97b208e
chore(deps): bump eslint from 9.19.0 to 10.0.0
dependabot[bot] Feb 20, 2026
61929d7
Merge pull request #428 from codeanker/dependabot/npm_and_yarn/eslint…
danielswiatek Feb 20, 2026
72701f8
Merge pull request #387 from codeanker/dependabot/npm_and_yarn/types/…
danielswiatek Feb 20, 2026
e57fabc
Feature: Zugriffsanfragen auf Gliederungen (#419)
axelrindle Feb 22, 2026
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
14 changes: 6 additions & 8 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
- package-ecosystem: 'npm' # See documentation for possible values
directory: '/' # Location of package manifests
- package-ecosystem: npm
directory: /
schedule:
interval: 'daily'
interval: "daily"
labels:
- component:deps
- deps:npm
11 changes: 11 additions & 0 deletions apps/api/email/gliederung-access-request-decision.mjml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{{#> layout }}

<mj-text
font-size="16px"
line-height="1.5"
>
{{#if decision}} Deinem Zugriffsantrag auf die Gliederung {{ gliederung }} wurde zugestimmt. {{else}} Dein
Zugriffsantrag auf die Gliederung {{ gliederung }} wurde abgelehnt. {{/if}}
</mj-text>

{{/layout}}
18 changes: 18 additions & 0 deletions apps/api/email/gliederung-access-request-info.mjml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{{#> layout }}

<mj-text
font-size="16px"
line-height="1.5"
>
{{ name }} hat soeben einen Antrag auf Zugriff auf die Gliederung {{ gliederung }} gestellt. Bitte prüft den Antrag
und bestätigt diesen, damit {{ name }} Zugriff auf die Ausschreibungen eurer Gliederung erhält.
</mj-text>

<mj-text
font-size="16px"
line-height="1.5"
>
Nutzt für die Bestätigung oder Ablehnung des Antrags bitte folgenden Link: {{ confirmLink }}
</mj-text>

{{/layout}}
6 changes: 3 additions & 3 deletions apps/api/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
"dot-prop": "^9.0.0",
"fast-csv": "^5.0.1",
"handlebars": "^4.7.8",
"hono": "^4.10.7",
"hono": "^4.12.0",
"http-errors": "^2.0.1",
"jsonwebtoken": "^9.0.2",
"meilisearch": "^0.37.0",
Expand All @@ -62,7 +62,7 @@
"@codeanker/eslint-config": "workspace:*",
"@codeanker/typescript-config": "workspace:*",
"@inquirer/prompts": "^7.1.0",
"@types/archiver": "^6.0.3",
"@types/archiver": "^7.0.0",
"@types/config": "^3.3.3",
"@types/http-errors": "^2.0.5",
"@types/http-status-codes": "^1.2.0",
Expand All @@ -71,7 +71,7 @@
"@types/node": "catalog:",
"commander": "^13.0.0",
"eslint": "catalog:",
"inquirer": "^12.3.0",
"inquirer": "^13.2.5",
"prisma": "^5.19.1",
"tsx": "^4.2.0",
"typescript": "catalog:"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "Gliederung" ADD COLUMN "email" TEXT;
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/*
Warnings:

- Added the required column `createdAt` to the `GliederungToAccount` table without a default value. This is not possible if the table is not empty.

*/
-- AlterTable
ALTER TABLE "GliederungToAccount" ADD COLUMN "confirmByGliederungToken" TEXT,
ADD COLUMN "confirmedAt" TIMESTAMP(3),
ADD COLUMN "confirmedByGliederung" BOOLEAN NOT NULL DEFAULT false,
ADD COLUMN "createdAt" TIMESTAMP(3) NOT NULL;
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/*
Warnings:

- You are about to drop the column `email` on the `Gliederung` table. All the data in the column will be lost.

*/
-- AlterTable
ALTER TABLE "Gliederung" DROP COLUMN "email",
ADD COLUMN "domain" TEXT;
1 change: 1 addition & 0 deletions apps/api/prisma/schema/Gliederung.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ model Gliederung {
id String @id @default(uuid(7))
name String
edv String @unique
domain String?
unterveranstaltungen Unterveranstaltung[]
personen Person[]
GliederungToAccount GliederungToAccount[]
Expand Down
5 changes: 5 additions & 0 deletions apps/api/prisma/schema/GliederungToAccount.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,16 @@ enum GliederungAccountRole {

model GliederungToAccount {
id Int @id @default(autoincrement())
createdAt DateTime
gliederungId String
gliederung Gliederung @relation(fields: [gliederungId], references: [id], onDelete: Cascade)
accountId String
account Account @relation(fields: [accountId], references: [id], onDelete: Cascade)
role GliederungAccountRole

confirmedAt DateTime?
confirmByGliederungToken String?
confirmedByGliederung Boolean @default(false)

@@unique([gliederungId, accountId])
}
15 changes: 9 additions & 6 deletions apps/api/prisma/seeders/anmeldungen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ import type { Seeder } from './index.js'

const ENTRY_COUNT = 100

faker.seed(123)

async function create(prisma: PrismaClient, unterveranstaltung: Unterveranstaltung): Promise<void> {
const address = await prisma.address.create({
data: {
Expand All @@ -37,19 +35,24 @@ async function create(prisma: PrismaClient, unterveranstaltung: Unterveranstaltu
description: 'address created via db seeder',
})

// Make sure the email isn't NOT based on the person's name
const firstName = faker.person.firstName()
const lastName = faker.person.lastName()
const mail = faker.internet.email({ firstName, lastName })

const account = await prisma.account.create({
data: {
email: faker.internet.email(),
email: mail,
role: 'USER',
activatedAt: new Date(),
status: 'AKTIV',
person: {
create: {
firstname: faker.person.firstName(),
lastname: faker.person.lastName(),
firstname: firstName,
lastname: lastName,
birthday: faker.date.birthdate({ min: 12, max: 30, mode: 'age' }),
gender: faker.helpers.enumValue(Gender),
email: faker.internet.email(),
email: mail,
telefon: faker.string.numeric('+49151########'),
essgewohnheit: faker.helpers.enumValue(Essgewohnheit),
nahrungsmittelIntoleranzen: faker.helpers.arrayElements(Object.values(NahrungsmittelIntoleranz)),
Expand Down
Loading
Loading