Invite System
This commit is contained in:
		@@ -338,8 +338,13 @@ async function getDonePurchases(uid) {
 | 
			
		||||
 | 
			
		||||
async function verifyInvite(link, user_id) {
 | 
			
		||||
    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 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]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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,24 +130,23 @@ router.get("/myshoppinglists",async function(req, res, next) {
 | 
			
		||||
 | 
			
		||||
router.get("/sharedshoppinglists", async function(req, res, next) {
 | 
			
		||||
  var token = req.query.idtoken;
 | 
			
		||||
  console.log("/sharedshoppinglists idtoken: ", token)
 | 
			
		||||
  var uid;
 | 
			
		||||
  firebaseAdmin.auth().verifyIdToken(token)
 | 
			
		||||
    .then(async function(decodedToken) {
 | 
			
		||||
      uid = decodedToken.uid;
 | 
			
		||||
      console.log("UID: ", uid);
 | 
			
		||||
      console.log("uid", uid)
 | 
			
		||||
      try {
 | 
			
		||||
        //Get user id: das da oben
 | 
			
		||||
        //Get user id: req.session.passport.user.profile.id
 | 
			
		||||
        res.status(200).send(await postgres.getShoppinglistsShared(uid));
 | 
			
		||||
      }
 | 
			
		||||
    
 | 
			
		||||
      catch(err) {
 | 
			
		||||
        res.status(400).send(await err);
 | 
			
		||||
      }
 | 
			
		||||
    }).catch( async function(error) {
 | 
			
		||||
      
 | 
			
		||||
    }).catch(function(error) {
 | 
			
		||||
      console.log(error)
 | 
			
		||||
    });
 | 
			
		||||
  
 | 
			
		||||
    
 | 
			
		||||
      
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
@@ -339,9 +338,29 @@ router.post("/maninvite", 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
 | 
			
		||||
 | 
			
		||||
@@ -441,4 +460,5 @@ router.post("/dones", async function(req, res, next) {
 | 
			
		||||
      console.log(error)
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
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