Currency work and token validation

This commit is contained in:
Thastertyn 2025-04-18 13:14:46 +02:00
parent cbb799f879
commit cd9f68dfc9
9 changed files with 6371 additions and 1 deletions

261
currency_names.txt Normal file
View File

@ -0,0 +1,261 @@
"Abkhazian apsar[E]",
"₽",
"Afghan afghani",
"Euro",
"Albanian lek",
"Algerian dinar",
"Euro",
"Angolan kwanza",
"Eastern Caribbean dollar",
"Eastern Caribbean dollar",
"Argentine peso",
"Armenian dram",
"Aruban florin",
"Saint Helena pound",
"Australian dollar",
"Euro",
"Azerbaijani manat",
"Bahamian dollar",
"Bahraini dinar",
"Bangladeshi taka",
"Barbadian dollar",
"Belarusian ruble",
"Euro",
"Belize dollar",
"West African CFA franc",
"Bermudian dollar",
"Bhutanese ngultrum[F]",
"₹",
"Bolivian boliviano",
"United States dollar[G]",
"Bosnia and Herzegovina convertible mark",
"Botswana pula",
"Brazilian real",
"Sterling",
"United States dollar",
"Brunei dollar",
"$",
"Bulgarian lev",
"West African CFA franc",
"Burundian franc",
"Cambodian riel",
"Central African CFA franc",
"Canadian dollar",
"Cape Verdean escudo",
"Cayman Islands dollar",
"Central African CFA franc",
"Central African CFA franc",
"Chilean peso",
"Renminbi",
"Colombian peso",
"Comorian franc",
"Congolese franc",
"Central African CFA franc",
"Cook Islands dollar",
"$",
"Costa Rican colón",
"West African CFA franc",
"Euro",
"Cuban peso",
"Netherlands Antillean guilder",
"Euro",
"Czech koruna",
"Danish krone",
"Djiboutian franc",
"Eastern Caribbean dollar",
"Dominican peso",
"United States dollar",
"Egyptian pound",
"United States dollar",
"Central African CFA franc",
"Eritrean nakfa",
"Euro",
"Swazi lilangeni",
"R",
"Ethiopian birr",
"Falkland Islands pound",
"£",
"Danish krone",
"kr",
"Fijian dollar",
"Euro",
"Euro",
"CFP franc",
"Central African CFA franc",
"Gambian dalasi",
"Georgian lari",
"Euro",
"Ghanaian cedi",
"Gibraltar pound",
"£",
"Euro",
"Danish krone",
"Eastern Caribbean dollar",
"Guatemalan quetzal",
"Guernsey pound",
"£",
"Guinean franc",
"West African CFA franc",
"Guyanese dollar",
"Haitian gourde",
"Honduran lempira",
"Hong Kong dollar",
"Hungarian forint",
"Icelandic króna",
"Indian rupee",
"Indonesian rupiah",
"Iranian rial",
"Iraqi dinar",
"Euro",
"Manx pound",
"£",
"Israeli new shekel",
"Euro",
"Jamaican dollar",
"Japanese yen",
"Jersey pound",
"£",
"Jordanian dinar",
"Kazakhstani tenge",
"Kenyan shilling",
"Kiribati dollar[E]",
"$",
"North Korean won",
"South Korean won",
"Euro",
"Kuwaiti dinar",
"Kyrgyz som",
"Lao kip",
"Euro",
"Lebanese pound",
"Lesotho loti",
"R",
"Falkland Islands pound",
"£",
"Liberian dollar",
"$",
"Libyan dinar",
"Swiss franc",
"Euro",
"Euro",
"Macanese pataca",
"Malagasy ariary",
"Malawian kwacha",
"Malaysian ringgit",
"Maldivian rufiyaa",
"West African CFA franc",
"Euro",
"United States dollar",
"Mauritanian ouguiya",
"Mauritian rupee",
"Mexican peso",
"United States dollar",
"Moldovan leu",
"Euro",
"Mongolian tögrög",
"Euro",
"Eastern Caribbean dollar",
"Moroccan dirham",
"Mozambican metical",
"Burmese kyat",
"Namibian dollar",
"R",
"Australian dollar",
"Nepalese rupee",
"Euro",
"CFP franc",
"New Zealand dollar",
"Nicaraguan córdoba",
"West African CFA franc",
"Nigerian naira",
"New Zealand dollar",
"$",
"Macedonian denar",
"Turkish lira",
"Norwegian krone",
"Omani rial",
"Pakistani rupee",
"United States dollar",
"Israeli new shekel",
"LE",
"JD",
"Panamanian balboa",
"$",
"Papua New Guinean kina",
"Paraguayan guaraní",
"Peruvian sol",
"Philippine peso",
"New Zealand dollar",
"$",
"Polish złoty",
"Euro",
"Qatari riyal",
"Romanian leu",
"Russian ruble",
"Rwandan franc",
"United States dollar[G]",
"Moroccan dirham",
"Pta or Pts (pl.)",
"Saint Helena pound",
"£",
"Eastern Caribbean dollar",
"Eastern Caribbean dollar",
"Eastern Caribbean dollar",
"Samoan tālā",
"Euro",
"São Tomé and Príncipe dobra",
"Saudi riyal",
"West African CFA franc",
"Serbian dinar",
"Seychellois rupee",
"Sierra Leonean leone",
"Singapore dollar",
"$",
"United States dollar[G]",
"Netherlands Antillean guilder",
"Euro",
"Euro",
"Solomon Islands dollar",
"Somali shilling",
"Somaliland shilling",
"South African rand",
"Russian ruble",
"South Sudanese pound",
"Euro",
"Sri Lankan rupee",
"Sudanese pound",
"Surinamese dollar",
"Swedish krona",
"Swiss franc",
"Syrian pound",
"New Taiwan dollar",
"Tajikistani somoni",
"Tanzanian shilling",
"Thai baht",
"United States dollar",
"West African CFA franc",
"Tongan paʻanga[O]",
"Transnistrian ruble",
"Trinidad and Tobago dollar",
"Tunisian dinar",
"Turkish lira",
"Turkmenistani manat",
"United States dollar",
"Tuvaluan dollar",
"$",
"Ugandan shilling",
"Ukrainian hryvnia",
"United Arab Emirates dirham",
"Sterling",
"United States dollar",
"Uruguayan peso",
"Uzbekistani sum",
"Vanuatu vatu",
"Euro",
"Venezuelan sovereign bolívar",
"Bs.D",
"Vietnamese đồng",
"CFP franc",
"Yemeni rial",
"Zambian kwacha",
"Zimbabwe gold",

