From 056b3ee9a8e173da6ef00bd6062988c0c7bb9c9c Mon Sep 17 00:00:00 2001
From: Vyacheslav Tumanov <me@slavatumanov.me>
Date: Fri, 17 Feb 2023 12:18:58 +0500
Subject: [PATCH] TSK-637: Add login and recovery action (#2654)

Signed-off-by: Vyacheslav Tumanov <me@slavatumanov.me>
---
 plugins/login-assets/lang/en.json             |  2 +-
 .../src/components/Join.svelte                | 30 +++++++++++++++++--
 2 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/plugins/login-assets/lang/en.json b/plugins/login-assets/lang/en.json
index 065253071c..20a6150ce6 100644
--- a/plugins/login-assets/lang/en.json
+++ b/plugins/login-assets/lang/en.json
@@ -28,7 +28,7 @@
     "ChangeAccount": "Change account",
     "NotSeeingWorkspace": "Not seeing your workspace?",
     "WorkspaceNameRule": "The workspace name can contains lowercase letters, numbers, and symbols !@#%&^-",
-    "ForgotPassword": "Forgot your password",
+    "ForgotPassword": "Forgot your password?",
     "KnowPassword": "Know your password?",
     "Recover": "Recover",
     "PasswordRecovery": "Password recovery",
diff --git a/plugins/login-resources/src/components/Join.svelte b/plugins/login-resources/src/components/Join.svelte
index 614554d6db..c3c751ca56 100644
--- a/plugins/login-resources/src/components/Join.svelte
+++ b/plugins/login-resources/src/components/Join.svelte
@@ -84,7 +84,7 @@
     }
   }
 
-  $: bottom = page === 'login' ? [signUpAction] : [loginAction]
+  $: bottom = page === 'login' ? [signUpAction] : [loginJoinAction]
   $: secondaryButtonLabel = page === 'login' ? login.string.SignUp : undefined
   $: secondaryButtonAction = () => {
     page = 'signUp'
@@ -96,12 +96,36 @@
     func: () => (page = 'signUp')
   }
 
-  const loginAction = {
+  const loginJoinAction = {
     caption: login.string.HaveAccount,
     i18n: login.string.LogIn,
     func: () => (page = 'login')
   }
 
+  const loginAction = {
+    caption: login.string.HaveAccount,
+    i18n: login.string.LogIn,
+    func: () => {
+      const loc = getCurrentLocation()
+      loc.path[1] = 'login'
+      loc.query = undefined
+      loc.path.length = 2
+      navigate(loc)
+    }
+  }
+
+  const recoveryAction = {
+    caption: login.string.ForgotPassword,
+    i18n: login.string.Recover,
+    func: () => {
+      const loc = getCurrentLocation()
+      loc.path[1] = 'password'
+      loc.query = undefined
+      loc.path.length = 2
+      navigate(loc)
+    }
+  }
+
   onMount(() => {
     check()
   })
@@ -132,5 +156,5 @@
   {action}
   {secondaryButtonLabel}
   {secondaryButtonAction}
-  bottomActions={bottom}
+  bottomActions={[...bottom, loginAction, recoveryAction]}
 />