mirror of
https://git.nadeko.net/Fijxu/invidious.git
synced 2025-12-29 02:51:25 +00:00
feat: add option to change username
Some checks failed
Build and release container directly from master / release (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.12.1, true) (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.13.2, true) (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.14.0, true) (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.15.0, true) (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (nightly, false) (push) Has been cancelled
Invidious CI / build-docker (push) Has been cancelled
Invidious CI / build-docker-arm64 (push) Has been cancelled
Invidious CI / lint (push) Has been cancelled
Some checks failed
Build and release container directly from master / release (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.12.1, true) (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.13.2, true) (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.14.0, true) (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.15.0, true) (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (nightly, false) (push) Has been cancelled
Invidious CI / build-docker (push) Has been cancelled
Invidious CI / build-docker-arm64 (push) Has been cancelled
Invidious CI / lint (push) Has been cancelled
fix: rename subscriptions materialized view of the user too remove materialized views from username change fix: downcase username and limit username lenght (from routes/login.cr) Users that changed their username to something like `User`, were unable to login because the username is downcased on routes/login.cr
This commit is contained in:
@@ -78,6 +78,75 @@ module Invidious::Routes::Account
|
||||
env.redirect referer
|
||||
end
|
||||
|
||||
# -------------------
|
||||
# Username update
|
||||
# -------------------
|
||||
|
||||
# Show the username change interface (GET request)
|
||||
def get_change_username(env)
|
||||
locale = env.get("preferences").as(Preferences).locale
|
||||
|
||||
user = env.get? "user"
|
||||
sid = env.get? "sid"
|
||||
referer = get_referer(env)
|
||||
|
||||
if !user
|
||||
return env.redirect referer
|
||||
end
|
||||
|
||||
user = user.as(User)
|
||||
sid = sid.as(String)
|
||||
csrf_token = generate_response(sid, {":change_username"}, HMAC_KEY)
|
||||
|
||||
templated "user/change_username"
|
||||
end
|
||||
|
||||
# Handle the username change (POST request)
|
||||
def post_change_username(env)
|
||||
locale = env.get("preferences").as(Preferences).locale
|
||||
|
||||
user = env.get? "user"
|
||||
sid = env.get? "sid"
|
||||
referer = get_referer(env)
|
||||
|
||||
if !user
|
||||
return env.redirect referer
|
||||
end
|
||||
|
||||
user = user.as(User)
|
||||
sid = sid.as(String)
|
||||
token = env.params.body["csrf_token"]?
|
||||
|
||||
begin
|
||||
validate_request(token, sid, env.request, HMAC_KEY, locale)
|
||||
rescue ex
|
||||
return error_template(400, ex)
|
||||
end
|
||||
|
||||
new_username = env.params.body["new_username"]?.try &.downcase.byte_slice(0, 254)
|
||||
if new_username.nil?
|
||||
return error_template(401, "username_required_field")
|
||||
end
|
||||
|
||||
if new_username.empty?
|
||||
return error_template(401, "username_empty")
|
||||
end
|
||||
|
||||
if new_username == user.email
|
||||
return error_template(401, "username_is_the_same")
|
||||
end
|
||||
|
||||
if Invidious::Database::Users.select(email: new_username)
|
||||
return error_template(401, "username_taken")
|
||||
end
|
||||
|
||||
Invidious::Database::Users.update_username(user, new_username.to_s)
|
||||
Invidious::Database::Users.update_user_session_id(user, new_username.to_s)
|
||||
Invidious::Database::Users.update_user_playlists_author(user, new_username.to_s)
|
||||
|
||||
env.redirect referer
|
||||
end
|
||||
|
||||
# -------------------
|
||||
# Account deletion
|
||||
# -------------------
|
||||
|
||||
Reference in New Issue
Block a user