fixed totp prompt

This commit is contained in:
Benimautner 2023-05-10 22:20:01 +02:00
parent 7451836cf1
commit 7391301718
4 changed files with 20 additions and 12 deletions

View File

@ -39,7 +39,7 @@ class Client {
void reload_ignore_certs(bool? val) {
ignoreCertificates = val ?? false;
HttpOverrides.global = new IgnoreCertHttpOverrides(ignoreCertificates);
if(global == null) return;
if(global == null || global!.currentContext == null) return;
VikunjaGlobal
.of(global!.currentContext!)
.settingsManager
@ -97,7 +97,7 @@ class Client {
headers: _headers,
body: _encoder.convert(body),
)
.then(_handleResponse).catchError((Object? obj) {print(obj);});
.then(_handleResponse);
}
Future<Response?> put(String url, {dynamic body}) {

View File

@ -10,15 +10,20 @@ class UserAPIService extends APIService implements UserService {
@override
Future<UserTokenPair> login(String username, password, {bool rememberMe = false, String? totp}) async {
var response = await client.post('/login', body: {
var body = {
'long_token': rememberMe,
'password': password,
'totp_passcode': totp,
'username': username,
});
};
if(totp != null) {
body['totp_passcode'] = totp;
}
var response = await client.post('/login', body: body);
var token = response?.body["token"];
if(token == null || response == null || response.error)
return Future.value(UserTokenPair(null, null, error: response != null ? response.statusCode : 0));
return Future.value(UserTokenPair(null, null,
error: response != null ? response.body["code"] : 0,
errorString: response != null ? response.body["message"] : "Login error"));
client.configure(token: token);
return UserAPIService(client)
.getCurrentUser()

View File

@ -39,7 +39,8 @@ class UserTokenPair {
final User? user;
final String? token;
final int error;
UserTokenPair(this.user, this.token, {this.error = 0});
final String errorString;
UserTokenPair(this.user, this.token, {this.error = 0, this.errorString = ""});
}
class BaseTokenPair {

View File

@ -193,7 +193,7 @@ class _LoginPageState extends State<LoginPage> {
await vGlobal.newUserService!.login(
_username, _password, rememberMe: this._rememberMe);
if (newUser.error == 412) {
if (newUser.error == 1017) {
TextEditingController totpController = TextEditingController();
await showDialog(context: context, builder: (context) =>
new AlertDialog(
@ -213,12 +213,14 @@ class _LoginPageState extends State<LoginPage> {
await vGlobal.newUserService!.login(
_username, _password, rememberMe: this._rememberMe,
totp: totpController.text);
if (newUser.error == 0)
vGlobal.changeUser(
newUser.user!, token: newUser.token, base: _server);
} else if(newUser.error > 0) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(newUser.errorString)));
}
if (newUser.error == 0)
vGlobal.changeUser(
newUser.user!, token: newUser.token, base: _server);
} catch (ex) {
/* log(stacktrace.toString());
showDialog(