fix referrer logic to work with lnauth/nostr auth
This commit is contained in:
		
							parent
							
								
									a764837776
								
							
						
					
					
						commit
						ffa86abdb3
					
				@ -51,6 +51,17 @@ function getCallbacks (req) {
 | 
				
			|||||||
        // token won't have an id on it for new logins, we add it
 | 
					        // token won't have an id on it for new logins, we add it
 | 
				
			||||||
        // note: token is what's kept in the jwt
 | 
					        // note: token is what's kept in the jwt
 | 
				
			||||||
        token.id = Number(user.id)
 | 
					        token.id = Number(user.id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // if referrer exists, set on user
 | 
				
			||||||
 | 
					        // isNewUser doesn't work for nostr/lightning auth because we create the user before nextauth can
 | 
				
			||||||
 | 
					        // this means users can update their referrer if they don't have one, which is fine
 | 
				
			||||||
 | 
					        if (req.cookies.sn_referrer && user?.id) {
 | 
				
			||||||
 | 
					          const referrer = await prisma.user.findUnique({ where: { name: req.cookies.sn_referrer } })
 | 
				
			||||||
 | 
					          if (referrer) {
 | 
				
			||||||
 | 
					            await prisma.user.updateMany({ where: { id: user.id, referrerId: null }, data: { referrerId: referrer.id } })
 | 
				
			||||||
 | 
					            notifyReferral(referrer.id)
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (token?.id) {
 | 
					      if (token?.id) {
 | 
				
			||||||
@ -60,33 +71,22 @@ function getCallbacks (req) {
 | 
				
			|||||||
        token.sub = Number(token.id)
 | 
					        token.sub = Number(token.id)
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (isNewUser) {
 | 
					      // sign them up for the newsletter
 | 
				
			||||||
        // if referrer exists, set on user
 | 
					      if (isNewUser && user?.email && process.env.LIST_MONK_URL && process.env.LIST_MONK_AUTH) {
 | 
				
			||||||
        if (req.cookies.sn_referrer && user?.id) {
 | 
					        fetch(process.env.LIST_MONK_URL + '/api/subscribers', {
 | 
				
			||||||
          const referrer = await prisma.user.findUnique({ where: { name: req.cookies.sn_referrer } })
 | 
					          method: 'POST',
 | 
				
			||||||
          if (referrer) {
 | 
					          headers: {
 | 
				
			||||||
            await prisma.user.update({ where: { id: user.id }, data: { referrerId: referrer.id } })
 | 
					            'Content-Type': 'application/json',
 | 
				
			||||||
            notifyReferral(referrer.id)
 | 
					            Authorization: 'Basic ' + Buffer.from(process.env.LIST_MONK_AUTH).toString('base64')
 | 
				
			||||||
          }
 | 
					          },
 | 
				
			||||||
        }
 | 
					          body: JSON.stringify({
 | 
				
			||||||
 | 
					            email: user.email,
 | 
				
			||||||
        // sign them up for the newsletter
 | 
					            name: 'blank',
 | 
				
			||||||
        if (user?.email && process.env.LIST_MONK_URL && process.env.LIST_MONK_AUTH) {
 | 
					            lists: [2],
 | 
				
			||||||
          fetch(process.env.LIST_MONK_URL + '/api/subscribers', {
 | 
					            status: 'enabled',
 | 
				
			||||||
            method: 'POST',
 | 
					            preconfirm_subscriptions: true
 | 
				
			||||||
            headers: {
 | 
					          })
 | 
				
			||||||
              'Content-Type': 'application/json',
 | 
					        }).then(async r => console.log(await r.json())).catch(console.log)
 | 
				
			||||||
              Authorization: 'Basic ' + Buffer.from(process.env.LIST_MONK_AUTH).toString('base64')
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            body: JSON.stringify({
 | 
					 | 
				
			||||||
              email: user.email,
 | 
					 | 
				
			||||||
              name: 'blank',
 | 
					 | 
				
			||||||
              lists: [2],
 | 
					 | 
				
			||||||
              status: 'enabled',
 | 
					 | 
				
			||||||
              preconfirm_subscriptions: true
 | 
					 | 
				
			||||||
            })
 | 
					 | 
				
			||||||
          }).then(async r => console.log(await r.json())).catch(console.log)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      return token
 | 
					      return token
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user