- Add PasswordResetToken entity, repository (Flyway V8 migration)
- PasswordResetService: token generation, validation, nightly cleanup
- AuthController: POST /api/auth/forgot-password and /api/auth/reset-password (both permitAll)
- AuthE2EController (@Profile("e2e")): GET /api/auth/reset-token-for-test for CI testing
- spring-boot-starter-mail dependency; JavaMailSender optional (@Autowired required=false)
- mail health indicator disabled; mail config via MAIL_HOST/PORT/USERNAME/PASSWORD env vars
- 5 unit tests written TDD-style (all pass)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
79 lines
1.4 KiB
YAML
79 lines
1.4 KiB
YAML
spring:
|
|
application:
|
|
name: Familienarchiv
|
|
|
|
datasource:
|
|
url: ${SPRING_DATASOURCE_URL}
|
|
username: ${SPRING_DATASOURCE_USERNAME}
|
|
password: ${SPRING_DATASOURCE_PASSWORD}
|
|
driver-class-name: org.postgresql.Driver
|
|
|
|
flyway:
|
|
enabled: false # Managed explicitly via FlywayConfig bean
|
|
|
|
jpa:
|
|
hibernate:
|
|
ddl-auto: none
|
|
properties:
|
|
hibernate:
|
|
dialect: org.hibernate.dialect.PostgreSQLDialect
|
|
show-sql: false
|
|
|
|
servlet:
|
|
multipart:
|
|
max-file-size: 50MB
|
|
max-request-size: 50MB
|
|
|
|
mail:
|
|
host: ${MAIL_HOST:}
|
|
port: ${MAIL_PORT:587}
|
|
username: ${MAIL_USERNAME:}
|
|
password: ${MAIL_PASSWORD:}
|
|
properties:
|
|
mail:
|
|
smtp:
|
|
auth: true
|
|
starttls:
|
|
enable: true
|
|
|
|
management:
|
|
health:
|
|
mail:
|
|
enabled: false
|
|
|
|
springdoc:
|
|
api-docs:
|
|
enabled: false
|
|
swagger-ui:
|
|
enabled: false
|
|
|
|
app:
|
|
s3:
|
|
endpoint: ${S3_ENDPOINT}
|
|
access-key: ${S3_ACCESS_KEY}
|
|
secret-key: ${S3_SECRET_KEY}
|
|
bucket: ${S3_BUCKET_NAME}
|
|
region: ${S3_REGION}
|
|
|
|
base-url: ${APP_BASE_URL:http://localhost:3000}
|
|
|
|
mail:
|
|
from: ${APP_MAIL_FROM:noreply@familienarchiv.local}
|
|
|
|
admin:
|
|
username: ${APP_ADMIN_USERNAME:admin}
|
|
password: ${APP_ADMIN_PASSWORD:admin123}
|
|
|
|
import:
|
|
col:
|
|
index: 0
|
|
box: 1
|
|
folder: 2
|
|
sender: 3
|
|
receivers: 5
|
|
date: 7
|
|
location: 9
|
|
tags: 10
|
|
summary: 11
|
|
transcription: 13
|