156
currency_names_new.txt Normal file
View File

@ -0,0 +1,156 @@
"Afghan afghani",
"Albanian lek",
"Algerian dinar",
"Angolan kwanza",
"Argentine peso",
"Armenian dram",
"Aruban florin",
"Australian dollar",
"Azerbaijani manat",
"Bahamian dollar",
"Bahraini dinar",
"Bangladeshi taka",
"Barbadian dollar",
"Belarusian ruble",
"Belize dollar",
"Bermudian dollar",
"Bhutanese ngultrum[F]",
"Bolivian boliviano",
"Bosnia and Herzegovina convertible mark",
"Botswana pula",
"Brazilian real",
"Brunei dollar",
"Bulgarian lev",
"Burmese kyat",
"Burundian franc",
"Cambodian riel",
"Canadian dollar",
"Cape Verdean escudo",
"Cayman Islands dollar",
"Central African CFA franc",
"CFP franc",
"Colombian peso",
"Comorian franc",
"Congolese franc",
"Costa Rican colón",
"Cuban peso",
"Czech koruna",
"Danish krone",
"Djiboutian franc",
"Dominican peso",
"Eastern Caribbean dollar",
"Egyptian pound",
"Eritrean nakfa",
"Ethiopian birr",
"Euro",
"Falkland Islands pound",
"Fijian dollar",
"Gambian dalasi",
"Georgian lari",
"Ghanaian cedi",
"Gibraltar pound",
"Guatemalan quetzal",
"Guinean franc",
"Guyanese dollar",
"Haitian gourde",
"Honduran lempira",
"Hong Kong dollar",
"Hungarian forint",
"Chilean peso",
"Icelandic króna",
"Indian rupee",
"Indonesian rupiah",
"Iranian rial",
"Iraqi dinar",
"Israeli new shekel",
"Jamaican dollar",
"Japanese yen",
"Jordanian dinar",
"Kazakhstani tenge",
"Kenyan shilling",
"Kuwaiti dinar",
"Kyrgyz som",
"Lao kip",
"Lebanese pound",
"Lesotho loti",
"Liberian dollar",
"Libyan dinar",
"Macanese pataca",
"Macedonian denar",
"Malagasy ariary",
"Malawian kwacha",
"Malaysian ringgit",
"Maldivian rufiyaa",
"Mauritanian ouguiya",
"Mauritian rupee",
"Mexican peso",
"Moldovan leu",
"Mongolian tögrög",
"Moroccan dirham",
"Mozambican metical",
"Namibian dollar",
"Nepalese rupee",
"Netherlands Antillean guilder",
"New Taiwan dollar",
"New Zealand dollar",
"Nicaraguan córdoba",
"Nigerian naira",
"North Korean won",
"Norwegian krone",
"Omani rial",
"Pakistani rupee",
"Panamanian balboa",
"Papua New Guinean kina",
"Paraguayan guaraní",
"Peruvian sol",
"Philippine peso",
"Polish złoty",
"Qatari riyal",
"Renminbi",
"Romanian leu",
"Russian ruble",
"Rwandan franc",
"Saint Helena pound",
"Samoan tālā",
"São Tomé and Príncipe dobra",
"Saudi riyal",
"Serbian dinar",
"Seychellois rupee",
"Sierra Leonean leone",
"Singapore dollar",
"Solomon Islands dollar",
"Somali shilling",
"South African rand",
"South Korean won",
"South Sudanese pound",
"Sri Lankan rupee",
"Sterling",
"Sudanese pound",
"Surinamese dollar",
"Swazi lilangeni",
"Swedish krona",
"Swiss franc",
"Syrian pound",
"Tajikistani somoni",
"Tanzanian shilling",
"Thai baht",
"Tongan paʻanga[O]",
"Trinidad and Tobago dollar",
"Tunisian dinar",
"Turkish lira",
"Turkmenistani manat",
"Tuvaluan dollar",
"Ugandan shilling",
"Ukrainian hryvnia",
"United Arab Emirates dirham",
"United States dollar",
"United States dollar[G]",
"Uruguayan peso",
"Uzbekistani sum",
"Vanuatu vatu",
"Venezuelan sovereign bolívar",
"Vietnamese đồng",
"West African CFA franc",
"Yemeni rial",
"Zambian kwacha",
"Zimbabwe gold",

