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
|
|
|
}
|