diff --git a/.run/main.dart.run.xml b/.run/main.dart.run.xml index 4a58a7c9..4767aff8 100644 --- a/.run/main.dart.run.xml +++ b/.run/main.dart.run.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/lib/config/my_router.dart b/lib/config/my_router.dart index a1e75699..a4e4693f 100644 --- a/lib/config/my_router.dart +++ b/lib/config/my_router.dart @@ -306,7 +306,6 @@ import '../presentation/Screens/demo_home.dart'; import '../presentation/Screens/profilepage.dart'; import '../presentation/routes/auth_routes/login_route.dart'; import '../presentation/routes/bottom_bar_routes/tab_routes/home_route.dart'; -import '../presentation/routes/drawer_routes/Drawer Items/edit_profile.dart'; import '../presentation/routes/drawer_routes/Drawer Items/feedback.dart'; import '../presentation/routes/drawer_routes/Drawer Items/manage_users.dart'; @@ -314,8 +313,13 @@ final GoRouter router = GoRouter( routes: [ GoRoute( path: '/', -//builder: (context, state) => LoginRoute(), +builder: (context, state) => LoginRoute(), + //builder: (context, state) => MyHomePage(), + ), + GoRoute( + path: '/login', builder: (context, state) => LoginRoute(), + ), GoRoute( path: '/myhomepage', @@ -340,11 +344,10 @@ final GoRouter router = GoRouter( ), ), GoRoute( - path: '/changepassword/:userId', - builder: (context, state) { - final userId = state.pathParameters['userId']!; - return Changepassword(userId: userId); - }, + path: '/changepassword', + builder: (context, state) => Changepassword( + userId: '', + ), ), GoRoute( path: '/createNewPw/:userId/:email', @@ -368,11 +371,10 @@ final GoRouter router = GoRouter( builder: (context, state) => FeedbackForm(), ), GoRoute( - path: '/profile/:userId', - builder: (context, state) { - final userId = state.pathParameters['userId']!; - return ProfileScreen(userId: userId); - }, + path: '/profile', + builder: (context, state) => ProfileScreen( + userId: '', + ), ), // GoRoute( // path: '/manageuser', @@ -382,13 +384,10 @@ final GoRouter router = GoRouter( // return ManageUserRouter(title: title); // }, // ), - GoRoute( - path: '/editProfile', - builder: (context, state) => EditProfile(), - ), GoRoute( path: '/manageuser', builder: (context, state) => ManageUserRouter(), ), ], ); + diff --git a/lib/presentation/Screens/auth_verification/registration.dart b/lib/presentation/Screens/auth_verification/registration.dart index 0ec33c48..8b69722d 100644 --- a/lib/presentation/Screens/auth_verification/registration.dart +++ b/lib/presentation/Screens/auth_verification/registration.dart @@ -6,7 +6,6 @@ import 'package:pocketbase/pocketbase.dart'; import 'package:uae_stat/domain/use_cases/language.dart'; import 'package:uae_stat/presentation/Screens/profilepage.dart'; -import '../../../infrastructure/services/pocketbase_service.dart'; import '../../routes/auth_routes/login_route.dart'; class RegisterScreen extends StatefulWidget { @@ -136,77 +135,27 @@ class _RegisterScreenState extends State { return null; } - // String? _validatePassword(String? value) { - // // Define the regular expression for allowed characters - // final regex = RegExp( - // r'^[A-Za-z0-9~!@#$%^&*()_+=[\]{}|;:,.<>?/-àèìòùáéíóúÀÈÌÒÙÁÉÍÓÚ]*$'); - // - // if (value == null || value.isEmpty) { - // return 'Required'; - // } else if (value.length < 8) { - // return 'Password must be at least 8characters'; - // } - // - // // Check the length constraint - // if (value.length < 8 || value.length > 40) { - // return 'Password must be between 8 and 64 characters'; - // } - // - // // Check the regular expression - // if (!regex.hasMatch(value)) { - // return 'Password contains invalid characters'; - // } - // - // _password = value; // Store the password for confirm password validation - // return null; - // } - String? _validatePassword(String? value) { // Define the regular expression for allowed characters final regex = RegExp( r'^[A-Za-z0-9~!@#$%^&*()_+=[\]{}|;:,.<>?/-àèìòùáéíóúÀÈÌÒÙÁÉÍÓÚ]*$'); - // Define regular expressions for password complexity requirements - final hasUppercase = RegExp(r'[A-Z]'); - final hasLowercase = RegExp(r'[a-z]'); - final hasDigit = RegExp(r'\d'); - final hasSpecialCharacter = RegExp(r'[~!@#$%^&*()_+=[\]{}|;:,.<>?/-]'); - if (value == null || value.isEmpty) { return 'Required'; + } else if (value.length < 8) { + return 'Password must be at least 8characters'; } // Check the length constraint - if (value.length < 8 || value.length > 64) { + if (value.length < 8 || value.length > 40) { return 'Password must be between 8 and 64 characters'; } - // Check the regular expression for allowed characters + // Check the regular expression if (!regex.hasMatch(value)) { return 'Password contains invalid characters'; } - // Track missing constraints - List missingConstraints = []; - - if (!hasUppercase.hasMatch(value)) { - missingConstraints.add('uppercase letter'); - } - if (!hasLowercase.hasMatch(value)) { - missingConstraints.add('lowercase letter'); - } - if (!hasDigit.hasMatch(value)) { - missingConstraints.add('numeric digit'); - } - if (!hasSpecialCharacter.hasMatch(value)) { - missingConstraints.add('special character'); - } - - // If there are missing constraints, return a consolidated message - if (missingConstraints.isNotEmpty) { - return 'At least one ${missingConstraints.join(', ')}'; - } - _password = value; // Store the password for confirm password validation return null; } @@ -245,7 +194,6 @@ class _RegisterScreenState extends State { 'password': _passwordController.text, 'passwordConfirm': _passwordController.text, 'status': 'Pending', - 'role': 'user', }, headers: { 'Authorization': adminToken }); @@ -259,6 +207,13 @@ class _RegisterScreenState extends State { registrationSuccess = true; registrationFailed = false; // Show success message on success }); + + // Navigate to ProfileScreen after successful registration + // Navigator.pushReplacement( + // context, + // MaterialPageRoute( + // builder: (context) => ProfileScreen(userId: response.id)), + // ); } else { throw Exception('User registration failed: missing user ID'); } @@ -343,7 +298,7 @@ class _RegisterScreenState extends State { buildIconContainer(Icons.report, Color(0xFF7DAFBC)), SizedBox(height: 20), Text( - "Your registration is pending for verification", + "Your registration is pending for Admin Approval.", textAlign: TextAlign.center, style: TextStyle( fontSize: 16, @@ -352,7 +307,7 @@ class _RegisterScreenState extends State { ), SizedBox(height: 10), Text( - "Kindly verify your mail to proceed further.", + "Access will be granted once your account is approved.", textAlign: TextAlign.center, style: TextStyle( fontSize: 14, @@ -361,8 +316,14 @@ class _RegisterScreenState extends State { ), SizedBox(height: 10), ElevatedButton( - onPressed: () { - context.go('/'); + onPressed: () => { + Navigator.pushReplacement( + context, + MaterialPageRoute(builder: (context) => LoginRoute() + + //ProfileScreen(userId: userID) + ), + ), }, child: Text( 'Go to Login', @@ -517,8 +478,8 @@ class _RegisterScreenState extends State { suffixIcon: IconButton( icon: Icon( _obscurePassword - ? Icons.visibility_off - : Icons.visibility, + ? Icons.visibility + : Icons.visibility_off, color: Colors.blue, ), onPressed: () { @@ -549,8 +510,8 @@ class _RegisterScreenState extends State { suffixIcon: IconButton( icon: Icon( _obscureConfirmPassword - ? Icons.visibility_off - : Icons.visibility, + ? Icons.visibility + : Icons.visibility_off, color: Colors.blue, ), onPressed: () {