0
frontend/currencies.txt Normal file
View File

View File

@ -36,7 +36,7 @@
"@radix-ui/react-tooltip": "^1.1.4", "@radix-ui/react-tooltip": "^1.1.4",
"@radix-ui/react-visually-hidden": "^1.1.0", "@radix-ui/react-visually-hidden": "^1.1.0",
"@tabler/icons-react": "^3.24.0", "@tabler/icons-react": "^3.24.0",
"@tanstack/react-query": "^5.62.3", "@tanstack/react-query": "^5.72.2",
"@tanstack/react-router": "^1.86.1", "@tanstack/react-router": "^1.86.1",
"@tanstack/react-table": "^8.20.5", "@tanstack/react-table": "^8.20.5",
"@vitejs/plugin-react": "^4.3.4", "@vitejs/plugin-react": "^4.3.4",
@ -46,6 +46,7 @@
"cmdk": "^1.0.4", "cmdk": "^1.0.4",
"date-fns": "^3.6.0", "date-fns": "^3.6.0",
"js-cookie": "^3.0.5", "js-cookie": "^3.0.5",
"jwt-decode": "^4.0.0",
"lucide-react": "^0.475.0", "lucide-react": "^0.475.0",
"react": "^19.0.0", "react": "^19.0.0",
"react-day-picker": "^9.6.0", "react-day-picker": "^9.6.0",

