Функция после рекурсии ничего не возвращает (Python)

Функция для авторизации. По задумке, если логин или пароль неверные, то функция уходит в рекурсию и заново спрашивает логин и пароль, пока не будут введены корректные данные. А затем функция возвращает инфу о пользователе.

Если залогиниться с 1 попытки, то функция возвращает кортеж с данными пользователя. Однако, если пройти авторизацию после неудачной попытки, то функция возвращает None.

В чём ошибка? Код прилагаю ниже (это мой первый проект, в стол, про безопасность данных пока не думаем)

2 вопрос: Как происходит авторизация пользователя аля best practices? Что нужно учитывать, если я бы делал коммерческий проект?

import sqlite3


def user_authorization():
    user_name = input('ИМЯ ПОЛЬЗОВАТЕЛЯ: ')
    user_pass = input('ПАРОЛЬ: ')

    # Подключаемся к БД и вытягиваем всех пользователей
    with sqlite3.connect('Databases/some.db') as connection:
        cursor = connection.cursor()

        try:
            with connection:
                cursor.execute('SELECT id, name, pass, age, rank FROM Users')
                user_list = cursor.fetchall()
        except Exception:
            print("--- тут какие-то ошибки")

    # Если логин есть в БД, то сверяем пароль, в случае успеха отдаём кортеж
    # Если не нашли логин или пароль неверный, то уходим в рекурсию    
    for user in user_list:
        if user[1] == user_name and user[2] == user_pass:
            print(f'Уровень доступа: {user[4]}')
            return user
    else:
        print('Неверное ИМЯ ПОЛЬЗОВАТЕЛЯ или ПАРОЛЬ!')
        user_authorization()


user_info = user_authorization()
print(user_info)

Ответы (1 шт):

Автор решения: n1tr0xs

Вам нужно в ветке else не просто вызвать функцию еще раз, а вернуть результат ее выполнения:

else:
    print('Неверное ИМЯ ПОЛЬЗОВАТЕЛЯ или ПАРОЛЬ!')
    return user_authorization()
→ Ссылка