From 194d248342b22ec2e6f641827657bbb287c7c0a2 Mon Sep 17 00:00:00 2001 From: syeopite Date: Fri, 16 Jul 2021 14:25:50 -0700 Subject: [PATCH] Document 2fa functions --- src/invidious/helpers/utils.cr | 4 ++++ src/invidious/routes/account.cr | 12 ++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/invidious/helpers/utils.cr b/src/invidious/helpers/utils.cr index 53ae35f1..b9bb3121 100644 --- a/src/invidious/helpers/utils.cr +++ b/src/invidious/helpers/utils.cr @@ -447,6 +447,10 @@ def parse_link_endpoint(endpoint : JSON::Any, text : String, video_id : String) end +# Templates the 2fa validator page. +# +# Requires the env, user, sid and locale variables for +# generating a csrf_token and the required variables for the view. def call_totp_validator(env, user, sid, locale) referer = URI.decode_www_form(env.get?("current_page").to_s) csrf_token = generate_response(sid, {":2fa/validate"}, HMAC_KEY) diff --git a/src/invidious/routes/account.cr b/src/invidious/routes/account.cr index 1abf240f..0cead392 100644 --- a/src/invidious/routes/account.cr +++ b/src/invidious/routes/account.cr @@ -374,7 +374,7 @@ module Invidious::Routes::Account # 2fa through OTP handling # ------------------- - # Setup 2fa page + # Templates the page to setup 2fa on an user account def setup_2fa_page(env) locale = env.get("preferences").as(Preferences).locale @@ -382,6 +382,10 @@ module Invidious::Routes::Account sid = env.get? "sid" referer = get_referer(env, unroll: false) + if !user + return env.redirect referer + end + user = user.as(User) sid = sid.as(String) csrf_token = generate_response(sid, {":2fa/setup"}, HMAC_KEY) @@ -393,7 +397,7 @@ module Invidious::Routes::Account return templated "user/setup_2fa" end - # Setup 2fa post request. + # Handles requests to setup 2fa on an user account def setup_2fa(env) locale = env.get("preferences").as(Preferences).locale @@ -430,7 +434,7 @@ module Invidious::Routes::Account env.redirect referer end - # Validate 2fa code endpoint + # Handles requests to validate a TOTP code on an user account def validate_2fa(env) locale = env.get("preferences").as(Preferences).locale referer = get_referer(env, unroll: false) @@ -508,7 +512,7 @@ module Invidious::Routes::Account env.redirect referer end - # Remove 2fa page + # Templates the page to remove 2fa on an user account def remove_2fa_page(env) locale = env.get("preferences").as(Preferences).locale referer = get_referer(env)