5770
frontend/pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,157 @@
const currencies = [
"AED",
"AFN",
"ALL",
"AMD",
"ANG",
"AOA",
"ARS",
"AUD",
"AWG",
"AZN",
"BAM",
"BBD",
"BDT",
"BGN",
"BHD",
"BIF",
"BMD",
"BND",
"BOB",
"BRL",
"BSD",
"BTN",
"BWP",
"BYN",
"BZD",
"CAD",
"CDF",
"CLP",
"CNY",
"COP",
"CRC",
"CUP",
"CVE",
"CZK",
"DJF",
"DKK",
"DOP",
"DZD",
"EGP",
"ERN",
"ETB",
"EUR",
"FJD",
"FKP",
"GBP",
"GEL",
"GHS",
"GIP",
"GMD",
"GNF",
"GTQ",
"GYD",
"HKD",
"HNL",
"HTG",
"HUF",
"CHF",
"IDR",
"ILS",
"INR",
"IQD",
"IRR",
"ISK",
"JMD",
"JOD",
"JPY",
"KES",
"KGS",
"KHR",
"KMF",
"KPW",
"KRW",
"KWD",
"KYD",
"KZT",
"LAK",
"LBP",
"LKR",
"LRD",
"LSL",
"LYD",
"MAD",
"MDL",
"MGA",
"MKD",
"MMK",
"MNT",
"MOP",
"MRU",
"MUR",
"MVR",
"MWK",
"MXN",
"MYR",
"MZN",
"NAD",
"NGN",
"NIO",
"NOK",
"NPR",
"NZD",
"OMR",
"PAB",
"PEN",
"PGK",
"PHP",
"PKR",
"PLN",
"PYG",
"QAR",
"RON",
"RSD",
"RUB",
"RWF",
"SAR",
"SBD",
"SCR",
"SDG",
"SEK",
"SGD",
"SHP",
"SLE",
"SOS",
"SRD",
"SSP",
"STN",
"SYP",
"SZL",
"THB",
"TJS",
"TMT",
"TND",
"TOP",
"TRY",
"TTD",
"TWD",
"TZS",
"UAH",
"UGX",
"USD",
"UYU",
"UZS",
"VED",
"VES",
"VND",
"VUV",
"WST",
"XAF",
"XCD",
"XOF",
"XPF",
"YER",
"ZAR",
"ZMW",
"ZWG"
];

View File

@ -24,6 +24,7 @@ const useAuth = () => {
const [loggedIn, setLoggedIn] = useState(isLoggedIn()); const [loggedIn, setLoggedIn] = useState(isLoggedIn());
const navigate = useNavigate(); const navigate = useNavigate();
const queryClient = useQueryClient(); const queryClient = useQueryClient();
const { data: user } = useQuery<UserPublic | null, Error>({ const { data: user } = useQuery<UserPublic | null, Error>({
queryKey: ["currentUser"], queryKey: ["currentUser"],
queryFn: DashboardService.userGetUser, queryFn: DashboardService.userGetUser,
@ -73,6 +74,17 @@ const useAuth = () => {
onError: (err: ApiError) => handleServerError(err) onError: (err: ApiError) => handleServerError(err)
}); });
useEffect(() => {
console.log("Checking whether the token is valid");
const userLoggedInAndNull = loggedIn && user === null;
const tokenExistsAndNull = Boolean(localStorage.getItem("access_token")) && user === null;
if (userLoggedInAndNull || tokenExistsAndNull) {
console.warn("User data is null while logged in, logging out.");
logout();
}
}, [loggedIn, user]);
useEffect(() => { useEffect(() => {
const handleStorageChange = (event: StorageEvent) => { const handleStorageChange = (event: StorageEvent) => {
if (event.key === "access_token") { if (event.key === "access_token") {

View File

View File

@ -0,0 +1,13 @@
import jwt_decode from "jwt-decode";
export function isTokenValid(token: string | null): boolean {
if (!token) return false;
try {
const decoded: { exp: number } = jwt_decode(token);
const now = Date.now() / 1000;
return decoded.exp > now;
} catch (e) {
console.warn("Invalid token format:", e);
return false;
}
}