Forráskód Böngészése

login function is now working

miskson 3 éve
szülő
commit
eaad4dead1
2 módosított fájl, 67 hozzáadás és 42 törlés
  1. 5 3
      hw15-gql-cathegory-pg/GQL.html
  2. 62 39
      hw15-gql-cathegory-pg/GQL_files/index.js

+ 5 - 3
hw15-gql-cathegory-pg/GQL.html

@@ -49,10 +49,12 @@
 <body>
   <header style="padding: 5px;">
     <h1>ГДЕ Я ОКАЗАЛСЯ?</h1>
-    <div>
+    <nav id="navBar">
       <div style="display: inline-block; border: 1px dashed white; padding: 5px;">
         <span id="nameField">Name</span>
-        <button id="logBtn" style="padding: 5px; font-size: small; background-color:mediumaquamarine;">log-in/out</button>
+        <button id="logBtn" style="padding: 5px; font-size: small; background-color:mediumaquamarine;">
+          <a href="#/login" style="color: white; text-decoration: none;" id="logLink">log-in/out</a>
+        </button>
       </div>
       <a 
         href="#/cart" 
@@ -65,7 +67,7 @@
         ">
       в корзину <span id="itemCount" style="color: gold;"></span>
       </a>
-    </div>
+    </nav>
   </header>
 
   <div id="mainContainer">

+ 62 - 39
hw15-gql-cathegory-pg/GQL_files/index.js

@@ -148,7 +148,7 @@ console.log(store.getState()) //стартовое состояние может
 store.subscribe(() => console.log(store.getState()))
 
 //ПЕРЕДЕЛАТЬ ОТОБРАЖЕНИЕ с поправкой на то, что теперь промисы не в корне state а в state.promise
-const actionLogin = (login = undefined, password = undefined) =>
+const actionLogin = (login, password) =>
     actionPromise('login', gql(`
     query log($login:String, $password:String) {
         login(login: $login, password: $password)
@@ -283,7 +283,37 @@ window.onhashchange = () => {
             store.dispatch(actionGoodById(_id))
         },
         login() {
-            store.dispatch(actionLogin())
+            let navBar = document.getElementById('navBar')
+            navBar.style.visibility = 'hidden'
+
+            let pass, log
+            aside.innerHTML = ''
+            main.innerHTML = `
+                <div style="border: 5px solid purple; padding: 10px; background-color: black;">
+                    <button id="returnBtnLogin" style="font-size: small;">&#8656 назад</button>
+                    <input  id="logInp" style="font-size: small; display:block; margin:10px" type="text" placeholder="login"/>
+                    <input  id="passInp" style="font-size: small; display:block; margin:10px" type="text" placeholder="password"/>
+                    <small id="errBox" style="display: block; width:fit-content; color: red; margin: 0 auto;"></small>
+                    <button id="submitBtn" style="font-size: small; display:block; margin:0 auto">LOGIN</button>
+                </div>
+            `
+            let returnBtn = document.getElementById('returnBtnLogin')
+            let logInp = document.getElementById('logInp')
+            let passInp = document.getElementById('passInp')
+            let submitBtn = document.getElementById('submitBtn')
+
+            passInp.oninput = (e) => { pass = e.target.value }
+
+            logInp.oninput = (e) => { log = e.target.value }
+
+            returnBtn.onclick = () => {
+                navBar.style.visibility = 'visible'
+                history.back()
+            }
+
+            submitBtn.onclick = () => {
+                store.dispatch(actionFullLogin(log, pass))
+            }
         },
         cart() {
             const {cart} = store.getState()
@@ -394,9 +424,12 @@ store.subscribe(() => {
                 card.style.margin = "10px"
                 card.style.padding = "10px"
                 main.append(card)
+
                 let cartButton = document.createElement('button')
                 cartButton.innerText = 'Добавить в корзину'
                 cartButton.style.fontSize = 'smaller'
+                cartButton.style.marginTop = '10px'
+                cartButton.style.backgroundColor = 'gold'
                 card.append(cartButton)
 
                 cartButton.onclick = () => {
@@ -432,52 +465,42 @@ store.subscribe(() => {
 })
 
 store.subscribe(() => {
-    const { login } = store.getState().promise
+    const {payload} = store.getState().auth
     const [, route, _id] = location.hash.split('/')
     
-    let pass, log
-    if(!login?.payload && route === 'login') {
-        console.log('hire');
-        aside.innerHTML = ''
+    let logBtn = document.getElementById('logBtn')
+    let logLink = document.getElementById('logLink')
+    let nameField = document.getElementById('nameField')
+    if(!payload) {
+        nameField.innerText = ''
+        logBtn.style.backgroundColor = 'mediumaquamarine'
+        logLink.innerText = 'Войти'
+
+    } else if(payload && route === 'login') {
+        console.log('loginPayload', payload)
         main.innerHTML = `
-            <div style="border: 5px solid purple; padding: 10px; background-color: black;">
-                <button id="returnBtnLogin" style="font-size: small;">&#8656 назад</button>
-                <input  id="logInp" style="display:block; margin:10px" type="text" placeholder="login"/>
-                <input  id="passInp" style="display:block; margin:10px" type="text" placeholder="password"/>
-                <button id="submitBtn" style="display:block; margin:0 auto">LOGIN</button>
-            </div>
+            <h2>Вы успешно вошли под логином пользователя '${payload.sub.login}'<h2>
+            <button id="returnBtn">&#8656 Венуться к просмотру</button>
         `
-        let returnBtn = document.getElementById('returnBtnLogin')
-        let logInp = document.getElementById('logInp')
-        let passInp = document.getElementById('passInp')
-        let submitBtn = document.getElementById('submitBtn')
-
-        passInp.oninput = (e) => {
-            console.log(e.target.value)
-            pass = e.target.value
-        }
-
-        logInp.oninput = (e) => {
-            console.log(e.target.value)
-            log = e.target.value
-        }
 
-        returnBtn.onclick = () => {
-            logBtn.disabled = false
+        let retBtn = document.getElementById('returnBtn')
+        retBtn.onclick = () => {
+            let navBar = document.getElementById('navBar')
+            navBar.style.visibility = 'visible'
             history.back()
         }
 
-        submitBtn.onclick = () => {
-            //store.dispatch(actionLogin(log, pass))
-            console.log('BABAX')
+    } else {
+        nameField.innerText = payload.sub.login
+        logBtn.style.backgroundColor = 'firebrick'
+        logBtn.innerHTML = 'Выйти'
+        logBtn.onclick = () => {
+            nameField.innerText = ''
+            logBtn.style.backgroundColor = 'mediumaquamarine'
+            logBtn.innerHTML = `<a href="#/login" style="color: white; text-decoration: none;" id="logLink">Войти</a>`
+            actionAuthLogout()
         }
-
-        logBtn.disabled = true
-    }
-
-    if(login?.payload && route === 'login') {
-        history.back()
-
+        
     }
 })