/*\r
* TODO:\r
* - Add new user to the users group.\r
- * - Check a new users name for illegal characters.\r
- * - Check whether both passwords are the same for a new user.\r
* - Remove a user from all groups.\r
* - Implement user property pages.\r
* - Use localized messages.\r
}\r
\r
\r
+static BOOL\r
+CheckUserName(HWND hwndDlg,\r
+ INT nIdDlgItem)\r
+{\r
+ TCHAR szUserName[256];\r
+ UINT uLen;\r
+\r
+ uLen = GetDlgItemText(hwndDlg, nIdDlgItem, szUserName, 256);\r
+\r
+ /* Check the user name */\r
+ if (uLen > 0 && _tcspbrk(szUserName, TEXT("\"*+,/\\:;<=>?[]|")) != NULL)\r
+ {\r
+ MessageBox(hwndDlg,\r
+ TEXT("The user name you entered is invalid! A user name must not contain the following charecters: *+,/:;<=>?[\\]|"),\r
+ TEXT("ERROR"),\r
+ MB_OK | MB_ICONERROR);\r
+ return FALSE;\r
+ }\r
+\r
+\r
+ return TRUE;\r
+}\r
+\r
+\r
+\r
INT_PTR CALLBACK\r
ChangePasswordDlgProc(HWND hwndDlg,\r
UINT uMsg,\r
{\r
case WM_INITDIALOG:\r
SetWindowLongPtr(hwndDlg, DWLP_USER, lParam);\r
+ SendDlgItemMessage(hwndDlg, IDC_USER_NEW_NAME, EM_SETLIMITTEXT, 20, 0);\r
CheckDlgButton(hwndDlg, IDC_USER_NEW_FORCE_CHANGE, BST_CHECKED);\r
break;\r
\r
break;\r
\r
case IDOK:\r
+ if (!CheckUserName(hwndDlg, IDC_USER_NEW_NAME))\r
+ {\r
+ SetFocus(GetDlgItem(hwndDlg, IDC_USER_NEW_NAME));\r
+ SendDlgItemMessage(hwndDlg, IDC_USER_NEW_NAME, EM_SETSEL, 0, -1);\r
+ break;\r
+ }\r
+\r
+ if (!CheckPasswords(hwndDlg, IDC_USER_NEW_PASSWORD1, IDC_USER_NEW_PASSWORD2))\r
+ {\r
+ SetDlgItemText(hwndDlg, IDC_USER_NEW_PASSWORD1, TEXT(""));\r
+ SetDlgItemText(hwndDlg, IDC_USER_NEW_PASSWORD2, TEXT(""));\r
+ break;\r
+ }\r
+\r
userInfo = (LPUSER_INFO_3)GetWindowLongPtr(hwndDlg, DWLP_USER);\r
\r
nLength = SendDlgItemMessage(hwndDlg, IDC_USER_NEW_NAME, WM_GETTEXTLENGTH, 0, 0);\r