From 6b3e262d8ffd266a6eceb312cb3d79ec84bb31f9 Mon Sep 17 00:00:00 2001 From: Maxime Roucher Date: Sun, 3 Dec 2023 22:44:25 +0100 Subject: [PATCH] feat: using generated for login --- lib/login/class/account_type.dart | 7 -- lib/login/class/create_account.dart | 91 ------------------- lib/login/class/recover_request.dart | 41 --------- lib/login/providers/sign_up_provider.dart | 30 +++--- .../repositories/sign_up_repository.dart | 67 -------------- lib/login/tools/functions.dart | 16 ---- .../create_account_page.dart | 7 +- .../recover_password_page.dart | 4 +- .../ui/pages/register_page/register_page.dart | 5 +- 9 files changed, 25 insertions(+), 243 deletions(-) delete mode 100644 lib/login/class/account_type.dart delete mode 100644 lib/login/class/create_account.dart delete mode 100644 lib/login/class/recover_request.dart delete mode 100644 lib/login/repositories/sign_up_repository.dart delete mode 100644 lib/login/tools/functions.dart diff --git a/lib/login/class/account_type.dart b/lib/login/class/account_type.dart deleted file mode 100644 index 922f50bcc..000000000 --- a/lib/login/class/account_type.dart +++ /dev/null @@ -1,7 +0,0 @@ -enum AccountType { - student, - formerstudent, - staff, - admin, - association, -} diff --git a/lib/login/class/create_account.dart b/lib/login/class/create_account.dart deleted file mode 100644 index cd89fcc31..000000000 --- a/lib/login/class/create_account.dart +++ /dev/null @@ -1,91 +0,0 @@ -import 'package:myecl/tools/functions.dart'; - -class CreateAccount { - late String name; - late String firstname; - late String? nickname; - late String password; - late DateTime birthday; - late String? phone; - late String floor; - late int? promo; - late String activationToken; - - CreateAccount({ - required this.name, - required this.firstname, - required this.nickname, - required this.password, - required this.birthday, - required this.phone, - required this.floor, - required this.promo, - required this.activationToken, - }); - - CreateAccount.fromJson(Map json) { - name = json['name']; - firstname = json['firstname']; - nickname = json['nickname']; - password = json['password']; - birthday = DateTime.parse(json['birthday']); - phone = json['phone'] != "" ? json['phone'] : null; - floor = json['floor']; - promo = json['promo']; - activationToken = json['activation_token']; - } - - Map toJson() { - final Map data = {}; - data['name'] = name; - data['firstname'] = firstname; - data['nickname'] = nickname; - data['password'] = password; - data['birthday'] = processDateToAPIWithoutHour(birthday); - data['phone'] = phone; - data['floor'] = floor; - data['promo'] = promo; - data['activation_token'] = activationToken; - return data; - } - - CreateAccount.empty() { - name = ""; - firstname = ""; - nickname = ""; - password = ""; - birthday = DateTime.now(); - phone = ""; - floor = ""; - activationToken = ""; - } - - CreateAccount copyWith({ - String? name, - String? firstname, - String? nickname, - String? password, - DateTime? birthday, - String? phone, - int? promo, - String? floor, - String? activationToken, - }) { - return CreateAccount( - name: name ?? this.name, - firstname: firstname ?? this.firstname, - nickname: nickname ?? this.nickname, - password: password ?? this.password, - birthday: birthday ?? this.birthday, - phone: phone ?? this.phone, - floor: floor ?? this.floor, - promo: promo, - activationToken: activationToken ?? this.activationToken, - ); - } - - @override - String toString() { - return "CreateAccount {name: $name, firstname: $firstname, nickname: $nickname, password: $password, birthday: $birthday, phone: $phone, promo: $promo, floor: $floor, activationToken: $activationToken}"; - } -} diff --git a/lib/login/class/recover_request.dart b/lib/login/class/recover_request.dart deleted file mode 100644 index 1ced9d7ed..000000000 --- a/lib/login/class/recover_request.dart +++ /dev/null @@ -1,41 +0,0 @@ -class RecoverRequest { - late String resetToken; - late String newPassword; - - RecoverRequest({ - required this.resetToken, - required this.newPassword, - }); - - RecoverRequest.fromJson(Map json) { - resetToken = json['reset_token']; - newPassword = json['new_password']; - } - - Map toJson() { - final Map data = {}; - data['reset_token'] = resetToken; - data['new_password'] = newPassword; - return data; - } - - RecoverRequest.empty() { - resetToken = ""; - newPassword = ""; - } - - RecoverRequest copyWith({ - String? resetToken, - String? newPassword, - }) { - return RecoverRequest( - resetToken: resetToken ?? this.resetToken, - newPassword: newPassword ?? this.newPassword, - ); - } - - @override - String toString() { - return 'RecoverRequest{resetToken: $resetToken, newPassword: $newPassword}'; - } -} diff --git a/lib/login/providers/sign_up_provider.dart b/lib/login/providers/sign_up_provider.dart index 4c132de6f..f02f6e543 100644 --- a/lib/login/providers/sign_up_provider.dart +++ b/lib/login/providers/sign_up_provider.dart @@ -1,31 +1,35 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:myecl/login/class/account_type.dart'; -import 'package:myecl/login/class/create_account.dart'; -import 'package:myecl/login/class/recover_request.dart'; -import 'package:myecl/login/repositories/sign_up_repository.dart'; +import 'package:myecl/generated/openapi.swagger.dart'; +import 'package:myecl/tools/repository/repository2.dart'; class SignUpProvider extends StateNotifier { - final SignUpRepository repository; + final Openapi repository; SignUpProvider({required this.repository}) : super(null); - Future createUser(String email, AccountType accountType) async { - return await repository.createUser(email, accountType); + Future createUser(String email) async { + return (await repository.usersCreatePost( + body: CoreUserCreateRequest( + email: email, + ))) + .isSuccessful; } Future recoverUser(String email) async { - return await repository.recoverUser(email); + return (await repository.usersRecoverPost( + body: BodyRecoverUserUsersRecoverPost(email: email))) + .isSuccessful; } - Future activateUser(CreateAccount createAccount) async { - return await repository.activateUser(createAccount); + Future activateUser(CoreUserActivateRequest createAccount) async { + return (await repository.usersActivatePost(body: createAccount)).isSuccessful; } - Future resetPassword(RecoverRequest recoverRequest) async { - return await repository.resetPassword(recoverRequest); + Future resetPassword(ResetPasswordRequest recoverRequest) async { + return (await repository.usersResetPasswordPost(body: recoverRequest)).isSuccessful; } } final signUpProvider = StateNotifierProvider((ref) { - final signUpRepository = ref.watch(signUpRepositoryProvider); + final signUpRepository = ref.watch(repositoryProvider); return SignUpProvider(repository: signUpRepository); }); diff --git a/lib/login/repositories/sign_up_repository.dart b/lib/login/repositories/sign_up_repository.dart deleted file mode 100644 index 61c6308a2..000000000 --- a/lib/login/repositories/sign_up_repository.dart +++ /dev/null @@ -1,67 +0,0 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:myecl/auth/providers/openid_provider.dart'; -import 'package:myecl/login/class/account_type.dart'; -import 'package:myecl/login/class/create_account.dart'; -import 'package:myecl/login/class/recover_request.dart'; -import 'package:myecl/login/tools/functions.dart'; -import 'package:myecl/tools/repository/repository.dart'; - -class SignUpRepository extends Repository { - @override - // ignore: overridden_fields - final ext = "users/"; - - Future createUser(String email, AccountType accountType) async { - try { - final value = await create({ - "email": email, - "account_type": accountTypeToID(accountType), - }, suffix: "create"); - return value["success"]; - } catch (e) { - return false; - } - } - - Future recoverUser(String email) async { - return (await create({"email": email}, suffix: "recover"))["success"]; - } - - Future resetPasswordUser(String token, String password) async { - return await create({"reset_token": token, "new_password": password}, - suffix: "reset-password"); - } - - Future changePasswordUser( - String userId, String oldPassword, String newPassword) async { - return await create({ - "user_id": userId, - "old_password": oldPassword, - "new_password": newPassword - }, suffix: "change-password"); - } - - Future activateUser(CreateAccount createAccount) async { - try { - final value = await create(createAccount.toJson(), suffix: "activate"); - return value["success"]; - } catch (e) { - return false; - } - } - - Future resetPassword(RecoverRequest recoverRequest) async { - try { - final value = - await create(recoverRequest.toJson(), suffix: "reset-password"); - return value["success"]; - } catch (e) { - return false; - } - } -} - -final signUpRepositoryProvider = Provider((ref) { - final token = ref.watch(tokenProvider); - return SignUpRepository()..setToken(token); -}); diff --git a/lib/login/tools/functions.dart b/lib/login/tools/functions.dart deleted file mode 100644 index d538f8aac..000000000 --- a/lib/login/tools/functions.dart +++ /dev/null @@ -1,16 +0,0 @@ -import 'package:myecl/login/class/account_type.dart'; - -String accountTypeToID(AccountType type) { - switch (type) { - case AccountType.student: - return '39691052-2ae5-4e12-99d0-7a9f5f2b0136'; - case AccountType.formerstudent: - return 'ab4c7503-41b3-11ee-8177-089798f1a4a5'; - case AccountType.staff: - return '703056c4-be9d-475c-aa51-b7fc62a96aaa'; - case AccountType.admin: - return '0a25cb76-4b63-4fd3-b939-da6d9feabf28'; - case AccountType.association: - return '29751438-103c-42f2-b09b-33fbb20758a7'; - } -} diff --git a/lib/login/ui/pages/create_account_page/create_account_page.dart b/lib/login/ui/pages/create_account_page/create_account_page.dart index 52b874932..1afd17aa9 100644 --- a/lib/login/ui/pages/create_account_page/create_account_page.dart +++ b/lib/login/ui/pages/create_account_page/create_account_page.dart @@ -4,7 +4,7 @@ import 'package:google_fonts/google_fonts.dart'; import 'package:heroicons/heroicons.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:myecl/auth/providers/openid_provider.dart'; -import 'package:myecl/login/class/create_account.dart'; +import 'package:myecl/generated/openapi.swagger.dart'; import 'package:myecl/login/providers/sign_up_provider.dart'; import 'package:myecl/login/router.dart'; import 'package:myecl/login/tools/constants.dart'; @@ -240,14 +240,15 @@ class CreateAccountPage extends HookConsumerWidget { activationCode.text.isNotEmpty && passwordConfirmation.text.isNotEmpty && password.text == passwordConfirmation.text) { - CreateAccount finalCreateAccount = CreateAccount( + CoreUserActivateRequest finalCreateAccount = CoreUserActivateRequest( name: name.text, firstname: firstname.text, nickname: nickname.text.isEmpty ? null : nickname.text, birthday: DateTime.parse(processDateBack(birthday.text)), phone: phone.text.isEmpty ? null : phone.text, promo: promo.text.isEmpty ? null : int.parse(promo.text), - floor: floor.text, + floor: FloorsType.values + .firstWhere((element) => element.toString() == floor.text), activationToken: activationCode.text.trim(), password: password.text, ); diff --git a/lib/login/ui/pages/recover_password/recover_password_page.dart b/lib/login/ui/pages/recover_password/recover_password_page.dart index b0db15169..78ea22b52 100644 --- a/lib/login/ui/pages/recover_password/recover_password_page.dart +++ b/lib/login/ui/pages/recover_password/recover_password_page.dart @@ -4,7 +4,7 @@ import 'package:google_fonts/google_fonts.dart'; import 'package:heroicons/heroicons.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:myecl/auth/providers/openid_provider.dart'; -import 'package:myecl/login/class/recover_request.dart'; +import 'package:myecl/generated/openapi.swagger.dart'; import 'package:myecl/login/providers/sign_up_provider.dart'; import 'package:myecl/login/router.dart'; import 'package:myecl/login/tools/constants.dart'; @@ -71,7 +71,7 @@ class RecoverPasswordPage extends HookConsumerWidget { isLoading: false, onPressed: () async { if (password.text.isNotEmpty && activationCode.text.isNotEmpty) { - RecoverRequest recoverRequest = RecoverRequest( + ResetPasswordRequest recoverRequest = ResetPasswordRequest( resetToken: activationCode.text.trim(), newPassword: password.text, ); diff --git a/lib/login/ui/pages/register_page/register_page.dart b/lib/login/ui/pages/register_page/register_page.dart index 95a90f445..e40deeca7 100644 --- a/lib/login/ui/pages/register_page/register_page.dart +++ b/lib/login/ui/pages/register_page/register_page.dart @@ -4,7 +4,6 @@ import 'package:google_fonts/google_fonts.dart'; import 'package:heroicons/heroicons.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:myecl/auth/providers/openid_provider.dart'; -import 'package:myecl/login/class/account_type.dart'; import 'package:myecl/login/providers/sign_up_provider.dart'; import 'package:myecl/login/router.dart'; import 'package:myecl/login/tools/constants.dart'; @@ -106,8 +105,8 @@ class Register extends HookConsumerWidget { data: (data) => data, orElse: () => false), onPressed: () async { if (key.currentState!.validate()) { - final value = await signUpNotifier.createUser( - mail.text, AccountType.student); + final value = + await signUpNotifier.createUser(mail.text); if (value) { hidePass.value = true; mail.clear();