qpa-client/functions/src/index.ts

100 lines
2.4 KiB
TypeScript
Raw Normal View History

2018-04-02 20:23:44 +02:00
import {parse} from 'url'
2018-05-04 19:53:16 +02:00
import UserManager from './user'
2018-05-05 19:50:45 +02:00
import {Request, Response} from 'express'
2018-05-04 19:53:16 +02:00
import SessionManager from './session'
import Repository from './repository'
import {projectId} from './config'
2018-05-01 16:38:11 +02:00
import {UserProperties} from "./types";
2018-04-02 20:23:44 +02:00
2018-05-04 19:53:16 +02:00
const repository = new Repository(projectId)
const userManager = new UserManager(repository)
const sessionManager = new SessionManager(repository)
2018-04-21 16:58:09 +02:00
export const isUserAvailable = async (req: Request, res: Response) => {
2018-04-02 20:23:44 +02:00
const params = parse(req.url, true).query
2018-05-04 19:53:16 +02:00
const user = await userManager.getUser({
2018-04-02 20:23:44 +02:00
email: params.email as string,
username: params.username as string
})
res.send({
exists: !!user
});
return true
2018-04-21 16:58:09 +02:00
}
2018-05-05 19:50:45 +02:00
const handleSignup = async (req: Request, res: Response) => {
2018-04-21 16:58:09 +02:00
const {username, email, name} = req.body
2018-05-01 16:38:11 +02:00
console.log('typeof req.body', typeof req.body)
console.log('req.body', req.body)
const userProperties: UserProperties = {username, email, name}
2018-04-21 16:58:09 +02:00
let newUser
2018-05-05 19:50:45 +02:00
const userKeys = {
username, email, name
}
2018-04-21 16:58:09 +02:00
try {
2018-05-09 20:52:01 +02:00
console.log(`Will try to create new user ${userKeys}`)
2018-05-05 19:50:45 +02:00
newUser = await userManager.createUser(userKeys)
2018-04-21 16:58:09 +02:00
} catch (e) {
2018-05-05 19:50:45 +02:00
console.error('Error creating new user', userKeys, e)
2018-04-21 16:58:09 +02:00
res.status(409)
res.send(e.message)
return
}
2018-05-10 08:05:56 +02:00
if (!newUser) {
2018-04-21 16:58:09 +02:00
res.status(409)
2018-05-01 16:38:11 +02:00
res.send(`Could not create user: ${JSON.stringify(userProperties)}`)
2018-04-21 16:58:09 +02:00
return
}
2018-05-10 08:05:56 +02:00
console.log('User created', JSON.stringify(newUser))
res.status(200)
res.send('User created. Invitation will be sent.')
try {
await sessionManager.inviteUser(newUser)
} catch (e) {
console.error('Error sending invitation', e)
}
2018-04-21 16:58:09 +02:00
}
2018-05-05 19:50:45 +02:00
export const signup = async (req: Request, res: Response) => {
try {
handleSignup(req, res)
} catch (e) {
console.error('Signup handle error', e)
2018-05-11 08:24:18 +02:00
res.send('Signup handle error')
throw e
}
}
const handleSignin = async (req: Request, res: Response) => {
const params = parse(req.url, true).query
console.log('Got sign in request with params', JSON.stringify(params))
sessionManager
}
export const signin = async (req: Request, res: Response) => {
try {
handleSignin(req, res)
} catch (e) {
console.error('Sign-in handle error', e)
res.send('Sign-in handle error')
res.status(500)
2018-05-05 19:50:45 +02:00
throw e
}
}
2018-04-21 16:58:09 +02:00
export const requestSessionInvite = async (req, res) => {
}
export const startSession = async (req, res) => {
2018-04-02 20:23:44 +02:00
}