This is an automated email from the ASF dual-hosted git repository.

pearl11594 pushed a commit to branch cks-enhancements-part2
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit 95e37563f48573780b07a038a7f48c0bc04e9b64
Author: Pearl Dsilva <[email protected]>
AuthorDate: Wed Jan 29 12:28:35 2025 -0500

    Login to a specific Project view
---
 ui/src/views/auth/Login.vue | 44 +++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 41 insertions(+), 3 deletions(-)

diff --git a/ui/src/views/auth/Login.vue b/ui/src/views/auth/Login.vue
index 47e2f34c57e..8610900f271 100644
--- a/ui/src/views/auth/Login.vue
+++ b/ui/src/views/auth/Login.vue
@@ -97,6 +97,18 @@
             </template>
           </a-input>
         </a-form-item>
+        <a-form-item ref="project" name="project">
+          <a-input
+            size="large"
+            type="text"
+            :placeholder="$t('label.project')"
+            v-model:value="form.project"
+          >
+            <template #prefix>
+              <block-outlined />
+            </template>
+          </a-input>
+        </a-form-item>
       </a-tab-pane>
       <a-tab-pane key="saml" :disabled="idps.length === 0">
         <template #tab>
@@ -230,7 +242,8 @@ export default {
         loginType: 0
       },
       server: '',
-      forgotPasswordEnabled: false
+      forgotPasswordEnabled: false,
+      project: null
     }
   },
   created () {
@@ -255,7 +268,8 @@ export default {
       this.form = reactive({
         server: (this.server.apiHost || '') + this.server.apiBase,
         username: this.$route.query?.username || '',
-        domain: this.$route.query?.domain || ''
+        domain: this.$route.query?.domain || '',
+        project: null
       })
       this.rules = reactive({})
       this.setRules()
@@ -447,7 +461,7 @@ export default {
           })
       })
     },
-    loginSuccess (res) {
+    async loginSuccess (res) {
       this.$notification.destroy()
       this.$store.commit('SET_COUNT_NOTIFY', 0)
       if (store.getters.twoFaEnabled === true && store.getters.twoFaProvider 
!== '' && store.getters.twoFaProvider !== undefined) {
@@ -456,9 +470,33 @@ export default {
         this.$router.push({ path: '/setup2FA' }).catch(() => {})
       } else {
         this.$store.commit('SET_LOGIN_FLAG', true)
+        const values = toRaw(this.form)
+        if (values.project) {
+          await this.getProject(values.project)
+          this.$store.dispatch('ProjectView', this.project.id)
+          this.$store.dispatch('SetProject', this.project)
+          this.$store.dispatch('ToggleTheme', this.project.id === undefined ? 
'light' : 'dark')
+        }
         this.$router.push({ path: '/dashboard' }).catch(() => {})
       }
     },
+    getProject (projectName) {
+      return new Promise((resolve, reject) => {
+        api('listProjects', {
+          response: 'json',
+          domainId: this.selectedDomain,
+          details: 'min'
+        }).then((response) => {
+          const projects = response.listprojectsresponse.project
+          this.project = projects.filter(project => project.name === 
projectName)?.[0] || null
+          resolve(this.project)
+        }).catch((error) => {
+          this.$notifyError(error)
+        }).finally(() => {
+          this.loading = false
+        })
+      })
+    },
     requestFailed (err) {
       if (err && err.response && err.response.data && 
err.response.data.loginresponse) {
         const error = err.response.data.loginresponse.errorcode + ': ' + 
err.response.data.loginresponse.errortext

Reply via email to