From ae56793e6e61298e53b76ddc148457ad4303737f Mon Sep 17 00:00:00 2001
From: grimsi <9295182+grimsi@users.noreply.github.com>
Date: Sun, 22 Sep 2024 11:34:22 +0200
Subject: [PATCH] Implement password reset process
---
build.gradle.kts | 6 +-
.../administration/NotificationManagement.tsx | 15 ++--
.../components/general/CheckboxInput.tsx | 2 +-
src/main/frontend/views/LoginView.tsx | 60 ++++++++++++-
.../de/grimsi/gameyfin/GameyfinApplication.kt | 2 +
.../gameyfin/config/ConfigProperties.kt | 60 +++++++------
.../gameyfin/core/events/AsyncConfig.kt | 8 ++
.../{notifications => core}/events/Events.kt | 5 +-
.../notifications/NotificationService.kt | 31 ++++++-
.../providers/AbstractNotificationProvider.kt | 14 ++--
.../providers/EmailNotificationProvider.kt | 43 +++++++++-
.../gameyfin/users/PasswordResetEndpoint.kt | 19 +++++
.../gameyfin/users/PasswordResetService.kt | 84 +++++++++++++++++++
.../grimsi/gameyfin/users/SessionService.kt | 8 ++
.../de/grimsi/gameyfin/users/UserService.kt | 5 ++
.../users/entities/PasswordResetToken.kt | 20 +++++
.../PasswordResetTokenRepository.kt | 10 +++
17 files changed, 340 insertions(+), 52 deletions(-)
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/core/events/AsyncConfig.kt
rename src/main/kotlin/de/grimsi/gameyfin/{notifications => core}/events/Events.kt (61%)
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/users/PasswordResetEndpoint.kt
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/users/PasswordResetService.kt
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/users/entities/PasswordResetToken.kt
create mode 100644 src/main/kotlin/de/grimsi/gameyfin/users/persistence/PasswordResetTokenRepository.kt
diff --git a/build.gradle.kts b/build.gradle.kts
index be69f79..8ba36b0 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -34,11 +34,14 @@ repositories {
}
dependencies {
- // Spring Boot & Kotlin
+ // Spring Boot
implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("org.springframework.boot:spring-boot-starter-security")
implementation("org.springframework.boot:spring-boot-starter-validation")
+ implementation("org.springframework.cloud:spring-cloud-starter")
implementation("jakarta.validation:jakarta.validation-api:3.0.2")
+
+ // Kotlin extensions
implementation("org.jetbrains.kotlin:kotlin-reflect")
// Reactive
@@ -58,7 +61,6 @@ dependencies {
// Persistence & I/O
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("com.github.paulcwarren:spring-content-fs-boot-starter:3.0.14")
- implementation("org.springframework.cloud:spring-cloud-starter")
implementation("commons-io:commons-io:2.16.1")
// SSO
diff --git a/src/main/frontend/components/administration/NotificationManagement.tsx b/src/main/frontend/components/administration/NotificationManagement.tsx
index 3d3db43..901f251 100644
--- a/src/main/frontend/components/administration/NotificationManagement.tsx
+++ b/src/main/frontend/components/administration/NotificationManagement.tsx
@@ -58,23 +58,22 @@ function NotificationManagementLayout({getConfig, getConfigs, formik}: any) {
-
-
+
+ isDisabled={!formik.values.notifications.providers.email.enabled}/>
+ isDisabled={!formik.values.notifications.providers.email.enabled}/>
+ isDisabled={!formik.values.notifications.providers.email.enabled}/>
+ isDisabled={!formik.values.notifications.providers.email.enabled}/>
@@ -83,7 +82,7 @@ function NotificationManagementLayout({getConfig, getConfigs, formik}: any) {
{getConfigs("notifications.templates").map((template: ConfigEntryDto) =>
-
+