mirror of
https://github.com/aljazceru/landscape-template.git
synced 2026-02-02 05:04:29 +01:00
change: re-fetch lnurl after delay
This commit is contained in:
@@ -9,10 +9,8 @@ const lnurlService = require('../../auth/services/lnurl.service');
|
||||
|
||||
|
||||
const isLoggedInHandler = async (req, res) => {
|
||||
// console.log(req.cookies);
|
||||
try {
|
||||
const login_session = req.cookies?.login_session;
|
||||
// console.log(login_session);
|
||||
if (login_session) {
|
||||
|
||||
const { payload } = await jose.jwtVerify(login_session, Buffer.from(JWT_SECRET), {
|
||||
@@ -38,8 +36,6 @@ const isLoggedInHandler = async (req, res) => {
|
||||
httpOnly: true,
|
||||
})
|
||||
.json({
|
||||
hash,
|
||||
token,
|
||||
logged_in: true
|
||||
});
|
||||
} else {
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
const { prisma } = require('../../prisma');
|
||||
const LnurlService = require('../../auth/services/lnurl.service')
|
||||
const serverless = require('serverless-http');
|
||||
const { getAuthTokenByHash, createHash, associateTokenToHash } = require('../../auth/services/lnurl.service');
|
||||
const { sessionsStore, createExpressApp } = require('../../modules');
|
||||
const { createHash, associateTokenToHash } = require('../../auth/services/lnurl.service');
|
||||
const { createExpressApp } = require('../../modules');
|
||||
const express = require('express');
|
||||
const jose = require('jose');
|
||||
const { JWT_SECRET } = require('../../utils/consts');
|
||||
|
||||
@@ -1,21 +1,11 @@
|
||||
const BOLT_FUN_LIGHTNING_ADDRESS = 'johns@getalby.com'; // #TODO, replace it by bolt-fun lightning address if there exist one
|
||||
const JWT_SECRET = process.env.JWT_SECRET;
|
||||
const LNURL_AUTH_HOST = process.env.LNURL_AUTH_HOST
|
||||
const SESSION_SECRET = process.env.SESSION_SECRET
|
||||
|
||||
const CORS_HEADERS = {
|
||||
'Access-Control-Allow-Origin': 'http://localhost:3000',
|
||||
'Access-Control-Allow-Headers': 'Content-Type',
|
||||
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE',
|
||||
'Access-Control-Allow-Credentials': true
|
||||
};
|
||||
|
||||
const CONSTS = {
|
||||
JWT_SECRET,
|
||||
BOLT_FUN_LIGHTNING_ADDRESS,
|
||||
LNURL_AUTH_HOST,
|
||||
CORS_HEADERS,
|
||||
SESSION_SECRET
|
||||
}
|
||||
|
||||
module.exports = CONSTS;
|
||||
@@ -10,7 +10,7 @@ import { IoQrCode } from "react-icons/io5";
|
||||
|
||||
|
||||
|
||||
const getLnurlAuth = async () => {
|
||||
const fetchLnurlAuth = async () => {
|
||||
const res = await fetch(CONSTS.apiEndpoint + '/login', {
|
||||
credentials: 'include'
|
||||
})
|
||||
@@ -18,15 +18,46 @@ const getLnurlAuth = async () => {
|
||||
return data;
|
||||
}
|
||||
|
||||
const useLnurlQuery = () => {
|
||||
const [loading, setLoading] = useState(true)
|
||||
const [error, setError] = useState<any>(null);
|
||||
const [data, setData] = useState("")
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
let timeOut: NodeJS.Timeout;
|
||||
const doFetch = async () => {
|
||||
const res = await fetchLnurlAuth();
|
||||
if (!res?.encoded)
|
||||
setError(true)
|
||||
else {
|
||||
setLoading(false);
|
||||
setData(res.encoded);
|
||||
timeOut = setTimeout(doFetch, 1000 * 60 * 2)
|
||||
}
|
||||
}
|
||||
doFetch()
|
||||
|
||||
return () => clearTimeout(timeOut)
|
||||
}, [])
|
||||
|
||||
return {
|
||||
loadingLnurl: loading,
|
||||
error,
|
||||
lnurlAuth: data
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export default function LoginPage() {
|
||||
const [loadingLnurl, setLoadingLnurl] = useState(true)
|
||||
const [showQr, setShowQr] = useState(false)
|
||||
const [lnurlAuth, setLnurlAuth] = useState("");
|
||||
const [isLoggedIn, setIsLoggedIn] = useState(false);
|
||||
const [error, setError] = useState<any>(null)
|
||||
const navigate = useNavigate()
|
||||
|
||||
const { loadingLnurl, lnurlAuth, error } = useLnurlQuery()
|
||||
console.log(lnurlAuth);
|
||||
|
||||
|
||||
const meQuery = useMeQuery({
|
||||
onCompleted: (data) => {
|
||||
@@ -41,23 +72,7 @@ export default function LoginPage() {
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
getLnurlAuth()
|
||||
.then(data => {
|
||||
setLoadingLnurl(false);
|
||||
setLnurlAuth(data.encoded);
|
||||
if (!data?.encoded)
|
||||
setError(true);
|
||||
})
|
||||
.catch((error) => {
|
||||
setError(error)
|
||||
})
|
||||
}, [])
|
||||
|
||||
const startPolling = () => {
|
||||
// meQuery.startPolling(3000)
|
||||
const interval = setInterval(() => {
|
||||
fetch(CONSTS.apiEndpoint + '/is-logged-in', {
|
||||
credentials: 'include'
|
||||
|
||||
Reference in New Issue
Block a user