GravitLauncher / LauncherRuntime

MIT License
11 stars 55 forks source link

Не корректно работает выход из аккаунта в мастере #119

Closed Clercq closed 1 year ago

Clercq commented 1 year ago

Причина: При успешном входе AuthFlow не сбрасывается до 0-ого уровня, либо не выгружается из памяти Login сцена, соответственно не вызывается повторный init() (в котором как раз происходит обнуление)

authFlow.clear()
authFlow.add(0)

К чему приводит? После выхода из аккаунта, и при повторном нажатии на кнопку вход, вызывается функция start(), которая триггерит флоу авторизации без логина и пароля(null, null), т.к. authFlow на 1(а не на нуле), включается TOTP авторизация, поскольку она идет второй.

Рантайм отправляет на бэкенд не полный payload {"password":{"totp":"239258","type":"totp"}} А должен отправляться {"login":"qwerty","password":{"firstPassword":{"password":"superUberPassword","type":"plain"},"secondPassword":{"totp":"496799","type":"totp"},"type":"2fa"}

Бэкэнд такой пейлоад обрабатывать не умеет, т.к. не может понять для какого пользователя пришел totp

Возможный костыль: В функции start() обнулять authflow т.к. запускается это все дело только без пароля, не должно задеть авторизацию по токену

Куда посмотреть тоже можно: по логам складывается впечатление, что сцена логина не закрывается после успешной авторизации, а остальные сцены рисуются поверх. Возможно, если закрывать ее корректно, при выходе повторно запустится init(), и флоу обновится

Clercq commented 1 year ago

https://github.com/GravitLauncher/LauncherRuntime/pull/121

gravit0 commented 1 year ago

PR приняла