Skip to content
Permalink
Browse files
Moved Common Functions Into Module
  • Loading branch information
aa7401 committed Apr 11, 2020
1 parent 6362469 commit f3c5d373c3cd2cf7fe3aabd82f7c7dcacb900f90
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 62 deletions.
@@ -1,5 +1,5 @@

.DS-Store
.DS_Store
package-lock.json
*.db
node_modules/
@@ -0,0 +1,31 @@

export function generateToken(user, pass) {
const token = `${user}:${pass}`
const hash = btoa(token)
return `Basic ${hash}`
}

export async function login() {
if(!getCookie('authorization')) throw new Error('cookie not found')
const options = { headers: { Authorization: getCookie('authorization') } }
const response = await fetch('/login',options)
const status = response.status
console.log(`HTTP status code: ${status}`)
if(response.status === 401) throw new Error('status 401 NOT AUTHORIZED')
}

// from plainjs.com
export function setCookie(name, value, days) {
const d = new Date
d.setTime(d.getTime() + 24*60*60*1000*days)
document.cookie = `${name}=${value};path=/;expires=${d.toGMTString()}`
}

export function getCookie(name) {
const v = document.cookie.match(`(^|;) ?${name}=([^;]*)(;|$)`)
return v ? v[2] : null
}

export function deleteCookie(name) {
setCookie(name, '', -1)
}
@@ -1,4 +1,6 @@

import { getCookie, login } from '../core.js'

export async function setup() {
try {
await login()
@@ -8,23 +10,3 @@ export async function setup() {
window.location.href = '/#login'
}
}

async function login() {
if(!getCookie('authorization')) throw new Error('cookie not found')
const options = { headers: { Authorization: getCookie('authorization') } }
const response = await fetch('/login',options)
const status = response.status
console.log(`HTTP status code: ${status}`)
if(response.status === 401) throw new Error('status 401 NOT AUTHORIZED')
}

function setCookie(name, value, days) {
const d = new Date
d.setTime(d.getTime() + 24*60*60*1000*days)
document.cookie = `${name}=${value};path=/;expires=${d.toGMTString()}`
}

function getCookie(name) {
const v = document.cookie.match(`(^|;) ?${name}=([^;]*)(;|$)`)
return v ? v[2] : null
}
@@ -1,12 +1,18 @@

import { generateToken, getCookie, setCookie } from '../core.js'

export function setup() {
const cookie = getCookie('authorization')
if(getCookie('authorization')) {
console.log('authorised')
window.location.href = '/#home'
}
document.querySelector('h1').innerText = 'Log In'
document.querySelector('form').addEventListener('submit', async event => {
document.querySelector('form').addEventListener('submit', async event => await login(event))
}

async function login() {
try {
event.preventDefault()
const elements = [...document.forms['login'].elements]
const data = {}
@@ -21,31 +27,12 @@ export function setup() {
console.log(json)
const status = response.status
console.log(`HTTP status code: ${response.status}`)
if(response.status === 401) throw new Error(json.msg)
if(response.status === 200) {
setCookie('authorization', token, 1)
window.location.href = '#home'
}
})
}

function generateToken(user, pass) {
const token = `${user}:${pass}`
const hash = btoa(token)
return `Basic ${hash}`
}

// from plainjs.com
function setCookie(name, value, days) {
const d = new Date
d.setTime(d.getTime() + 24*60*60*1000*days)
document.cookie = `${name}=${value};path=/;expires=${d.toGMTString()}`
}

function getCookie(name) {
const v = document.cookie.match(`(^|;) ?${name}=([^;]*)(;|$)`)
return v ? v[2] : null
}

function deleteCookie(name) {
setCookie(name, '', -1)
}
} catch(err) {
console.log(err.message)
}
}
@@ -1,16 +1,7 @@

import { deleteCookie } from '../core.js'

export async function setup() {
deleteCookie('authorization')
window.location.href = '/#login'
}

// from plainjs.com
function setCookie(name, value, days) {
const d = new Date
d.setTime(d.getTime() + 24*60*60*1000*days)
document.cookie = `${name}=${value};path=/;expires=${d.toGMTString()}`
}

function deleteCookie(name) {
setCookie(name, '', -1)
}
@@ -1,16 +1,22 @@

export async function setup() {
document.querySelector('h1').innerText = 'Register a New Account'
document.querySelector('form').addEventListener('submit', async event => {
event.preventDefault()
document.querySelector('form').addEventListener('submit', await registerAccount)
}

async function registerAccount(event) {
event.preventDefault()
try {
const elements = [...document.forms['register'].elements]
const data = {}
elements.forEach( el => { if(el.name) data[el.name] = el.value })
console.log(data)
const options = { method: 'post', body: JSON.stringify(data) }
const response = await fetch('/register',options)
const json = await response.json()
const status = response.status
if(status === 201) window.location.href = '/#login'
})
if(response.status === 422) throw new Error('422 Unprocessable Entity')
window.location.href = '/#login'
} catch(err) {
console.log(err.message)
}
}

0 comments on commit f3c5d37

Please sign in to comment.