File size: 3,035 Bytes
df72131
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
const user = require("../models/UserModel");
const account = require("../models/AuthenticationModel");
const md5 = require("md5");
const { v4: uuidv4 } = require('uuid');
const asyncHandeler = require("express-async-handler");
const { response } = require("express");
const TeamModel = require("../models/TeamModel");
const couponsModel = require("../models/CouponModel");
const LeaderboardModel = require("../models/LeaderboardModel");
const { connectTeamSocket } = require("../sockets/UserSockets");
const { updateLeaderBoard } = require("../sockets/LeaderBoardUpdated");

exports.login_get = asyncHandeler(async (req, res) => {
    console.log("login user detected");
    res.send("this is a handelled login route");
});

exports.login_post = asyncHandeler(async (req, res) => {
    var login = require("../middlewares/UserLoginMiddleware");
    //console.log(req.body)
    var resp = await login.attempt(req.body.username, req.body.password);
    if (resp != false) {
        var session_id = uuidv4();
        var acc = new account({
            UserID: resp._id,
            SessionID: session_id,
            TeamId: resp.TeamID,
            Status: 1
        });
        
        await account.findOneAndDelete({ UserID: resp._id });
        await acc.save();
        let users = await user.findOne({ _id: resp._id })
        //console.log(req.body.code)
        if(req.body.code)
        {
          //  console.log(await couponsModel.exists({ Code: req.body.code }))
            try {
                if(await couponsModel.exists({Coupon:req.body.code}))
                {
                var teamLeaderboard=await LeaderboardModel.findOne({ TeamID: resp.TeamID,Round:0 });
                if(teamLeaderboard.Points<=5)
                {
                    teamLeaderboard.Points+=5;
                    await couponsModel.findOneAndDelete({Coupon:req.body.code});
                    await teamLeaderboard.save();
                    res.cookie('SessionID', session_id, {
                        sameSite: 'None',
                        httponly: true, secure: true,// This should be used when serving over HTTPS
                    });
                    updateLeaderBoard(req)
                    res.send("You have been awarded 5 points for using a code");
                }
                else
                {
                    res.send("You have already exceeded the maximum points for using a code");
                }
              }
              else{
                    res.send("Invalid Hidden Code");
              }
            } catch (error) {
                res.send("Something went wrong")
                console.log(error)
            }  
        }
        else
        {
          
            res.cookie('SessionID', session_id, {
                sameSite: 'None',
                httponly: true, secure: true,// This should be used when serving over HTTPS
            });
            res.send("Login Successful");
        }
       
    }
    else
        res.send("Invalid Credentials");
});