v1.20: Mieter pflegen eigene Stammdaten (Telefon, E-Mail, Bankverbindung)
This commit is contained in:
@@ -106,6 +106,11 @@ CREATE TABLE IF NOT EXISTS users (
|
||||
erstellt_am TEXT NOT NULL,
|
||||
letzter_login TEXT
|
||||
);
|
||||
-- Stammdaten zur Selbstpflege durch den Nutzer (v1.20)
|
||||
ALTER TABLE users ADD COLUMN IF NOT EXISTS telefon TEXT;
|
||||
ALTER TABLE users ADD COLUMN IF NOT EXISTS kontoinhaber TEXT;
|
||||
ALTER TABLE users ADD COLUMN IF NOT EXISTS iban TEXT;
|
||||
ALTER TABLE users ADD COLUMN IF NOT EXISTS bankname TEXT;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS registration_codes (
|
||||
code TEXT PRIMARY KEY,
|
||||
|
||||
@@ -135,6 +135,10 @@ const oeffentlicherBenutzer = (b) => ({
|
||||
aktiv: b.aktiv,
|
||||
erstelltAm: b.erstellt_am,
|
||||
letzterLogin: b.letzter_login ?? undefined,
|
||||
telefon: b.telefon ?? null,
|
||||
kontoinhaber: b.kontoinhaber ?? null,
|
||||
iban: b.iban ?? null,
|
||||
bankname: b.bankname ?? null,
|
||||
})
|
||||
|
||||
async function sessionAnlegen(res, userId, req) {
|
||||
@@ -238,6 +242,31 @@ app.get('/api/auth/me', auth, (req, res) => {
|
||||
res.json({ benutzer: oeffentlicherBenutzer(req.user) })
|
||||
})
|
||||
|
||||
// Stammdaten-Selbstpflege (v1.20): Telefon, E-Mail, Bankverbindung
|
||||
app.patch('/api/auth/profil', auth, async (req, res, next) => {
|
||||
try {
|
||||
const { email, telefon, kontoinhaber, iban, bankname } = req.body || {}
|
||||
const emailNeu = String(email || '').trim()
|
||||
if (!/^\S+@\S+\.\S+$/.test(emailNeu))
|
||||
return res.status(400).json({ fehler: 'Gültige E-Mail-Adresse erforderlich.' })
|
||||
const { rows: fremde } = await pool.query(
|
||||
'SELECT id FROM users WHERE lower(email) = lower($1) AND id <> $2', [emailNeu, req.user.id],
|
||||
)
|
||||
if (fremde.length)
|
||||
return res.status(400).json({ fehler: 'Diese E-Mail-Adresse wird bereits verwendet.' })
|
||||
const ibanNeu = String(iban || '').trim().replace(/\s+/g, '').toUpperCase()
|
||||
if (ibanNeu && !/^[A-Z]{2}\d{2}[A-Z0-9]{11,30}$/.test(ibanNeu))
|
||||
return res.status(400).json({ fehler: 'Ungültige IBAN.' })
|
||||
const { rows } = await pool.query(
|
||||
`UPDATE users SET email = $1, telefon = $2, kontoinhaber = $3, iban = $4, bankname = $5
|
||||
WHERE id = $6 RETURNING *`,
|
||||
[emailNeu, String(telefon || '').trim() || null, String(kontoinhaber || '').trim() || null,
|
||||
ibanNeu || null, String(bankname || '').trim() || null, req.user.id],
|
||||
)
|
||||
res.json({ benutzer: oeffentlicherBenutzer(rows[0]) })
|
||||
} catch (e) { next(e) }
|
||||
})
|
||||
|
||||
app.post('/api/auth/register', async (req, res, next) => {
|
||||
try {
|
||||
const { code, benutzername, name, email, passwortHash } = req.body || {}
|
||||
|
||||
Reference in New Issue
Block a user