Add user settings page

This commit is contained in:
2024-05-29 08:00:59 +00:00
committed by GitHub
parent 4ab13af42f
commit 4e013e317d
10 changed files with 480 additions and 24 deletions

View File

@@ -69,6 +69,20 @@ enum SortByGid {
abstract class _EHApi {
factory _EHApi(Dio dio, {required String baseUrl}) = __EHApi;
@POST('/user/change_name')
@MultiPart()
Future<ApiResult<BUser>> changeUserName(
@Part(name: "username") String username,
{@CancelRequest() CancelToken? cancel});
@POST('/user/change_password')
@MultiPart()
// ignore: unused_element
Future<ApiResult<dynamic>> _changeUserPassword(
@Part(name: "old") String oldPassword,
@Part(name: "t") int t,
@Part(name: "new") String newPassword,
// ignore: unused_element
{@CancelRequest() CancelToken? cancel});
@PUT('/user')
@MultiPart()
Future<ApiResult<int>> createUser(
@@ -364,4 +378,16 @@ class EHApi extends __EHApi {
.replace(queryParameters: queries);
return newUri.toString();
}
Future<ApiResult<dynamic>> changeUserPassword(
String oldPassword, String newPassword,
{CancelToken? cancel}) async {
int t = DateTime.now().millisecondsSinceEpoch;
final p = await _pbkdf2a.deriveKeyFromPassword(
password: oldPassword, nonce: _salt);
final p2 = await _pbkdf2b.deriveKey(
secretKey: p, nonce: _utf8Encoder.convert(t.toString()));
final p3 = base64Encode(await p2.extractBytes());
return await _changeUserPassword(p3, t, newPassword, cancel: cancel);
}
}