Invite System
This commit is contained in:
		@@ -338,8 +338,13 @@ async function getDonePurchases(uid) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
async function verifyInvite(link, user_id) {
 | 
					async function verifyInvite(link, user_id) {
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        console.log("LIIINK: ", link);
 | 
				
			||||||
 | 
					        console.log("UID: ", user_id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        let result = await query('SELECT row_to_json("Shoppinglist") AS obj FROM "Shoppinglist" WHERE invitelink = $1;', [link]);
 | 
					        let result = await query('SELECT row_to_json("Shoppinglist") AS obj FROM "Shoppinglist" WHERE invitelink = $1;', [link]);
 | 
				
			||||||
        let sl_id = result[0].sl_id;
 | 
					        let sl_id = result[0].sl_id;
 | 
				
			||||||
 | 
					        console.log("!!! SL ID: ", sl_id);
 | 
				
			||||||
        await nonQuery('INSERT INTO "Shoppinglist_member" (username, sl_id) VALUES ($1, $2);', [user_id, sl_id]);
 | 
					        await nonQuery('INSERT INTO "Shoppinglist_member" (username, sl_id) VALUES ($1, $2);', [user_id, sl_id]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										47
									
								
								express-server/public/invite/inv.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								express-server/public/invite/inv.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,47 @@
 | 
				
			|||||||
 | 
					$(document).ready(function() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Initialize Firebase
 | 
				
			||||||
 | 
					var config = {
 | 
				
			||||||
 | 
					    apiKey: "AIzaSyCuvwf78cmSDoZ2yS4XxHZhnjUn7yIHYfw",
 | 
				
			||||||
 | 
					    authDomain: "test-667ca.firebaseapp.com",
 | 
				
			||||||
 | 
					    databaseURL: "https://test-667ca.firebaseio.com",
 | 
				
			||||||
 | 
					    projectId: "test-667ca",
 | 
				
			||||||
 | 
					    storageBucket: "test-667ca.appspot.com",
 | 
				
			||||||
 | 
					    messagingSenderId: "221332577314"
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  firebase.initializeApp(config);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  var segment_str = window.location.pathname; 
 | 
				
			||||||
 | 
					  var segment_array = segment_str.split( '/' );
 | 
				
			||||||
 | 
					  var last_segment = segment_array.pop();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  verifyInvite(last_segment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  function verifyInvite(link) {
 | 
				
			||||||
 | 
					      alert("Ore Link", link)
 | 
				
			||||||
 | 
					    firebase.auth().onAuthStateChanged(function(user){if(user){firebase.auth().currentUser.getIdToken(/* forceRefresh */ true).then(function(idtoken) {
 | 
				
			||||||
 | 
					        $.ajax({
 | 
				
			||||||
 | 
					            type: "POST",
 | 
				
			||||||
 | 
					            url: "/invitemember",
 | 
				
			||||||
 | 
					            data: {
 | 
				
			||||||
 | 
					                idtoken: idtoken,
 | 
				
			||||||
 | 
					                link: link
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            success(){
 | 
				
			||||||
 | 
					                window.location.href = "/dash/" + idtoken
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            error(err){
 | 
				
			||||||
 | 
					                console.error("Error: " + err);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }).catch((error) => console.error("Get id token client error: ", error));}else{console.log("Check Auth error", user)}});
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -130,21 +130,20 @@ router.get("/myshoppinglists",async function(req, res, next) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
router.get("/sharedshoppinglists", async function(req, res, next) {
 | 
					router.get("/sharedshoppinglists", async function(req, res, next) {
 | 
				
			||||||
  var token = req.query.idtoken;
 | 
					  var token = req.query.idtoken;
 | 
				
			||||||
  console.log("/sharedshoppinglists idtoken: ", token)
 | 
					 | 
				
			||||||
  var uid;
 | 
					 | 
				
			||||||
  firebaseAdmin.auth().verifyIdToken(token)
 | 
					  firebaseAdmin.auth().verifyIdToken(token)
 | 
				
			||||||
    .then(async function(decodedToken) {
 | 
					    .then(async function(decodedToken) {
 | 
				
			||||||
      uid = decodedToken.uid;
 | 
					      uid = decodedToken.uid;
 | 
				
			||||||
      console.log("UID: ", uid);
 | 
					      console.log("uid", uid)
 | 
				
			||||||
      try {
 | 
					      try {
 | 
				
			||||||
        //Get user id: das da oben
 | 
					        //Get user id: req.session.passport.user.profile.id
 | 
				
			||||||
        res.status(200).send(await postgres.getShoppinglistsShared(uid));
 | 
					        res.status(200).send(await postgres.getShoppinglistsShared(uid));
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
      catch(err) {
 | 
					      catch(err) {
 | 
				
			||||||
        res.status(400).send(await err);
 | 
					        res.status(400).send(await err);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }).catch( async function(error) {
 | 
					      
 | 
				
			||||||
 | 
					    }).catch(function(error) {
 | 
				
			||||||
      console.log(error)
 | 
					      console.log(error)
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -339,9 +338,29 @@ router.post("/maninvite", async (req, res) => {
 | 
				
			|||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
router.get("/invite/:invitelink", async (req, res) => {
 | 
					router.get("/invite/:invitelink", async (req, res) => {
 | 
				
			||||||
  res.status(200).render("invitelogin", {invitelink: req.params.invitelink});
 | 
					  res.status(200).render("invite");
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					router.post("/invitemember", (req, res) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  var token = req.body.idtoken;
 | 
				
			||||||
 | 
					  var uid;
 | 
				
			||||||
 | 
					  firebaseAdmin.auth().verifyIdToken(token)
 | 
				
			||||||
 | 
					    .then(async function(decodedToken) {
 | 
				
			||||||
 | 
					      uid = decodedToken.uid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      try {
 | 
				
			||||||
 | 
					        console.log("Route LInk inv", req.body.link);     
 | 
				
			||||||
 | 
					        res.status(200).send(await postgres.verifyInvite(req.body.link, uid));
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					      catch(err) {
 | 
				
			||||||
 | 
					        res.status(400).send(await err);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }).catch(function(error) {
 | 
				
			||||||
 | 
					      console.log(error)
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//Update User
 | 
					//Update User
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -441,4 +460,5 @@ router.post("/dones", async function(req, res, next) {
 | 
				
			|||||||
      console.log(error)
 | 
					      console.log(error)
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = router;
 | 
					module.exports = router;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										17
									
								
								express-server/views/invite.ejs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								express-server/views/invite.ejs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html lang="en">
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					    <meta charset="UTF-8">
 | 
				
			||||||
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
				
			||||||
 | 
					    <meta http-equiv="X-UA-Compatible" content="ie=edge">
 | 
				
			||||||
 | 
					    <title>Document</title>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <script src="https://www.gstatic.com/firebasejs/5.7.0/firebase.js"></script>
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
 | 
				
			||||||
 | 
					    <script src="/invite/inv.js"></script>
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					<body>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
		Reference in New Issue
	
	Block a user