6 #include "TaAfsUsrMgr.h"
12 * DEFINITIONS ________________________________________________________________
18 * PROTOTYPES _________________________________________________________________
22 BOOL CALLBACK User_Password_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
23 void User_Password_OnInitDialog (HWND hDlg);
24 BOOL User_Password_OnOK (HWND hDlg);
25 void User_Password_OnSelectVer (HWND hDlg);
26 void User_Password_OnSelectType (HWND hDlg);
27 void User_Password_OnType (HWND hDlg);
28 void User_Password_OnRandom (HWND hDlg);
29 void User_Password_OnEndTask_Random (HWND hDlg, LPTASKPACKET ptp);
33 * ROUTINES ___________________________________________________________________
37 void User_ShowChangePassword (HWND hParent, ASID idUser)
39 ModalDialogParam (IDD_USER_PASSWORD, hParent, (DLGPROC)User_Password_DlgProc, (LPARAM)idUser);
43 BOOL CALLBACK User_Password_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
45 if (AfsAppLib_HandleHelp (IDD_USER_PASSWORD, hDlg, msg, wp, lp))
51 SetWindowLong (hDlg, DWL_USER, lp);
52 User_Password_OnInitDialog (hDlg);
57 if ((ptp = (LPTASKPACKET)lp) != NULL)
59 if (ptp->idTask == taskGET_RANDOM_KEY)
60 User_Password_OnEndTask_Random (hDlg, ptp);
69 if (User_Password_OnOK (hDlg))
70 EndDialog (hDlg, IDOK);
74 EndDialog (hDlg, IDCANCEL);
77 case IDC_CPW_VERSION_AUTO:
78 case IDC_CPW_VERSION_MANUAL:
79 User_Password_OnSelectVer (hDlg);
82 case IDC_CPW_BYSTRING:
84 User_Password_OnSelectType (hDlg);
89 User_Password_OnType (hDlg);
93 User_Password_OnRandom (hDlg);
103 void User_Password_OnInitDialog (HWND hDlg)
105 ASID idUser = (ASID)GetWindowLong (hDlg, DWL_USER);
107 // Get the current properties for this user
110 TCHAR szName[ cchNAME ];
111 User_GetDisplayName (szName, idUser);
113 ASOBJPROP Properties;
114 if (!asc_ObjectPropertiesGet_Fast (g.idClient, g.idCell, idUser, &Properties, &status))
116 ErrorDialog (status, IDS_ERROR_CANT_GET_USERPROP, TEXT("%s"), szName);
117 EndDialog (hDlg, IDCANCEL);
121 // Fill in the text at the top of the dialog
123 TCHAR szOld[ cchRESOURCE ];
124 GetDlgItemText (hDlg, IDC_CPW_TITLE, szOld, cchRESOURCE);
126 LPTSTR pszText = FormatString (szOld, TEXT("%s"), szName);
127 SetDlgItemText (hDlg, IDC_CPW_TITLE, pszText);
128 FreeString (pszText);
130 // Check the appropriate radio buttons, etc
132 CheckDlgButton (hDlg, IDC_CPW_VERSION_AUTO, TRUE);
133 CheckDlgButton (hDlg, IDC_CPW_BYSTRING, TRUE);
134 CreateSpinner (GetDlgItem (hDlg, IDC_CPW_VERSION), 10, FALSE, 1, 1+Properties.u.UserProperties.KASINFO.keyVersion, 255);
135 User_Password_OnSelectType (hDlg);
136 User_Password_OnSelectVer (hDlg);
140 void User_Password_OnSelectVer (HWND hDlg)
142 EnableWindow (GetDlgItem (hDlg, IDC_CPW_VERSION), IsDlgButtonChecked (hDlg, IDC_CPW_VERSION_MANUAL));
146 void User_Password_OnSelectType (HWND hDlg)
148 EnableWindow (GetDlgItem (hDlg, IDC_CPW_STRING), IsDlgButtonChecked (hDlg, IDC_CPW_BYSTRING));
149 EnableWindow (GetDlgItem (hDlg, IDC_CPW_DATA), IsDlgButtonChecked (hDlg, IDC_CPW_BYDATA));
150 EnableWindow (GetDlgItem (hDlg, IDC_CPW_RANDOM), IsDlgButtonChecked (hDlg, IDC_CPW_BYDATA));
151 User_Password_OnType (hDlg);
155 void User_Password_OnType (HWND hDlg)
157 BOOL fEnable = FALSE;
159 if (IsDlgButtonChecked (hDlg, IDC_CPW_BYSTRING))
161 TCHAR szKey[ cchRESOURCE ];
162 GetDlgItemText (hDlg, IDC_CPW_STRING, szKey, cchRESOURCE);
163 if (szKey[0] != TEXT('\0'))
166 else // (IsDlgButtonChecked (hDlg, IDC_CPW_BYDATA))
168 TCHAR szKey[ cchRESOURCE ];
169 GetDlgItemText (hDlg, IDC_CPW_DATA, szKey, cchRESOURCE);
171 BYTE key[ ENCRYPTIONKEYLENGTH ];
172 if (ScanServerKey (key, szKey))
176 EnableWindow (GetDlgItem (hDlg, IDOK), fEnable);
180 void User_Password_OnRandom (HWND hDlg)
182 StartTask (taskGET_RANDOM_KEY, hDlg, 0);
186 BOOL User_Password_OnOK (HWND hDlg)
188 ASID idUser = (ASID)GetWindowLong (hDlg, DWL_USER);
190 LPUSER_CPW_PARAMS lpp = New (USER_CPW_PARAMS);
191 memset (lpp, 0x00, sizeof(USER_CPW_PARAMS));
192 lpp->idUser = idUser;
194 if (IsDlgButtonChecked (hDlg, IDC_CPW_VERSION_MANUAL))
195 lpp->keyVersion = SP_GetPos (GetDlgItem (hDlg, IDC_CPW_VERSION));
196 else // (IsDlgButtonChecked (hDlg, IDC_CPW_VERSION_AUTO))
199 if (IsDlgButtonChecked (hDlg, IDC_CPW_BYSTRING))
201 GetDlgItemText (hDlg, IDC_CPW_STRING, lpp->keyString, cchRESOURCE);
203 else // (IsDlgButtonChecked (hDlg, IDC_CPW_BYDATA))
205 TCHAR szKey[ cchRESOURCE ];
206 GetDlgItemText (hDlg, IDC_CPW_DATA, szKey, cchRESOURCE);
208 if (!ScanServerKey (lpp->keyData, szKey))
215 StartTask (taskUSER_CPW, NULL, lpp);
220 void User_Password_OnEndTask_Random (HWND hDlg, LPTASKPACKET ptp)
224 ErrorDialog (ptp->status, IDS_ERROR_CANT_GET_RANDOM_KEY);
225 EnableWindow (GetDlgItem (hDlg, IDC_CPW_RANDOM), FALSE);
229 TCHAR szKey[ cchRESOURCE ];
230 FormatServerKey (szKey, TASKDATA(ptp)->key);
231 SetDlgItemText (hDlg, IDC_CPW_DATA, szKey);