fix(api): 🚑 Fix using an incorrect email or password giving weird errors

This commit is contained in:
Jesse Wierzbinski 2024-04-28 13:47:14 -10:00
parent 48f2fa1b94
commit aee47e6df4
No known key found for this signature in database
7 changed files with 2156 additions and 2373 deletions

View file

@ -61,9 +61,7 @@
"indexes": { "indexes": {
"Applications_client_id_index": { "Applications_client_id_index": {
"name": "Applications_client_id_index", "name": "Applications_client_id_index",
"columns": [ "columns": ["client_id"],
"client_id"
],
"isUnique": true "isUnique": true
} }
}, },
@ -167,12 +165,8 @@
"name": "Attachments_noteId_Notes_id_fk", "name": "Attachments_noteId_Notes_id_fk",
"tableFrom": "Attachments", "tableFrom": "Attachments",
"tableTo": "Notes", "tableTo": "Notes",
"columnsFrom": [ "columnsFrom": ["noteId"],
"noteId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -200,17 +194,12 @@
"indexes": { "indexes": {
"EmojiToNote_emojiId_noteId_index": { "EmojiToNote_emojiId_noteId_index": {
"name": "EmojiToNote_emojiId_noteId_index", "name": "EmojiToNote_emojiId_noteId_index",
"columns": [ "columns": ["emojiId", "noteId"],
"emojiId",
"noteId"
],
"isUnique": true "isUnique": true
}, },
"EmojiToNote_noteId_index": { "EmojiToNote_noteId_index": {
"name": "EmojiToNote_noteId_index", "name": "EmojiToNote_noteId_index",
"columns": [ "columns": ["noteId"],
"noteId"
],
"isUnique": false "isUnique": false
} }
}, },
@ -219,12 +208,8 @@
"name": "EmojiToNote_emojiId_Emojis_id_fk", "name": "EmojiToNote_emojiId_Emojis_id_fk",
"tableFrom": "EmojiToNote", "tableFrom": "EmojiToNote",
"tableTo": "Emojis", "tableTo": "Emojis",
"columnsFrom": [ "columnsFrom": ["emojiId"],
"emojiId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -232,12 +217,8 @@
"name": "EmojiToNote_noteId_Notes_id_fk", "name": "EmojiToNote_noteId_Notes_id_fk",
"tableFrom": "EmojiToNote", "tableFrom": "EmojiToNote",
"tableTo": "Notes", "tableTo": "Notes",
"columnsFrom": [ "columnsFrom": ["noteId"],
"noteId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -265,17 +246,12 @@
"indexes": { "indexes": {
"EmojiToUser_emojiId_userId_index": { "EmojiToUser_emojiId_userId_index": {
"name": "EmojiToUser_emojiId_userId_index", "name": "EmojiToUser_emojiId_userId_index",
"columns": [ "columns": ["emojiId", "userId"],
"emojiId",
"userId"
],
"isUnique": true "isUnique": true
}, },
"EmojiToUser_userId_index": { "EmojiToUser_userId_index": {
"name": "EmojiToUser_userId_index", "name": "EmojiToUser_userId_index",
"columns": [ "columns": ["userId"],
"userId"
],
"isUnique": false "isUnique": false
} }
}, },
@ -284,12 +260,8 @@
"name": "EmojiToUser_emojiId_Emojis_id_fk", "name": "EmojiToUser_emojiId_Emojis_id_fk",
"tableFrom": "EmojiToUser", "tableFrom": "EmojiToUser",
"tableTo": "Emojis", "tableTo": "Emojis",
"columnsFrom": [ "columnsFrom": ["emojiId"],
"emojiId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -297,12 +269,8 @@
"name": "EmojiToUser_userId_Users_id_fk", "name": "EmojiToUser_userId_Users_id_fk",
"tableFrom": "EmojiToUser", "tableFrom": "EmojiToUser",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["userId"],
"userId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -364,12 +332,8 @@
"name": "Emojis_instanceId_Instances_id_fk", "name": "Emojis_instanceId_Instances_id_fk",
"tableFrom": "Emojis", "tableFrom": "Emojis",
"tableTo": "Instances", "tableTo": "Instances",
"columnsFrom": [ "columnsFrom": ["instanceId"],
"instanceId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -413,12 +377,8 @@
"name": "FilterKeywords_filterId_Filters_id_fk", "name": "FilterKeywords_filterId_Filters_id_fk",
"tableFrom": "FilterKeywords", "tableFrom": "FilterKeywords",
"tableTo": "Filters", "tableTo": "Filters",
"columnsFrom": [ "columnsFrom": ["filterId"],
"filterId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -481,12 +441,8 @@
"name": "Filters_userId_Users_id_fk", "name": "Filters_userId_Users_id_fk",
"tableFrom": "Filters", "tableFrom": "Filters",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["userId"],
"userId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -538,12 +494,8 @@
"name": "Flags_noteId_Notes_id_fk", "name": "Flags_noteId_Notes_id_fk",
"tableFrom": "Flags", "tableFrom": "Flags",
"tableTo": "Notes", "tableTo": "Notes",
"columnsFrom": [ "columnsFrom": ["noteId"],
"noteId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -551,12 +503,8 @@
"name": "Flags_userId_Users_id_fk", "name": "Flags_userId_Users_id_fk",
"tableFrom": "Flags", "tableFrom": "Flags",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["userId"],
"userId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -649,12 +597,8 @@
"name": "Likes_likerId_Users_id_fk", "name": "Likes_likerId_Users_id_fk",
"tableFrom": "Likes", "tableFrom": "Likes",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["likerId"],
"likerId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -662,12 +606,8 @@
"name": "Likes_likedId_Notes_id_fk", "name": "Likes_likedId_Notes_id_fk",
"tableFrom": "Likes", "tableFrom": "Likes",
"tableTo": "Notes", "tableTo": "Notes",
"columnsFrom": [ "columnsFrom": ["likedId"],
"likedId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -733,16 +673,12 @@
"indexes": { "indexes": {
"LysandObject_remote_id_index": { "LysandObject_remote_id_index": {
"name": "LysandObject_remote_id_index", "name": "LysandObject_remote_id_index",
"columns": [ "columns": ["remote_id"],
"remote_id"
],
"isUnique": true "isUnique": true
}, },
"LysandObject_uri_index": { "LysandObject_uri_index": {
"name": "LysandObject_uri_index", "name": "LysandObject_uri_index",
"columns": [ "columns": ["uri"],
"uri"
],
"isUnique": true "isUnique": true
} }
}, },
@ -751,12 +687,8 @@
"name": "LysandObject_authorId_LysandObject_id_fk", "name": "LysandObject_authorId_LysandObject_id_fk",
"tableFrom": "LysandObject", "tableFrom": "LysandObject",
"tableTo": "LysandObject", "tableTo": "LysandObject",
"columnsFrom": [ "columnsFrom": ["authorId"],
"authorId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -813,12 +745,8 @@
"name": "Markers_noteId_Notes_id_fk", "name": "Markers_noteId_Notes_id_fk",
"tableFrom": "Markers", "tableFrom": "Markers",
"tableTo": "Notes", "tableTo": "Notes",
"columnsFrom": [ "columnsFrom": ["noteId"],
"noteId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -826,12 +754,8 @@
"name": "Markers_notificationId_Notifications_id_fk", "name": "Markers_notificationId_Notifications_id_fk",
"tableFrom": "Markers", "tableFrom": "Markers",
"tableTo": "Notifications", "tableTo": "Notifications",
"columnsFrom": [ "columnsFrom": ["notificationId"],
"notificationId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -839,12 +763,8 @@
"name": "Markers_userId_Users_id_fk", "name": "Markers_userId_Users_id_fk",
"tableFrom": "Markers", "tableFrom": "Markers",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["userId"],
"userId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -901,12 +821,8 @@
"name": "ModNotes_noteId_Notes_id_fk", "name": "ModNotes_noteId_Notes_id_fk",
"tableFrom": "ModNotes", "tableFrom": "ModNotes",
"tableTo": "Notes", "tableTo": "Notes",
"columnsFrom": [ "columnsFrom": ["noteId"],
"noteId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -914,12 +830,8 @@
"name": "ModNotes_userId_Users_id_fk", "name": "ModNotes_userId_Users_id_fk",
"tableFrom": "ModNotes", "tableFrom": "ModNotes",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["userId"],
"userId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -927,12 +839,8 @@
"name": "ModNotes_modId_Users_id_fk", "name": "ModNotes_modId_Users_id_fk",
"tableFrom": "ModNotes", "tableFrom": "ModNotes",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["modId"],
"modId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -989,12 +897,8 @@
"name": "ModTags_noteId_Notes_id_fk", "name": "ModTags_noteId_Notes_id_fk",
"tableFrom": "ModTags", "tableFrom": "ModTags",
"tableTo": "Notes", "tableTo": "Notes",
"columnsFrom": [ "columnsFrom": ["noteId"],
"noteId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -1002,12 +906,8 @@
"name": "ModTags_userId_Users_id_fk", "name": "ModTags_userId_Users_id_fk",
"tableFrom": "ModTags", "tableFrom": "ModTags",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["userId"],
"userId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -1015,12 +915,8 @@
"name": "ModTags_modId_Users_id_fk", "name": "ModTags_modId_Users_id_fk",
"tableFrom": "ModTags", "tableFrom": "ModTags",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["modId"],
"modId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -1048,17 +944,12 @@
"indexes": { "indexes": {
"NoteToMentions_noteId_userId_index": { "NoteToMentions_noteId_userId_index": {
"name": "NoteToMentions_noteId_userId_index", "name": "NoteToMentions_noteId_userId_index",
"columns": [ "columns": ["noteId", "userId"],
"noteId",
"userId"
],
"isUnique": true "isUnique": true
}, },
"NoteToMentions_userId_index": { "NoteToMentions_userId_index": {
"name": "NoteToMentions_userId_index", "name": "NoteToMentions_userId_index",
"columns": [ "columns": ["userId"],
"userId"
],
"isUnique": false "isUnique": false
} }
}, },
@ -1067,12 +958,8 @@
"name": "NoteToMentions_noteId_Notes_id_fk", "name": "NoteToMentions_noteId_Notes_id_fk",
"tableFrom": "NoteToMentions", "tableFrom": "NoteToMentions",
"tableTo": "Notes", "tableTo": "Notes",
"columnsFrom": [ "columnsFrom": ["noteId"],
"noteId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -1080,12 +967,8 @@
"name": "NoteToMentions_userId_Users_id_fk", "name": "NoteToMentions_userId_Users_id_fk",
"tableFrom": "NoteToMentions", "tableFrom": "NoteToMentions",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["userId"],
"userId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -1201,12 +1084,8 @@
"name": "Notes_authorId_Users_id_fk", "name": "Notes_authorId_Users_id_fk",
"tableFrom": "Notes", "tableFrom": "Notes",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["authorId"],
"authorId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -1214,12 +1093,8 @@
"name": "Notes_reblogId_Notes_id_fk", "name": "Notes_reblogId_Notes_id_fk",
"tableFrom": "Notes", "tableFrom": "Notes",
"tableTo": "Notes", "tableTo": "Notes",
"columnsFrom": [ "columnsFrom": ["reblogId"],
"reblogId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -1227,12 +1102,8 @@
"name": "Notes_replyId_Notes_id_fk", "name": "Notes_replyId_Notes_id_fk",
"tableFrom": "Notes", "tableFrom": "Notes",
"tableTo": "Notes", "tableTo": "Notes",
"columnsFrom": [ "columnsFrom": ["replyId"],
"replyId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -1240,12 +1111,8 @@
"name": "Notes_quoteId_Notes_id_fk", "name": "Notes_quoteId_Notes_id_fk",
"tableFrom": "Notes", "tableFrom": "Notes",
"tableTo": "Notes", "tableTo": "Notes",
"columnsFrom": [ "columnsFrom": ["quoteId"],
"quoteId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -1253,12 +1120,8 @@
"name": "Notes_applicationId_Applications_id_fk", "name": "Notes_applicationId_Applications_id_fk",
"tableFrom": "Notes", "tableFrom": "Notes",
"tableTo": "Applications", "tableTo": "Applications",
"columnsFrom": [ "columnsFrom": ["applicationId"],
"applicationId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "set null", "onDelete": "set null",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -1268,9 +1131,7 @@
"Notes_uri_unique": { "Notes_uri_unique": {
"name": "Notes_uri_unique", "name": "Notes_uri_unique",
"nullsNotDistinct": false, "nullsNotDistinct": false,
"columns": [ "columns": ["uri"]
"uri"
]
} }
} }
}, },
@ -1330,12 +1191,8 @@
"name": "Notifications_notifiedId_Users_id_fk", "name": "Notifications_notifiedId_Users_id_fk",
"tableFrom": "Notifications", "tableFrom": "Notifications",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["notifiedId"],
"notifiedId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -1343,12 +1200,8 @@
"name": "Notifications_accountId_Users_id_fk", "name": "Notifications_accountId_Users_id_fk",
"tableFrom": "Notifications", "tableFrom": "Notifications",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["accountId"],
"accountId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -1356,12 +1209,8 @@
"name": "Notifications_noteId_Notes_id_fk", "name": "Notifications_noteId_Notes_id_fk",
"tableFrom": "Notifications", "tableFrom": "Notifications",
"tableTo": "Notes", "tableTo": "Notes",
"columnsFrom": [ "columnsFrom": ["noteId"],
"noteId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -1405,12 +1254,8 @@
"name": "OpenIdAccounts_userId_Users_id_fk", "name": "OpenIdAccounts_userId_Users_id_fk",
"tableFrom": "OpenIdAccounts", "tableFrom": "OpenIdAccounts",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["userId"],
"userId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "set null", "onDelete": "set null",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -1454,12 +1299,8 @@
"name": "OpenIdLoginFlows_applicationId_Applications_id_fk", "name": "OpenIdLoginFlows_applicationId_Applications_id_fk",
"tableFrom": "OpenIdLoginFlows", "tableFrom": "OpenIdLoginFlows",
"tableTo": "Applications", "tableTo": "Applications",
"columnsFrom": [ "columnsFrom": ["applicationId"],
"applicationId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -1589,12 +1430,8 @@
"name": "Relationships_ownerId_Users_id_fk", "name": "Relationships_ownerId_Users_id_fk",
"tableFrom": "Relationships", "tableFrom": "Relationships",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["ownerId"],
"ownerId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -1602,12 +1439,8 @@
"name": "Relationships_subjectId_Users_id_fk", "name": "Relationships_subjectId_Users_id_fk",
"tableFrom": "Relationships", "tableFrom": "Relationships",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["subjectId"],
"subjectId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -1702,12 +1535,8 @@
"name": "Tokens_userId_Users_id_fk", "name": "Tokens_userId_Users_id_fk",
"tableFrom": "Tokens", "tableFrom": "Tokens",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["userId"],
"userId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -1715,12 +1544,8 @@
"name": "Tokens_applicationId_Applications_id_fk", "name": "Tokens_applicationId_Applications_id_fk",
"tableFrom": "Tokens", "tableFrom": "Tokens",
"tableTo": "Applications", "tableTo": "Applications",
"columnsFrom": [ "columnsFrom": ["applicationId"],
"applicationId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -1748,17 +1573,12 @@
"indexes": { "indexes": {
"UserToPinnedNotes_userId_noteId_index": { "UserToPinnedNotes_userId_noteId_index": {
"name": "UserToPinnedNotes_userId_noteId_index", "name": "UserToPinnedNotes_userId_noteId_index",
"columns": [ "columns": ["userId", "noteId"],
"userId",
"noteId"
],
"isUnique": true "isUnique": true
}, },
"UserToPinnedNotes_noteId_index": { "UserToPinnedNotes_noteId_index": {
"name": "UserToPinnedNotes_noteId_index", "name": "UserToPinnedNotes_noteId_index",
"columns": [ "columns": ["noteId"],
"noteId"
],
"isUnique": false "isUnique": false
} }
}, },
@ -1767,12 +1587,8 @@
"name": "UserToPinnedNotes_userId_Users_id_fk", "name": "UserToPinnedNotes_userId_Users_id_fk",
"tableFrom": "UserToPinnedNotes", "tableFrom": "UserToPinnedNotes",
"tableTo": "Users", "tableTo": "Users",
"columnsFrom": [ "columnsFrom": ["userId"],
"userId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
}, },
@ -1780,12 +1596,8 @@
"name": "UserToPinnedNotes_noteId_Notes_id_fk", "name": "UserToPinnedNotes_noteId_Notes_id_fk",
"tableFrom": "UserToPinnedNotes", "tableFrom": "UserToPinnedNotes",
"tableTo": "Notes", "tableTo": "Notes",
"columnsFrom": [ "columnsFrom": ["noteId"],
"noteId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }
@ -1949,23 +1761,17 @@
"indexes": { "indexes": {
"Users_uri_index": { "Users_uri_index": {
"name": "Users_uri_index", "name": "Users_uri_index",
"columns": [ "columns": ["uri"],
"uri"
],
"isUnique": true "isUnique": true
}, },
"Users_username_index": { "Users_username_index": {
"name": "Users_username_index", "name": "Users_username_index",
"columns": [ "columns": ["username"],
"username"
],
"isUnique": true "isUnique": true
}, },
"Users_email_index": { "Users_email_index": {
"name": "Users_email_index", "name": "Users_email_index",
"columns": [ "columns": ["email"],
"email"
],
"isUnique": true "isUnique": true
} }
}, },
@ -1974,12 +1780,8 @@
"name": "Users_instanceId_Instances_id_fk", "name": "Users_instanceId_Instances_id_fk",
"tableFrom": "Users", "tableFrom": "Users",
"tableTo": "Instances", "tableTo": "Instances",
"columnsFrom": [ "columnsFrom": ["instanceId"],
"instanceId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "cascade", "onDelete": "cascade",
"onUpdate": "cascade" "onUpdate": "cascade"
} }

View file

@ -1,5 +1,6 @@
import { relations, sql } from "drizzle-orm"; import { relations, sql } from "drizzle-orm";
import { import {
type AnyPgColumn,
boolean, boolean,
foreignKey, foreignKey,
index, index,
@ -10,7 +11,6 @@ import {
timestamp, timestamp,
uniqueIndex, uniqueIndex,
uuid, uuid,
type AnyPgColumn,
} from "drizzle-orm/pg-core"; } from "drizzle-orm/pg-core";
import type * as Lysand from "lysand-types"; import type * as Lysand from "lysand-types";
import type { Source as APISource } from "~types/mastodon/source"; import type { Source as APISource } from "~types/mastodon/source";

View file

@ -2,14 +2,11 @@ import { apiRoute, applyConfig } from "@api";
import { errorResponse, response } from "@response"; import { errorResponse, response } from "@response";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import { SignJWT } from "jose"; import { SignJWT } from "jose";
import { stringify } from "qs";
import { z } from "zod"; import { z } from "zod";
import { fromZodError } from "zod-validation-error";
import { db } from "~drizzle/db"; import { db } from "~drizzle/db";
import { Users } from "~drizzle/schema"; import { Users } from "~drizzle/schema";
import { config } from "~packages/config-manager"; import { config } from "~packages/config-manager";
import { User } from "~packages/database-interface/user"; import { User } from "~packages/database-interface/user";
import { RequestParser } from "~packages/request-parser";
export const meta = applyConfig({ export const meta = applyConfig({
allowedMethods: ["POST"], allowedMethods: ["POST"],
@ -53,47 +50,27 @@ export const schema = z.object({
.default(60 * 60 * 24 * 7), .default(60 * 60 * 24 * 7),
}); });
export const querySchema = z.object({ const returnError = (query: object, error: string, description: string) => {
scope: z.string().optional(), const searchParams = new URLSearchParams();
redirect_uri: z.string().url().optional(),
response_type: z.enum([
"code",
"token",
"none",
"id_token",
"code id_token",
"code token",
"token id_token",
"code token id_token",
]),
client_id: z.string(),
state: z.string().optional(),
code_challenge: z.string().optional(),
code_challenge_method: z.enum(["plain", "S256"]).optional(),
prompt: z
.enum(["none", "login", "consent", "select_account"])
.optional()
.default("none"),
max_age: z
.number()
.int()
.optional()
.default(60 * 60 * 24 * 7),
});
const returnError = (query: object, error: string, description: string) => // Add all data that is not undefined except email and password
response(null, 302, { for (const [key, value] of Object.entries(query)) {
Location: `/oauth/authorize?${stringify({ if (key !== "email" && key !== "password" && value !== undefined)
...query, searchParams.append(key, value);
error, }
error_description: description,
})}`,
});
searchParams.append("error", error);
searchParams.append("error_description", description);
return response(null, 302, {
Location: `/oauth/authorize?${searchParams.toString()}`,
});
};
/** /**
* Login flow * Login flow
*/ */
export default apiRoute(async (req, matchedRoute, extraData) => { export default apiRoute<typeof meta, typeof schema>(
async (req, matchedRoute, extraData) => {
const { email, password } = extraData.parsedRequest; const { email, password } = extraData.parsedRequest;
if (!email || !password) if (!email || !password)
@ -104,11 +81,14 @@ export default apiRoute(async (req, matchedRoute, extraData) => {
); );
// Find user // Find user
const user = await User.fromSql(eq(Users.email, email)); const user = await User.fromSql(eq(Users.email, email.toLowerCase()));
if ( if (
!user || !user ||
!(await Bun.password.verify(password, user.getUser().password || "")) !(await Bun.password.verify(
password,
user.getUser().password || "",
))
) )
return returnError( return returnError(
extraData.parsedRequest, extraData.parsedRequest,
@ -158,7 +138,7 @@ export default apiRoute(async (req, matchedRoute, extraData) => {
// Add all data that is not undefined except email and password // Add all data that is not undefined except email and password
for (const [key, value] of Object.entries(extraData.parsedRequest)) { for (const [key, value] of Object.entries(extraData.parsedRequest)) {
if (key !== "email" && key !== "password" && value !== undefined) if (key !== "email" && key !== "password" && value !== undefined)
searchParams.append(key, value); searchParams.append(key, String(value));
} }
// Redirect to OAuth authorize with JWT // Redirect to OAuth authorize with JWT
@ -172,4 +152,5 @@ export default apiRoute(async (req, matchedRoute, extraData) => {
60 * 60 60 * 60
}`, }`,
}); });
}); },
);

View file

@ -22,7 +22,7 @@ export const meta = applyConfig({
// No validation on the Zod side as we need to do custom validation // No validation on the Zod side as we need to do custom validation
export const schema = z.object({ export const schema = z.object({
username: z.string(), username: z.string().toLowerCase(),
email: z.string(), email: z.string(),
password: z.string(), password: z.string(),
agreement: z.boolean(), agreement: z.boolean(),