mirror of
https://github.com/AustinKelsay/plebdevs.git
synced 2025-06-06 18:31:00 +00:00
Fix auth bg
This commit is contained in:
parent
6872d77d01
commit
153be7cb20
@ -10,7 +10,7 @@ const localRatelimit = {
|
|||||||
limit: async (key) => {
|
limit: async (key) => {
|
||||||
const now = Date.now();
|
const now = Date.now();
|
||||||
const windowMs = 10 * 1000; // 10 seconds
|
const windowMs = 10 * 1000; // 10 seconds
|
||||||
const maxRequests = 5;
|
const maxRequests = 20;
|
||||||
|
|
||||||
const requestLog = inMemoryStore.get(key) || [];
|
const requestLog = inMemoryStore.get(key) || [];
|
||||||
const windowStart = now - windowMs;
|
const windowStart = now - windowMs;
|
||||||
|
@ -28,23 +28,58 @@ const authorize = async (pubkey) => {
|
|||||||
|
|
||||||
if (dbUser) {
|
if (dbUser) {
|
||||||
const fields = await findKind0Fields(profile);
|
const fields = await findKind0Fields(profile);
|
||||||
|
// See if any of the fields values have changed compared to dbUser
|
||||||
|
const updatedFields = Object.keys(fields).reduce((acc, key) => {
|
||||||
|
if (fields[key] !== dbUser[key] && key !== "lud16") {
|
||||||
|
acc[key] = fields[key];
|
||||||
|
}
|
||||||
|
return acc;
|
||||||
|
}, {});
|
||||||
|
|
||||||
|
// if there are updated fields, update the user only with the updated fields
|
||||||
|
if (Object.keys(updatedFields).length > 0) {
|
||||||
|
dbUser = await updateUser(dbUser.id, updatedFields);
|
||||||
|
}
|
||||||
|
|
||||||
// Combine user object with kind0Fields, giving priority to kind0Fields
|
// Combine user object with kind0Fields, giving priority to kind0Fields
|
||||||
const combinedUser = { ...dbUser, ...fields };
|
const combinedUser = { ...dbUser, ...fields };
|
||||||
|
|
||||||
// Update the user in the database if necessary
|
return combinedUser;
|
||||||
dbUser = await updateUser(dbUser.id, combinedUser);
|
|
||||||
|
|
||||||
return dbUser;
|
|
||||||
} else {
|
} else {
|
||||||
// Create user
|
// Create user
|
||||||
if (profile) {
|
if (profile) {
|
||||||
const fields = await findKind0Fields(profile);
|
const fields = await findKind0Fields(profile);
|
||||||
const payload = { pubkey, username: fields.username, avatar: fields.avatar };
|
const payload = { pubkey, username: fields.username, avatar: fields.avatar };
|
||||||
|
|
||||||
|
if (appConfig.authorPubkeys.includes(pubkey)) {
|
||||||
|
// create a new author role for this user
|
||||||
|
const createdUser = await createUser(payload);
|
||||||
|
const role = await createRole({
|
||||||
|
userId: createdUser.id,
|
||||||
|
admin: true,
|
||||||
|
subscribed: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!role) {
|
||||||
|
console.error("Failed to create role");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const updatedUser = await updateUser(createdUser.id, { role: role.id });
|
||||||
|
if (!updatedUser) {
|
||||||
|
console.error("Failed to update user");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const fullUser = await getUserByPubkey(pubkey);
|
||||||
|
|
||||||
|
return fullUser;
|
||||||
|
} else {
|
||||||
dbUser = await createUser(payload);
|
dbUser = await createUser(payload);
|
||||||
return dbUser;
|
return dbUser;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Nostr login error:", error);
|
console.error("Nostr login error:", error);
|
||||||
}
|
}
|
||||||
@ -92,7 +127,7 @@ export const authOptions = {
|
|||||||
let sk = generateSecretKey()
|
let sk = generateSecretKey()
|
||||||
let pk = getPublicKey(sk)
|
let pk = getPublicKey(sk)
|
||||||
let skHex = bytesToHex(sk)
|
let skHex = bytesToHex(sk)
|
||||||
const updatedUser = await updateUser(token.user.id, {pubkey: pk, privkey: skHex});
|
const updatedUser = await updateUser(token.user.id, { pubkey: pk, privkey: skHex });
|
||||||
if (!updatedUser) {
|
if (!updatedUser) {
|
||||||
console.error("Failed to update user");
|
console.error("Failed to update user");
|
||||||
return null;
|
return null;
|
||||||
@ -104,32 +139,32 @@ export const authOptions = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo this does not work on first login only the second time
|
// // todo this does not work on first login only the second time
|
||||||
if (user && appConfig.authorPubkeys.includes(user?.pubkey) && !user?.role) {
|
// if (user && appConfig.authorPubkeys.includes(user?.pubkey) && !user?.role) {
|
||||||
console.log("user in appConfig condition", user);
|
// console.log("user in appConfig condition", user);
|
||||||
// create a new author role for this user
|
// // create a new author role for this user
|
||||||
const role = await createRole({
|
// const role = await createRole({
|
||||||
userId: user.id,
|
// userId: user.id,
|
||||||
admin: true,
|
// admin: true,
|
||||||
subscribed: false,
|
// subscribed: false,
|
||||||
});
|
// });
|
||||||
|
|
||||||
console.log("role", role);
|
// console.log("role", role);
|
||||||
|
|
||||||
if (!role) {
|
// if (!role) {
|
||||||
console.error("Failed to create role");
|
// console.error("Failed to create role");
|
||||||
return null;
|
// return null;
|
||||||
}
|
// }
|
||||||
|
|
||||||
console.log("user in appConfig condition", user);
|
// console.log("user in appConfig condition", user);
|
||||||
|
|
||||||
const updatedUser = await updateUser(user.id, {role: role.id});
|
// const updatedUser = await updateUser(user.id, {role: role.id});
|
||||||
if (!updatedUser) {
|
// if (!updatedUser) {
|
||||||
console.error("Failed to update user");
|
// console.error("Failed to update user");
|
||||||
return null;
|
// return null;
|
||||||
}
|
// }
|
||||||
token.user = updatedUser;
|
// token.user = updatedUser;
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Add combined user object to the token
|
// Add combined user object to the token
|
||||||
if (user) {
|
if (user) {
|
||||||
|
@ -37,7 +37,7 @@ export const findKind0Fields = async (kind0) => {
|
|||||||
const lud16 = findTruthyPropertyValue(kind0, ['lud16', 'lightning', 'lnurl', 'lnurlp', 'lnurlw']);
|
const lud16 = findTruthyPropertyValue(kind0, ['lud16', 'lightning', 'lnurl', 'lnurlp', 'lnurlw']);
|
||||||
|
|
||||||
if (lud16) {
|
if (lud16) {
|
||||||
fields.lightningAddress = lud16;
|
fields.lud16 = lud16;
|
||||||
}
|
}
|
||||||
|
|
||||||
return fields;
|
return fields;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user