· 8 years ago · Jan 02, 2018, 08:02 AM
1static processSignUpForm(req, res) {
2 let credentials = req.input.only('name', 'email', 'password');
3 Merchant.checkMerchantMail(credentials.email).then(result => {
4 MerchantSettings.find().then((settingsData) => {
5 if(result){
6 res.redirect(App.url.route('signup.show', {
7 email: credentials.email,
8 error_type: 'error',
9 message: 'This email is already registered with us.'
10 }))
11 }else {
12 App.hash.make(credentials.password, (err, hash) => {
13 let merchantObj = {
14 email: credentials.email,
15 password: hash,
16 name: credentials.name,
17 two_way_authentication: {
18 status: false,
19 backup_code: ''
20 },
21 live_keys: {
22 secret_key: keyGenerator.generate('live', 'secret'),
23 api_key: keyGenerator.generate('live', 'publishable')
24 },
25 sandbox_keys: {
26 secret_key: keyGenerator.generate('test', 'secret'),
27 api_key: keyGenerator.generate('test', 'publishable')
28 },
29 merchant_email_notification: {
30 successful_payment: false,
31 disputes: false,
32 payment_reviews: false,
33 admin_refunds: false
34 },
35 customer_email_notification: {
36 successful_payment: false,
37 refunds: false,
38 failed_payment: false
39 },
40 receipt_language: 'english',
41 mode: "Sandbox",
42 verify: true,
43 status: 'Enable',
44 settings: settingsData[0].settings
45 }
46
47 // Save
48 Merchant.create(merchantObj)
49 .then((mr) => {
50 let pwdArray = [bcrypt.hashSync(credentials.password, 5)]
51 return MerchantAPIkeys.createKeys(mr.id, App.locals.global.keySettings.app_namespace)
52 .then(api_keys => {
53 return PasswordHistory.create({
54 'merchant': mr.id,
55 'password': pwdArray,
56 'type': 'M',
57 'failures': 0,
58 'password_updated': Date(),
59 'failed_password_date': Date(),
60 'status': 1
61 }).then((pwd) => {
62 mr.pwd = pwd;
63 mr.api_keys = api_keys;
64 return mr.save();
65 })
66 });
67 })
68 .then(result => {
69 Merchant.addMerchantAfterAddTransfer(result.id).then(transfer => {
70 let emailContent = {
71 to: {
72 email: credentials.email,
73 name: credentials.name
74 },
75 subject: `Verify your ${App.config.get('settings').appName} account`,
76 link: App.url.route('verify', {
77 id: result.id
78 }),
79 content: "Hello user. Please Follow Instruction."
80 }
81
82 let sendGridEmail = require('./../helper/email');
83
84 sendGridEmail.sendSignUpVerification(emailContent).then(success => {
85 // res.redirect(App.url.route('login.show'))
86 res.redirect(App.url.route('signup.show', {
87 error_type: 'success',
88 message: "Please check your email to active account."
89 }))
90 }, error => {
91 res.redirect(App.url.route('signup.show', {
92 email: credentials.email,
93 error_type: 'error',
94 message: error.message
95 }))
96 })
97 })
98 })
99 .catch(err => console.log(err));
100 })
101 }
102 })
103 }, err => res.redirect(App.url.route('signup.show', {
104 email: credentials.email,
105 error_type: 'error',
106 message: 'This email is already registered with us.'
107 }))
108 )
109
110 }