mirror of
https://github.com/go-vikunja/app
synced 2024-06-14 08:24:18 +00:00
48 lines
1.5 KiB
Dart
48 lines
1.5 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:vikunja_app/api/client.dart';
|
|
import 'package:vikunja_app/api/service.dart';
|
|
import 'package:vikunja_app/models/user.dart';
|
|
import 'package:vikunja_app/service/services.dart';
|
|
|
|
class UserAPIService extends APIService implements UserService {
|
|
UserAPIService(Client client) : super(client);
|
|
|
|
@override
|
|
Future<UserTokenPair> login(String username, password, {bool rememberMe = false, String? totp}) async {
|
|
var body = {
|
|
'long_token': rememberMe,
|
|
'password': password,
|
|
'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.body["code"] : 0,
|
|
errorString: response != null ? response.body["message"] : "Login error"));
|
|
client.configure(token: token);
|
|
return UserAPIService(client)
|
|
.getCurrentUser()
|
|
.then((user) => UserTokenPair(user, token));
|
|
}
|
|
|
|
@override
|
|
Future<UserTokenPair?> register(String username, email, password) async {
|
|
var newUser = await client.post('/register', body: {
|
|
'username': username,
|
|
'email': email,
|
|
'password': password
|
|
}).then((resp) => resp?.body['username']);
|
|
return login(newUser, password);
|
|
}
|
|
|
|
@override
|
|
Future<User> getCurrentUser() {
|
|
return client.get('/user').then((map) => User.fromJson(map?.body));
|
|
}
|
|
}
|