fix: Reset password

This commit is contained in:
Krille Fear 2022-02-19 13:11:59 +01:00
parent 5851dc5460
commit 7263787197
4 changed files with 37 additions and 24 deletions

View file

@ -153,19 +153,22 @@ class LoginController extends State<Login> {
final input = await showTextInputDialog(
useRootNavigator: false,
context: context,
title: L10n.of(context)!.enterAnEmailAddress,
title: L10n.of(context)!.passwordForgotten,
message: L10n.of(context)!.enterAnEmailAddress,
okLabel: L10n.of(context)!.ok,
cancelLabel: L10n.of(context)!.cancel,
fullyCapitalizedForMaterial: false,
textFields: [
DialogTextField(
initialText:
usernameController.text.isEmail ? usernameController.text : '',
hintText: L10n.of(context)!.enterAnEmailAddress,
keyboardType: TextInputType.emailAddress,
),
],
);
if (input == null) return;
final clientSecret =
Matrix.of(context).client.generateUniqueTransactionId();
final clientSecret = DateTime.now().millisecondsSinceEpoch.toString();
final response = await showFutureLoadingDialog(
context: context,
future: () =>
@ -182,14 +185,17 @@ class LoginController extends State<Login> {
title: L10n.of(context)!.weSentYouAnEmail,
message: L10n.of(context)!.pleaseClickOnLink,
okLabel: L10n.of(context)!.iHaveClickedOnLink,
fullyCapitalizedForMaterial: false,
);
if (ok != OkCancelResult.ok) return;
final password = await showTextInputDialog(
useRootNavigator: false,
context: context,
title: L10n.of(context)!.chooseAStrongPassword,
title: L10n.of(context)!.passwordForgotten,
message: L10n.of(context)!.chooseAStrongPassword,
okLabel: L10n.of(context)!.ok,
cancelLabel: L10n.of(context)!.cancel,
fullyCapitalizedForMaterial: false,
textFields: [
const DialogTextField(
hintText: '******',
@ -200,17 +206,22 @@ class LoginController extends State<Login> {
],
);
if (password == null) return;
final data = <String, dynamic>{
'new_password': password.single,
"auth": AuthenticationThreePidCreds(
type: AuthenticationTypes.emailIdentity,
threepidCreds: ThreepidCreds(
sid: response.result!.sid,
clientSecret: clientSecret,
),
).toJson(),
};
final success = await showFutureLoadingDialog(
context: context,
future: () => Matrix.of(context).getLoginClient().changePassword(
password.single,
auth: AuthenticationThreePidCreds(
type: AuthenticationTypes.emailIdentity,
threepidCreds: ThreepidCreds(
sid: response.result!.sid,
clientSecret: clientSecret,
),
),
future: () => Matrix.of(context).getLoginClient().request(
RequestType.POST,
'/client/r0/account/password',
data: data,
),
);
if (success.error == null) {

View file

@ -88,16 +88,18 @@ class LoginView extends StatelessWidget {
),
),
),
Center(
child: TextButton(
onPressed: controller.passwordForgotten,
child: Text(
L10n.of(context)!.passwordForgotten,
style: const TextStyle(
color: Colors.blue,
decoration: TextDecoration.underline,
),
const Divider(height: 32),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 12),
child: ElevatedButton(
onPressed: controller.loading
? null
: controller.passwordForgotten,
style: ElevatedButton.styleFrom(
primary: Theme.of(context).secondaryHeaderColor,
onPrimary: Colors.red,
),
child: Text(L10n.of(context)!.passwordForgotten),
),
),
],

View file

@ -960,7 +960,7 @@ packages:
name: matrix
url: "https://pub.dartlang.org"
source: hosted
version: "0.8.10"
version: "0.8.11"
matrix_api_lite:
dependency: transitive
description:

View file

@ -57,7 +57,7 @@ dependencies:
intl: any
localstorage: ^4.0.0+1
lottie: ^1.2.2
matrix: ^0.8.10
matrix: ^0.8.11
matrix_link_text: ^1.0.2
open_noti_settings: ^0.4.0
package_info_plus: ^1.3.0