return (
error instanceof Problem ?
error :
- new Problem('Bad request', error.message, 400)
+ new Problem('Bad request', (error.stack || error.message), 400)
)
}
}
await session.set('expires', expires.getTime())
env.response.setHeader(
'Set-Cookie',
- `session_key=${env.session_key}; expires=${expires.toUTCString()}; path=/;`
+ `session_key=${env.session_key}; expires=${expires.toUTCString()}; path=/; httponly;`
)
await transaction.commit()
script(src="/js/api_call.js") {}
script {
- let api_account_sign_in = async (...args) => api_call(
- '/api/account/sign_in.json',
- ...args
- )
- let api_account_sign_out = async (...args) => api_call(
- '/api/account/sign_out.json',
- ...args
- )
- let api_feedback = async (...args) => api_call(
- '/api/feedback.json',
- ...args
- )
-
// this function can be overridden in a further script
function sign_in_out(status) {
}
let email
try {
email = document.getElementById('sign-in-email').value.slice(0, 256).toLowerCase()
- await api_account_sign_in(
+ await api_call(
+ '/api/account/sign_in.json',
email,
document.getElementById('sign-in-password').value.slice(0, 256)
)
}
catch (error) {
- let problem =
- error instanceof Problem ?
- error :
- new Problem(
- // title
- 'Bad request',
- // details
- (error.stack || error.message).toString()
- // status
- 400
- )
+ let problem = Problem.from(error)
if (problem.title === 'Email not yet verified') {
location.href = `/my_account/send_verification_email?email=${encodeURIComponent(email)}`
'click',
async () => {
try {
- await api_account_sign_out()
+ await api_call(
+ '/api/account/sign_out.json'
+ )
}
catch (error) {
- let problem =
- error instanceof Problem ?
- error :
- new Problem(
- // title
- 'Bad request',
- // details
- (error.stack || error.message).toString()
- // status
- 400
- )
+ let problem = Problem.from(error)
document.getElementById('message-modal-message').textContent = problem.detail
$('#sign-in-modal').modal('hide')
'click',
async () => {
try {
- await api_feedback(
+ await api_call(
+ '/api/feedback.json',
location.href,
document.getElementById('feedback-message').value.slice(0, 65536)
)
}
catch (error) {
- let problem =
- error instanceof Problem ?
- error :
- new Problem(
- // title
- 'Bad request',
- // details
- (error.stack || error.message).toString()
- // status
- 400
- )
+ let problem = Problem.from(error)
document.getElementById('message-modal-message').textContent = problem.detail
$('#feedback-modal').modal('hide')
//script(src="/js/api_call.js") {}
script {
- //let api_contact_get_draft = async (...args) => api_call(
- // '/api/contact/get_draft.json',
- // ...args
- //)
- let api_contact_set_draft = async (...args) => api_call(
- '/api/contact/set_draft.json',
- ...args
- )
- let api_contact_send_enquiry = async (...args) => api_call(
- '/api/contact/send_enquiry.json',
- ...args
- )
-
let draft_timeout_running = false
let draft_timeout_handler = async () => {
draft_timeout_running = false
- await api_contact_set_draft(
+ await api_call(
+ '/api/contact/set_draft.json',
{
given_names: document.getElementById('given-names').value.slice(0, 256),
family_name: document.getElementById('family-name').value.slice(0, 256),
message: document.getElementById('message').value.slice(0, 65536)
}
)
- //console.log('draft', await api_contact_get_draft())
+ //console.log('draft', await api_call('/api/contact/get_draft.json'))
}
let draft_change_handler = () => {
if (!draft_timeout_running) {
document.getElementById('step-2').scrollIntoView()
try {
- await api_contact_send_enquiry(details)
+ await api_call(
+ '/api/contact/send_enquiry.json',
+ details
+ )
}
catch (error) {
- let problem =
- error instanceof Problem ?
- error :
- new Problem(
- // title
- 'Bad request',
- // detail
- (error.stack || error.message).toString()
- // status
- 400
- )
+ let problem = Problem.from(error)
$('#step-2-tick').hide()
$('#step-2-cross').show()
this.detail = detail
this.status = status
}
+
+ static from(error) {
+ return (
+ error instanceof Problem ?
+ error :
+ new Problem('Bad request', (error.stack || error.message), 400)
+ )
+ }
}
api_call = async (endpoint, ...args) => {
//script(src="/js/api_call.js") {}
script {
- let api_account_change_details_get = async (...args) => api_call(
- '/api/account/change_details/get.json',
- ...args
- )
- let api_account_change_details_set = async (...args) => api_call(
- '/api/account/change_details/set.json',
- ...args
- )
- //let api_account_change_details_get_draft = async (...args) => api_call(
- // '/api/account/change_details/get_draft.json',
- // ...args
- //)
- let api_account_change_details_set_draft = async (...args) => api_call(
- '/api/account/change_details/set_draft.json',
- ...args
- )
- let api_account_change_password = async (...args) => api_call(
- '/api/account/change_password.json',
- ...args
- )
-
let step_1_dirty = ${JSON.stringify(draft_details !== null)}
let draft_timeout_running = false
let draft_timeout_handler = async () => {
draft_timeout_running = false
- await api_account_change_details_set_draft(
+ await api_call(
+ '/api/account/change_details/set_draft.json',
step_1_dirty ?
{
given_names: document.getElementById('given-names').value.slice(0, 256),
} :
null
)
- //console.log('draft', await api_account_change_details_get_draft())
+ //console.log('draft', await api_call('/api/account/change_details/get_draft.json'))
}
document.addEventListener(
let details
try {
- details = await api_account_change_details_get()
+ details = await api_call(
+ '/api/account/change_details/get.json'
+ )
}
catch (error) {
- let problem =
- error instanceof Problem ?
- error :
- new Problem(
- // title
- 'Bad request',
- // detail
- (error.stack || error.message).toString()
- // status
- 400
- )
+ let problem = Problem.from(error)
console.log(problem.detail)
$('#step-1-tick').hide()
$('#step-1-spinner').show()
try {
- await api_account_change_details_set(
+ await api_call(
+ '/api/account/change_details/set.json',
{
given_names: document.getElementById('given-names').value.slice(0, 256),
family_name: document.getElementById('family-name').value.slice(0, 256),
)
}
catch (error) {
- let problem =
- error instanceof Problem ?
- error :
- new Problem(
- // title
- 'Bad request',
- // detail
- (error.stack || error.message).toString()
- // status
- 400
- )
+ let problem = Problem.from(error)
console.log(problem.detail)
$('#step-1-tick').hide()
$('#step-2-spinner').show()
try {
- await api_account_change_password(
- // old_password
+ await api_call(
+ '/api/account/change_password.json',
document.getElementById('old-password').value.slice(0, 256),
- // new_password
document.getElementById('new-password').value.slice(0, 256)
)
}
catch (error) {
- let problem =
- error instanceof Problem ?
- error :
- new Problem(
- // title
- 'Bad request',
- // detail
- (error.stack || error.message).toString()
- // status
- 400
- )
+ let problem = Problem.from(error)
console.log(problem.detail)
$('#step-2-tick').hide()
//script(src="/js/api_call.js") {}
script {
- let api_account_password_reset = async (...args) => api_call(
- '/api/account/password_reset.json',
- ...args
- )
-
let step_1 = async () => {
if (
!document.getElementById('email').reportValidity() ||
let email
try {
email = document.getElementById('email').value.slice(0, 256).toLowerCase()
- await api_account_password_reset(
+ await api_call(
+ '/api/account/password_reset.json',
email,
document.getElementById('password').value.slice(0, 256)
)
}
catch (error) {
- let problem =
- error instanceof Problem ?
- error :
- new Problem(
- // title
- 'Bad request',
- // details
- (error.stack || error.message).toString()
- // status
- 400
- )
+ let problem = Problem.from(error)
$('#step-2-tick').hide()
$('#step-2-cross').show()
//script(src="/js/api_call.js") {}
script {
- let api_account_sign_up_send_email_verification_link = async (...args) => api_call(
- '/api/account/sign_up/send_email_verification_link.json',
- ...args
- )
-
let step_1 = async () => {
if (!document.getElementById('email').reportValidity()) {
$('#step-1-tick').hide()
let email
try {
email = document.getElementById('email').value.slice(0, 256).toLowerCase()
- await api_account_sign_up_send_email_verification_link(email)
+ await api_call(
+ '/api/account/sign_up/send_email_verification_link.json',
+ email
+ )
}
catch (error) {
- let problem =
- error instanceof Problem ?
- error :
- new Problem(
- // title
- 'Bad request',
- // details
- (error.stack || error.message).toString()
- // status
- 400
- )
+ let problem = Problem.from(error)
$('#step-2-tick').hide()
$('#step-2-cross').show()
//script(src="/js/api_call.js") {}
script {
- let api_account_sign_up_create_account = async (...args) => api_call(
- '/api/account/sign_up/create_account.json',
- ...args
- )
- //let api_account_sign_up_get_draft = async (...args) => api_call(
- // '/api/account/sign_up/get_draft.json',
- // ...args
- //)
- let api_account_sign_up_set_draft = async (...args) => api_call(
- '/api/account/sign_up/set_draft.json',
- ...args
- )
- let api_account_sign_up_send_email_verification_link = async (...args) => api_call(
- '/api/account/sign_up/send_email_verification_link.json',
- ...args
- )
-
let draft_timeout_running = false
let draft_timeout_handler = async () => {
draft_timeout_running = false
- await api_account_sign_up_set_draft(
+ await api_call(
+ '/api/account/sign_up/set_draft.json',
{
email: document.getElementById('email').value.slice(0, 256).toLowerCase(),
given_names: document.getElementById('given-names').value.slice(0, 256),
contact_me: document.getElementById('contact-me').checked ? true : false
}
)
- //console.log('draft', await api_account_sign_up_get_draft())
+ //console.log('draft', await api_call('/api/account/sign_up/get_draft.json'))
}
let draft_change_handler = () => {
if (!draft_timeout_running) {
document.getElementById('step-2').scrollIntoView()
try {
- await api_account_sign_up_create_account(
- // verification_code
+ await api_call(
+ '/api/account/sign_up/create_account.json',
document.getElementById('verification-code').value.slice(0, 6).toLowerCase(),
- // details
details
)
}
catch (error) {
- let problem =
- error instanceof Problem ?
- error :
- new Problem(
- // title
- 'Bad request',
- // detail
- (error.stack || error.message).toString()
- // status
- 400
- )
+ let problem = Problem.from(error)
$('#step-2-tick').hide()
$('#step-2-cross').show()
document.getElementById('step-3').scrollIntoView()
try {
- await api_account_sign_up_send_email_verification_link(details.email)
+ await api_call(
+ '/api/account/sign_up/send_email_verification_link.json',
+ details.email
+ )
}
catch (error) {
- let problem =
- error instanceof Problem ?
- error :
- new Problem(
- // title
- 'Bad request',
- // detail
- (error.stack || error.message).toString()
- // status
- 400
- )
+ let problem = Problem.from(error)
$('#step-3-tick').hide()
$('#step-3-cross').show()
//script(src="/js/api_call.js") {}
script {
- let api_account_sign_up_verify_email = async (...args) => api_call(
- '/api/account/sign_up/verify_email.json',
- ...args
- )
-
let step_1 = async () => {
if (
!document.getElementById('email').reportValidity() ||
let email
try {
email = document.getElementById('email').value.slice(0, 256).toLowerCase()
- await api_account_sign_up_verify_email(
- // email
+ await api_call(
+ '/api/account/sign_up/verify_email.json',
email,
- // link_code
document.getElementById('link-code').value.slice(0, 32).toLowerCase()
)
}
catch (error) {
- let problem =
- error instanceof Problem ?
- error :
- new Problem(
- // title
- 'Bad request',
- // details
- (error.stack || error.message).toString()
- // status
- 400
- )
+ let problem = Problem.from(error)
$('#step-2-tick').hide()
$('#step-2-cross').show()
//script(src="/js/api_call.js") {}
script {
- let api_account_verify_password = async (...args) => api_call(
- '/api/account/verify_password.json',
- ...args
- )
-
let step_1 = async () => {
if (
!document.getElementById('email').reportValidity() ||
let email
try {
email = document.getElementById('email').value.slice(0, 256).toLowerCase()
- await api_account_verify_password(
- // email
+ await api_call(
+ '/api/account/verify_password.json',
email,
- // link_code
document.getElementById('link-code').value.slice(0, 32).toLowerCase()
)
}
catch (error) {
- let problem =
- error instanceof Problem ?
- error :
- new Problem(
- // title
- 'Bad request',
- // details
- (error.stack || error.message).toString()
- // status
- 400
- )
+ let problem = Problem.from(error)
$('#step-2-tick').hide()
$('#step-2-cross').show()