Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { models } from '../../db'
- import bcrypt from 'bcrypt'
- import { isEmpty } from '../util/validation'
- import createSubscription from '../subscription/createSubscription'
- import findUserByEmail from '../../db/queries/user/findUserByEmail'
- import sendRegistrationEmail from '../mail/sendRegistrationEmail'
- import generateVerificationToken from '../auth/generateVerificationToken'
- import generateAuthenticationToken from '../auth/generateAuthenticationToken'
- export default async (email: String, password: String, planId: String): Object => {
- // Validate user data
- if(isEmpty(email) || isEmpty(password)){
- throw "Email or password invalid"
- }
- // if(isEmpty(planId)) {
- // return reject("No package selected")
- // }
- if(await findUserByEmail(email) !== null) {
- throw "Email address already taken"
- }
- // Save user
- const user = await models.User.build({
- email: email,
- password: await bcrypt.hash(password, 10)
- }).save()
- // // Add subscription
- // try {
- // const subscription = await createSubscription(user, planId)
- // } catch (error) {
- // reject(error)
- // }
- //Add verificationToken to verify Email
- const verificationToken = await generateVerificationToken(user)
- await sendRegistrationEmail(user, verificationToken)
- // Log in the user
- const authenticationToken = await generateAuthenticationToken(user)
- return {
- authenticationToken,
- user
- }
- }
Add Comment
Please, Sign In to add comment