summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/invidious.cr19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/invidious.cr b/src/invidious.cr
index 4a14a4b7..1550bc8e 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -964,6 +964,11 @@ post "/login" do |env|
headers["Cookie"] = URI.unescape(headers["Cookie"])
+ if challenge_results[0][3]?.try &.== 7
+ error_message = translate(locale, "Account has temporarily been disabled")
+ next templated "error"
+ end
+
if challenge_results[0][-1]?.try &.[5] == "INCORRECT_ANSWER_ENTERED"
error_message = translate(locale, "Incorrect password")
next templated "error"
@@ -1049,21 +1054,21 @@ post "/login" do |env|
traceback << "Logging in..."
location = challenge_results[0][-1][2].to_s
- cookies = HTTP::Cookies.new
+ cookies = HTTP::Cookies.from_headers(headers)
loop do
- if !location
+ if !location || location.includes? "/ManageAccount"
break
end
+ # TODO: Occasionally there will be a second page after login confirming
+ # the user's phone number, which we will likely choke on.
+ # if location.includes? "SmsAuthInterstitial"
+
login = client.get(location, headers)
headers = login.cookies.add_request_headers(headers)
- cookies = HTTP::Cookies.from_headers(headers)
-
- if cookies["SID"]?
- break
- end
+ cookies = HTTP::Cookies.from_headers(headers)
location = login.headers["Location"]?
end