From 3067258d12488ebdd4642e91c0cd597fe4e24e4e Mon Sep 17 00:00:00 2001 From: Victor Awotidebe Date: Thu, 16 Apr 2020 05:08:30 +0100 Subject: [PATCH] implement signin --- UI/assets/.DS_Store | Bin 0 -> 6148 bytes UI/assets/js/.DS_Store | Bin 0 -> 6148 bytes UI/assets/js/cookies_lib/api.mjs | 91 +++ UI/assets/js/cookies_lib/assign.mjs | 9 + UI/assets/js/cookies_lib/converter.mjs | 8 + UI/assets/js/webcomponents/webcomponents.js | 277 ++++----- UI/assets/templates/sign-modal.html | 20 +- UI/index.html | 3 +- UI/profile.html | 23 +- dist/app.js | 46 -- dist/app.js.map | 1 - dist/controllers/coursesControllers.js | 210 ------- dist/controllers/coursesControllers.js.map | 1 - dist/controllers/duesController.js | 2 - dist/controllers/duesController.js.map | 1 - dist/controllers/userControllers.js | 232 -------- dist/controllers/userControllers.js.map | 1 - dist/database/config.js | 38 -- dist/database/config.js.map | 1 - .../migrations/20190923110048-create-user.js | 61 -- .../20190923110048-create-user.js.map | 1 - .../20190923115128-create-course.js | 49 -- .../20190923115128-create-course.js.map | 1 - .../20190923120955-create-user-courses.js | 53 -- .../20190923120955-create-user-courses.js.map | 1 - .../migrations/20190923130124-create-dues.js | 45 -- .../20190923130124-create-dues.js.map | 1 - .../20190923131310-create-user-dues.js | 54 -- .../20190923131310-create-user-dues.js.map | 1 - .../20190923131930-create-events.js | 45 -- .../20190923131930-create-events.js.map | 1 - .../seeders/20190925105015-admin-user.js | 24 - .../seeders/20190925105015-admin-user.js.map | 1 - dist/database/seeders/20190925105331-users.js | 71 --- .../seeders/20190925105331-users.js.map | 1 - dist/database/seeders/20190925105527-dues.js | 47 -- .../seeders/20190925105527-dues.js.map | 1 - .../database/seeders/20190925105818-events.js | 53 -- .../seeders/20190925105818-events.js.map | 1 - .../seeders/20190925110036-userDues.js | 53 -- .../seeders/20190925110036-userDues.js.map | 1 - .../seeders/20190925110541-courses.js | 59 -- .../seeders/20190925110541-courses.js.map | 1 - .../seeders/20190925110552-userCourses.js | 47 -- .../seeders/20190925110552-userCourses.js.map | 1 - dist/middlewares/authenticate.js | 132 ----- dist/middlewares/authenticate.js.map | 1 - dist/middlewares/errorHandler.js | 53 -- dist/middlewares/errorHandler.js.map | 1 - dist/middlewares/userMiddleware.js | 270 --------- dist/middlewares/userMiddleware.js.map | 1 - dist/models/course.js | 39 -- dist/models/course.js.map | 1 - dist/models/dues.js | 35 -- dist/models/dues.js.map | 1 - dist/models/events.js | 28 - dist/models/events.js.map | 1 - dist/models/index.js | 37 -- dist/models/index.js.map | 1 - dist/models/user.js | 42 -- dist/models/user.js.map | 1 - dist/models/usercourses.js | 32 - dist/models/usercourses.js.map | 1 - dist/models/userdues.js | 37 -- dist/models/userdues.js.map | 1 - dist/routes/courses.js | 32 - dist/routes/courses.js.map | 1 - dist/routes/index.js | 38 -- dist/routes/index.js.map | 1 - dist/routes/users.js | 37 -- dist/routes/users.js.map | 1 - dist/services/courseServices.js | 209 ------- dist/services/courseServices.js.map | 1 - dist/services/userServices.js | 227 -------- dist/services/userServices.js.map | 1 - dist/test/test.js | 548 ------------------ dist/test/test.js.map | 1 - dist/utils/index.js | 86 --- dist/utils/index.js.map | 1 - dist/utils/response.js | 84 --- dist/utils/response.js.map | 1 - dist/validatation/inputValidator.js | 106 ---- dist/validatation/inputValidator.js.map | 1 - dist/validatation/paramvalidator.js | 2 - dist/validatation/paramvalidator.js.map | 1 - dist/validatation/schema.js | 150 ----- dist/validatation/schema.js.map | 1 - dist/validatation/validate.js | 34 -- dist/validatation/validate.js.map | 1 - src/validatation/schema.js | 2 +- 90 files changed, 285 insertions(+), 3635 deletions(-) create mode 100644 UI/assets/.DS_Store create mode 100644 UI/assets/js/.DS_Store create mode 100644 UI/assets/js/cookies_lib/api.mjs create mode 100644 UI/assets/js/cookies_lib/assign.mjs create mode 100644 UI/assets/js/cookies_lib/converter.mjs delete mode 100644 dist/app.js delete mode 100644 dist/app.js.map delete mode 100644 dist/controllers/coursesControllers.js delete mode 100644 dist/controllers/coursesControllers.js.map delete mode 100644 dist/controllers/duesController.js delete mode 100644 dist/controllers/duesController.js.map delete mode 100644 dist/controllers/userControllers.js delete mode 100644 dist/controllers/userControllers.js.map delete mode 100644 dist/database/config.js delete mode 100644 dist/database/config.js.map delete mode 100644 dist/database/migrations/20190923110048-create-user.js delete mode 100644 dist/database/migrations/20190923110048-create-user.js.map delete mode 100644 dist/database/migrations/20190923115128-create-course.js delete mode 100644 dist/database/migrations/20190923115128-create-course.js.map delete mode 100644 dist/database/migrations/20190923120955-create-user-courses.js delete mode 100644 dist/database/migrations/20190923120955-create-user-courses.js.map delete mode 100644 dist/database/migrations/20190923130124-create-dues.js delete mode 100644 dist/database/migrations/20190923130124-create-dues.js.map delete mode 100644 dist/database/migrations/20190923131310-create-user-dues.js delete mode 100644 dist/database/migrations/20190923131310-create-user-dues.js.map delete mode 100644 dist/database/migrations/20190923131930-create-events.js delete mode 100644 dist/database/migrations/20190923131930-create-events.js.map delete mode 100644 dist/database/seeders/20190925105015-admin-user.js delete mode 100644 dist/database/seeders/20190925105015-admin-user.js.map delete mode 100644 dist/database/seeders/20190925105331-users.js delete mode 100644 dist/database/seeders/20190925105331-users.js.map delete mode 100644 dist/database/seeders/20190925105527-dues.js delete mode 100644 dist/database/seeders/20190925105527-dues.js.map delete mode 100644 dist/database/seeders/20190925105818-events.js delete mode 100644 dist/database/seeders/20190925105818-events.js.map delete mode 100644 dist/database/seeders/20190925110036-userDues.js delete mode 100644 dist/database/seeders/20190925110036-userDues.js.map delete mode 100644 dist/database/seeders/20190925110541-courses.js delete mode 100644 dist/database/seeders/20190925110541-courses.js.map delete mode 100644 dist/database/seeders/20190925110552-userCourses.js delete mode 100644 dist/database/seeders/20190925110552-userCourses.js.map delete mode 100644 dist/middlewares/authenticate.js delete mode 100644 dist/middlewares/authenticate.js.map delete mode 100644 dist/middlewares/errorHandler.js delete mode 100644 dist/middlewares/errorHandler.js.map delete mode 100644 dist/middlewares/userMiddleware.js delete mode 100644 dist/middlewares/userMiddleware.js.map delete mode 100644 dist/models/course.js delete mode 100644 dist/models/course.js.map delete mode 100644 dist/models/dues.js delete mode 100644 dist/models/dues.js.map delete mode 100644 dist/models/events.js delete mode 100644 dist/models/events.js.map delete mode 100644 dist/models/index.js delete mode 100644 dist/models/index.js.map delete mode 100644 dist/models/user.js delete mode 100644 dist/models/user.js.map delete mode 100644 dist/models/usercourses.js delete mode 100644 dist/models/usercourses.js.map delete mode 100644 dist/models/userdues.js delete mode 100644 dist/models/userdues.js.map delete mode 100644 dist/routes/courses.js delete mode 100644 dist/routes/courses.js.map delete mode 100644 dist/routes/index.js delete mode 100644 dist/routes/index.js.map delete mode 100644 dist/routes/users.js delete mode 100644 dist/routes/users.js.map delete mode 100644 dist/services/courseServices.js delete mode 100644 dist/services/courseServices.js.map delete mode 100644 dist/services/userServices.js delete mode 100644 dist/services/userServices.js.map delete mode 100644 dist/test/test.js delete mode 100644 dist/test/test.js.map delete mode 100644 dist/utils/index.js delete mode 100644 dist/utils/index.js.map delete mode 100644 dist/utils/response.js delete mode 100644 dist/utils/response.js.map delete mode 100644 dist/validatation/inputValidator.js delete mode 100644 dist/validatation/inputValidator.js.map delete mode 100644 dist/validatation/paramvalidator.js delete mode 100644 dist/validatation/paramvalidator.js.map delete mode 100644 dist/validatation/schema.js delete mode 100644 dist/validatation/schema.js.map delete mode 100644 dist/validatation/validate.js delete mode 100644 dist/validatation/validate.js.map diff --git a/UI/assets/.DS_Store b/UI/assets/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..abc97e130afc999cc8f74212d09bff22cf690310 GIT binary patch literal 6148 zcmeHK%}(1u5Z(=Gv9VOS5(khtti++091;2c{5bW&{_S7J(Ofh+{znGz+tt`NmiuLX`SSbaMYH*f*Ouz<-Y*;Gie*|K zEc4tQrlnhW#VGH1S>N7pqagIXtQQ5vup1`(ad;IbhuMKwgxM(uchfY60A+jrNfefS zdv!NW3NK2+Ox9C1&U#T2q-7@^B|$FZb#ZAQdBqUw7@N+Zl02G**|*om@*vqy|q1=n1-?b>C5rg(e=&u+q?T8KOY_y`y75$DIYaX;Ry^$#Fd*RahhB} ze;PZDAtVNf0b*c57|`3BVJ*mdXc@!+G4S^o!2LmhB03r?g>vhF2Ct7eUPnX$8{ZO$ zLZhRxQV1g;T%`i4RIZ;GT&06w=r~7XrBJ0aE@y^1dS&(^uc;aMv{2cRezS1J6H0){+_Ar_C~ cHBc$w7ia)F8Y_k10ilb4q=6b@;GZ(^3=dXcD*ylh literal 0 HcmV?d00001 diff --git a/UI/assets/js/.DS_Store b/UI/assets/js/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..36f4dd2b641954c17c29218fde7e08b7ab5edf16 GIT binary patch literal 6148 zcmeHKPfrs;6n_I%wnb$5Q^4q9BQY_7Lu)kA1ECg-HpI|af^7iHZg(gfmYrsIONCm~ zui#A&eg^OQ1^5P@j2}U--hA_?B39zf7@611`@Mbh-b~+bc6W9FfaIHQ7Qh4m0~^Og z3e|6f_w&{#1IjaqNW>T(P>7%kK6ri6+MyZH4E$>h@Mm`zYQXTfhfnRv^XoXRsNwj` z!H8q0;d@b>$$TUOgNX|lhYTZSq()L(rCru4#dh3`@^-kvuZniO>nMATG5?2cJL?{8 zRn5sI7R0s}&`>0MF2#_|r(WQ)R-QEjHxlENWQSoSjbzoFZntk`=B-R;-fCwvckj(x z+030xr;{|MZ)6t=+xv${?H8SwuO+<%-$p`4753l_8fR4N)ecm(=92=h)n;c80(^J#wnW?F(Rdd3zYkT#O|MMm0voP;B=|(;D+)~4?c|pA#)8}!? zJEB!{{Fl%t)O~j1T03lD%;bqf4EHdkG!Wyh?(9S~E?3Rbs1`EcFS5vsJr-1c>aA=> zxCVuo?iYd`hBF=@=c^4K7Om4TLhQ>gSL`sfgF4M0Zuz!D{na4P;+XC8NIqJP1;vo^ zk;)$0yq4L;uaeW*+)B^5DGd{5r2&vM$%bpkbSb2$-DGk$S5$ol%)xzl4C{E;9lKM_>KAn92t`rZ(@cAoUSF9P(4E%us{(i8qam*>~N))dSRN@GLm_WA>wE0R+8TdaLAc^JDavp0_duv~ne6O{zZDZrY3M#c73xjXP dGuVV+pT!NtoWia|^q}Yu0YQUSnt{K{z;}zT)#(5L literal 0 HcmV?d00001 diff --git a/UI/assets/js/cookies_lib/api.mjs b/UI/assets/js/cookies_lib/api.mjs new file mode 100644 index 0000000..c0a4ed2 --- /dev/null +++ b/UI/assets/js/cookies_lib/api.mjs @@ -0,0 +1,91 @@ +import assign from './assign.mjs' +import defaultConverter from './converter.mjs' + +function init (converter, defaultAttributes) { + function set (key, value, attributes) { + if (typeof document === 'undefined') { + return + } + + attributes = assign({}, defaultAttributes, attributes) + + if (typeof attributes.expires === 'number') { + attributes.expires = new Date(Date.now() + attributes.expires * 864e5) + } + if (attributes.expires) { + attributes.expires = attributes.expires.toUTCString() + } + + key = defaultConverter.write(key).replace(/=/g, '%3D') + + value = converter.write(String(value), key) + + var stringifiedAttributes = '' + for (var attributeName in attributes) { + if (!attributes[attributeName]) { + continue + } + + stringifiedAttributes += '; ' + attributeName + + if (attributes[attributeName] === true) { + continue + } + + stringifiedAttributes += '=' + attributes[attributeName].split(';')[0] + } + + return (document.cookie = key + '=' + value + stringifiedAttributes) + } + + function get (key) { + if (typeof document === 'undefined' || (arguments.length && !key)) { + return + } + + // To prevent the for loop in the first place assign an empty array + // in case there are no cookies at all. + var cookies = document.cookie ? document.cookie.split('; ') : [] + var jar = {} + for (var i = 0; i < cookies.length; i++) { + var parts = cookies[i].split('=') + var value = parts.slice(1).join('=') + var foundKey = defaultConverter.read(parts[0]).replace(/%3D/g, '=') + jar[foundKey] = converter.read(value, foundKey) + + if (key === foundKey) { + break + } + } + + return key ? jar[key] : jar + } + + return Object.create( + { + set: set, + get: get, + remove: function (key, attributes) { + set( + key, + '', + assign({}, attributes, { + expires: -1 + }) + ) + }, + withAttributes: function (attributes) { + return init(this.converter, assign({}, this.attributes, attributes)) + }, + withConverter: function (converter) { + return init(assign({}, this.converter, converter), this.attributes) + } + }, + { + attributes: { value: Object.freeze(defaultAttributes) }, + converter: { value: Object.freeze(converter) } + } + ) +} + +export default init(defaultConverter, { path: '/' }) diff --git a/UI/assets/js/cookies_lib/assign.mjs b/UI/assets/js/cookies_lib/assign.mjs new file mode 100644 index 0000000..fed18c1 --- /dev/null +++ b/UI/assets/js/cookies_lib/assign.mjs @@ -0,0 +1,9 @@ +export default function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] + for (var key in source) { + target[key] = source[key] + } + } + return target +} diff --git a/UI/assets/js/cookies_lib/converter.mjs b/UI/assets/js/cookies_lib/converter.mjs new file mode 100644 index 0000000..823b735 --- /dev/null +++ b/UI/assets/js/cookies_lib/converter.mjs @@ -0,0 +1,8 @@ +export default { + read: function (value) { + return value.replace(/%3B/g, ';') + }, + write: function (value) { + return value.replace(/;/g, '%3B') + } +} diff --git a/UI/assets/js/webcomponents/webcomponents.js b/UI/assets/js/webcomponents/webcomponents.js index 8c5a11e..49d925d 100755 --- a/UI/assets/js/webcomponents/webcomponents.js +++ b/UI/assets/js/webcomponents/webcomponents.js @@ -1,159 +1,168 @@ +/* eslint-disable no-undef */ +const ApiUrl = 'http://localhost:7000/api/v1/'; +// const Cookie = require('../cookies_lib/api.mjs'); + /** - * @name courses-mini + * @name courses-mini * @description creates a card setup layout for listed courses with minimal information * @slot { name = 'one' } contains the courses' name */ -fetch("assets/templates/courses-mini.html") - .then(response => response.text()) - .then(data => - customElements.define("courses-mini", class extends HTMLElement { - constructor() { - super() - this.attachShadow({ mode: 'open' }); - const template = document.createElement('template'); - template.innerHTML = data; - this.shadowRoot.appendChild(template.content.cloneNode(true)) - } - }) - ) +fetch('assets/templates/courses-mini.html') + .then(response => response.text()) + .then(data => customElements.define('courses-mini', class extends HTMLElement { + constructor() { + super(); + this.attachShadow({ mode: 'open' }); + const template = document.createElement('template'); + template.innerHTML = data; + this.shadowRoot.appendChild(template.content.cloneNode(true)); + } + })); /** * @name join-us * @description a parallax mini section with a button to sign up */ -fetch("assets/templates/join-us.html") - .then(response => response.text()) - .then(data => - customElements.define("join-us", class extends HTMLElement { - constructor() { - super() - this.attachShadow({ mode: 'open' }); - const template = document.createElement('template'); - template.innerHTML = data; - this.shadowRoot.appendChild(template.content.cloneNode(true)) - } - }) - ) +fetch('assets/templates/join-us.html') + .then(response => response.text()) + .then(data => customElements.define('join-us', class extends HTMLElement { + constructor() { + super(); + this.attachShadow({ mode: 'open' }); + const template = document.createElement('template'); + template.innerHTML = data; + this.shadowRoot.appendChild(template.content.cloneNode(true)); + } + })); /** * @name my-header * @description a parallax mini section with a button to sign up */ -fetch("assets/templates/my-header.html") - .then(response => response.text()) - .then(data => - customElements.define("my-header", class extends HTMLElement { - constructor() { - super() - this.attachShadow({ mode: 'open' }); - const template = document.createElement('template'); - template.innerHTML = data; - this.shadowRoot.appendChild(template.content.cloneNode(true)); - - this.navControl = this.shadowRoot.querySelector('.nav-control > div'); - this.logInBtn = this.shadowRoot.querySelector('.signin'); - this.signUpBtn = this.shadowRoot.querySelector('.signup'); - - } - - connectedCallback() { - const body = document.body; - const signModal = document.querySelector('sign-modal'); - - this.navControl.addEventListener('click', () => { - this.classList.toggle('show-nav'); - }); - - this.logInBtn.addEventListener('click', (e) => { - e.preventDefault(); - body.setAttribute('class', 'show-modal'); - signModal.setAttribute('class', 'show-login'); - }); - - this.signUpBtn.addEventListener('click', (e) => { - e.preventDefault(); - // window.location.href = './registeration.html' - body.setAttribute('class', 'show-modal'); - signModal.setAttribute('class', 'show-signup'); - }); - } - }) - ) +fetch('assets/templates/my-header.html') + .then(response => response.text()) + .then(data => customElements.define('my-header', class extends HTMLElement { + constructor() { + super(); + this.attachShadow({ mode: 'open' }); + const template = document.createElement('template'); + template.innerHTML = data; + this.shadowRoot.appendChild(template.content.cloneNode(true)); + + this.navControl = this.shadowRoot.querySelector('.nav-control > div'); + this.logInBtn = this.shadowRoot.querySelector('.signin'); + this.signUpBtn = this.shadowRoot.querySelector('.signup'); + } + + connectedCallback() { + const { body } = document; + const signModal = document.querySelector('sign-modal'); + + this.navControl.addEventListener('click', () => { + this.classList.toggle('show-nav'); + }); + + this.logInBtn.addEventListener('click', (e) => { + e.preventDefault(); + body.setAttribute('class', 'show-modal'); + signModal.setAttribute('class', 'show-login'); + }); + + this.signUpBtn.addEventListener('click', (e) => { + e.preventDefault(); + // window.location.href = './registeration.html' + body.setAttribute('class', 'show-modal'); + signModal.setAttribute('class', 'show-signup'); + }); + } + })); /** * @name my-footer * @description a parallax mini section with a button to sign up */ -fetch("assets/templates/my-footer.html") - .then(response => response.text()) - .then(data => - customElements.define("my-footer", class extends HTMLElement { - constructor() { - super() - this.attachShadow({ mode: 'open' }); - const template = document.createElement('template'); - template.innerHTML = data; - this.shadowRoot.appendChild(template.content.cloneNode(true)) - } - }) - ) +fetch('assets/templates/my-footer.html') + .then(response => response.text()) + .then(data => customElements.define('my-footer', class extends HTMLElement { + constructor() { + super(); + this.attachShadow({ mode: 'open' }); + const template = document.createElement('template'); + template.innerHTML = data; + this.shadowRoot.appendChild(template.content.cloneNode(true)); + } + })); /** * @name sign-modal * @description a parallax mini section with a button to sign up */ -fetch("assets/templates/sign-modal.html") - .then(response => response.text()) - .then(data => - customElements.define("sign-modal", class extends HTMLElement { - constructor() { - super() - this.attachShadow({ mode: 'open' }); - const template = document.createElement('template'); - template.innerHTML = data; - this.shadowRoot.appendChild(template.content.cloneNode(true)); - - this.closeBtn = this.shadowRoot.querySelector('.close-btn'); - this.logInBtn = this.shadowRoot.querySelector('.show-login'); - this.signUpBtn = this.shadowRoot.querySelector('.show-signin'); - - // form submission buttons - this.signUpFormBtn = this.shadowRoot.querySelector('#signup-button'); - this.logInFormBtn = this.shadowRoot.querySelector('#login-button'); - - } - - connectedCallback() { - const body = document.body; - const signModal = document.querySelector('sign-modal'); - - this.closeBtn.addEventListener('click', (e) => { - e.preventDefault(); - body.setAttribute('class', ''); - }); - - this.logInBtn.addEventListener('click', (e) => { - e.preventDefault(); - signModal.setAttribute('class', 'show-login'); - }); - - this.signUpBtn.addEventListener('click', (e) => { - e.preventDefault(); - // window.location.href = './registeration.html' - signModal.setAttribute('class', 'show-signup'); - }); - - // controls what happens when the submit button on the sign up form is clicked - this.signUpFormBtn.addEventListener('click', (e) => { - e.preventDefault(); - window.location.href = 'profile.html'; - }); - // controls what happens when the submit button on the sign in form is clicked - this.logInFormBtn.addEventListener('click', (e) => { - e.preventDefault(); - console.log('a') - window.location.href = 'profile.html'; - }); - } +fetch('assets/templates/sign-modal.html') + .then(response => response.text()) + .then(data => customElements.define('sign-modal', class extends HTMLElement { + constructor() { + super(); + this.attachShadow({ mode: 'open' }); + const template = document.createElement('template'); + template.innerHTML = data; + this.shadowRoot.appendChild(template.content.cloneNode(true)); + + this.closeBtn = this.shadowRoot.querySelector('.close-btn'); + this.logInBtn = this.shadowRoot.querySelector('.show-login'); + this.signUpBtn = this.shadowRoot.querySelector('.show-signin'); + + // form submission buttons + this.signUpFormBtn = this.shadowRoot.querySelector('#signup-button'); + this.logInFormBtn = this.shadowRoot.querySelector('#login-button'); + } + + connectedCallback() { + const { body } = document; + const signModal = document.querySelector('sign-modal'); + + this.closeBtn.addEventListener('click', (e) => { + e.preventDefault(); + body.setAttribute('class', ''); + }); + + this.logInBtn.addEventListener('click', (e) => { + e.preventDefault(); + signModal.setAttribute('class', 'show-login'); + }); + + this.signUpBtn.addEventListener('click', (e) => { + e.preventDefault(); + // window.location.href = './registeration.html' + signModal.setAttribute('class', 'show-signup'); + }); + + // controls what happens when the submit button on the sign up form is clicked + this.signUpFormBtn.addEventListener('click', (e) => { + e.preventDefault(); + // const email = this.shadowRoot.querySelector('#email-signup').value; + // const password = this.shadowRoot.querySelector('#password-signup').value; + + // window.location.href = 'profile.html'; + }); + // controls what happens when the submit button on the sign in form is clicked + this.logInFormBtn.addEventListener('click', (e) => { + e.preventDefault(); + const email = this.shadowRoot.querySelector('#email-login').value; + const password = this.shadowRoot.querySelector('#password-login').value; + + $.post(`${ApiUrl}auth/signin`, { + email, + password, }) - ) + .done((response) => { + localStorage.setItem('user', JSON.stringify(response.data.user)); + localStorage.setItem('tokens', JSON.stringify(response.data.tokens)); + window.location.href = 'profile.html'; + }) + .fail((error) => { + this.shadowRoot.querySelector('#authErrorMSg').innerHTML = error.responseJSON.error; + this.shadowRoot.querySelector('#authErrorMSg').style = 'background: red; padding: 8px;'; + }); + }); + } + })); diff --git a/UI/assets/templates/sign-modal.html b/UI/assets/templates/sign-modal.html index 951f1ec..e97c37c 100755 --- a/UI/assets/templates/sign-modal.html +++ b/UI/assets/templates/sign-modal.html @@ -421,17 +421,17 @@

SIGN UP