66using System . Data ;
77using System . Linq ;
88using System . Net . Mail ;
9+ using System . Security . Cryptography ;
10+ using System . Text ;
911using System . Text . RegularExpressions ;
1012using System . Windows . Forms ;
1113
@@ -290,6 +292,11 @@ private void updateBtn_Click(object sender, EventArgs e)
290292 string password = passwordText . Text ;
291293 string HashedPassword = BCrypt . Net . BCrypt . HashPassword ( password ) ;
292294 Role SelectedRole = ( Role ) roleComboBox . SelectedItem ;
295+ if ( password == "" || SelectedRole == null )
296+ {
297+ MessageBox . Show ( "Please select a user to update" ) ;
298+ return ;
299+ }
293300 Users users = new Users ( 0 , userNameText . Text , HashedPassword , SelectedRole . RoleId , nameText . Text , emailText . Text , phoneNumberText . Text , addressText . Text , false ) ;
294301 if ( users . Username == "" && password == "" && users . Name == "" && users . Email == "" && users . PhoneNumber == "" && users . Address == "" )
295302 {
@@ -341,9 +348,13 @@ private void deleteBtn_Click(object sender, EventArgs e)
341348 }
342349 else
343350 {
344- MessageBox . Show ( "No User Selected ." ) ;
351+ MessageBox . Show ( "Error Updating User ." ) ;
345352 }
346353 }
354+ else
355+ {
356+ MessageBox . Show ( "No User Selected." ) ;
357+ }
347358 }
348359 }
349360
@@ -356,5 +367,53 @@ private void addressLabel_Click(object sender, EventArgs e)
356367 {
357368
358369 }
370+
371+ private void button1_Click ( object sender , EventArgs e )
372+ {
373+ string generatedPass = generateStrongPass ( ) ;
374+ passwordText . Text = generatedPass ;
375+ }
376+
377+ private string generateStrongPass ( )
378+ {
379+ // Define character sets for each password requirement
380+ string lowercaseChars = "abcdefghijklmnopqrstuvwxyz" ;
381+ string uppercaseChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ;
382+ string digitChars = "0123456789" ;
383+ string specialChars = "!@#$%^&*()_+-=[]{}|;:'\" <>,.?/" ;
384+
385+ // Combine all character sets
386+ string allChars = lowercaseChars + uppercaseChars + digitChars + specialChars ;
387+
388+ // Create a secure random number generator
389+ using ( var rng = new RNGCryptoServiceProvider ( ) )
390+ {
391+ StringBuilder password = new StringBuilder ( ) ;
392+
393+ // Add at least one character from each required set
394+ password . Append ( GetRandomCharacter ( lowercaseChars , rng ) ) ;
395+ password . Append ( GetRandomCharacter ( uppercaseChars , rng ) ) ;
396+ password . Append ( GetRandomCharacter ( digitChars , rng ) ) ;
397+ password . Append ( GetRandomCharacter ( specialChars , rng ) ) ;
398+
399+ // Add random characters to meet the length requirement
400+ int requiredLength = 8 ;
401+ while ( password . Length < requiredLength )
402+ {
403+ password . Append ( GetRandomCharacter ( allChars , rng ) ) ;
404+ }
405+
406+ return password . ToString ( ) ;
407+ }
408+
409+ }
410+
411+ static char GetRandomCharacter ( string characterSet , RNGCryptoServiceProvider rng )
412+ {
413+ byte [ ] randomBytes = new byte [ 1 ] ;
414+ rng . GetBytes ( randomBytes ) ;
415+ int index = randomBytes [ 0 ] % characterSet . Length ;
416+ return characterSet [ index ] ;
417+ }
359418 }
360419}
0 commit comments