<%@ Language=VBScript %> <% Option Explicit %> <% '------------------------------------------------------------------------- ' user_prop.asp : get's and set's the user properties. ' ' Copyright (c) Microsoft Corporation. All rights reserved. ' ' Date Description ' 15-jan-01 Creation date '------------------------------------------------------------------------- %> <% '------------------------------------------------------------------------- ' Global Constants and Variables '------------------------------------------------------------------------- Dim rc 'framework variables Dim page 'framework variables Dim idTabGeneral 'framework variables '------------------------------------------------------------------------- ' Global Form Variables '------------------------------------------------------------------------- Dim F_strOldUserName 'Stores the Username from the previous form Dim F_strUserName 'Stores the Username from the client Dim F_strFullName 'Stores FullName of the user Dim F_strDescription 'Stores Description of the user Dim F_strIschecked 'Used to store checked/unchecked Dim F_blnIschecked 'Used to store values (1 or null ) Dim F_strHomeDirectory 'Stores Home directory of the user Dim F_strOldHomeDirectory 'Stores previous Home directory of the user Dim F_strCheckboxClass 'Stores state of checkbox class. Dim F_strComputerName 'Stores the computer name Dim F_objComputer 'var for getting connection for user info Dim F_objUser 'var for getting user info ' Flag variable for setting disable property CONST CONST_UF_ACCOUNTDISABLE = &H0002 Const CONST_NONUNIQUEUSERNAME_ERRNO = &H800708B0 Const CONST_ADMINDISABLED_ERRNO = &H8007055B Const CONST_GROUP_EXISTS_ERRNO = &H80070560 '------------------------------------------------------------------------ 'Start of localization content '------------------------------------------------------------------------ Dim L_NOINPUTDATA_TEXT Dim L_TABPROPSHEET_TEXT Dim L_TABLEHEADING_TEXT Dim L_GENERAL_TEXT Dim L_PAGETITLE_TEXT Dim L_USERNAME_TEXT Dim L_FULLNAME_TEXT Dim L_DESCRIPTION_TEXT Dim L_USERDISABLED_TEXT Dim L_ENTERNAME_ERRORMESSAGE Dim L_INVALIDCHARACTER_ERRORMESSAGE Dim L_UNIQUEUSERNAME_ERRORMESSAGE Dim L_ADSI_ERRORMESSAGE Dim L_GROUP_EXISTS_ERRORMESSAGE Dim L_ADMINDISABLED_ERRORMESSAGE Dim L_HOMEDIRECTORY_TEXT Dim L_HOMEDIRECTORY_ERRORMESSAGE Dim L_CREATEHOMEDIRECTORY_ERRORMESSAGE Dim L_CREATEHOMEDIRECTORY_EXISTMESSAGE L_NOINPUTDATA_TEXT = objLocMgr.GetString("usermsg.dll","&H4030002C", varReplacementStrings) L_TABPROPSHEET_TEXT = objLocMgr.GetString("usermsg.dll","&H4030002D", varReplacementStrings) L_TABLEHEADING_TEXT = objLocMgr.GetString("usermsg.dll","&H4030002E", varReplacementStrings) L_GENERAL_TEXT = objLocMgr.GetString("usermsg.dll","&H4030002F", varReplacementStrings) L_USERNAME_TEXT = objLocMgr.GetString("usermsg.dll","&H40300031", varReplacementStrings) L_FULLNAME_TEXT = objLocMgr.GetString("usermsg.dll","&H40300032", varReplacementStrings) L_DESCRIPTION_TEXT = objLocMgr.GetString("usermsg.dll","&H40300033", varReplacementStrings) L_ENTERNAME_ERRORMESSAGE = objLocMgr.GetString("usermsg.dll","&HC0300035", varReplacementStrings) L_UNIQUEUSERNAME_ERRORMESSAGE = objLocMgr.GetString("usermsg.dll","&HC0300036", varReplacementStrings) L_INVALIDCHARACTER_ERRORMESSAGE = objLocMgr.GetString("usermsg.dll","&HC0300037", varReplacementStrings) L_ADSI_ERRORMESSAGE = objLocMgr.GetString("usermsg.dll","&HC0300038", varReplacementStrings) L_GROUP_EXISTS_ERRORMESSAGE = objLocMgr.GetString("usermsg.dll","&HC0300039", varReplacementStrings) L_ADMINDISABLED_ERRORMESSAGE = objLocMgr.GetString("usermsg.dll","&HC030003A", varReplacementStrings) L_HOMEDIRECTORY_TEXT = objLocMgr.GetString("usermsg.dll","&H40300052", varReplacementStrings) L_HOMEDIRECTORY_ERRORMESSAGE = objLocMgr.GetString("usermsg.dll","&HC0300053", varReplacementStrings) L_CREATEHOMEDIRECTORY_ERRORMESSAGE = objLocMgr.GetString("usermsg.dll","&HC0300057", varReplacementStrings) L_CREATEHOMEDIRECTORY_EXISTMESSAGE = objLocMgr.GetString("usermsg.dll","&HC0300059", varReplacementStrings) '------------------------------------------------------------------------ 'END of localization content '------------------------------------------------------------------------ ' Create a Tabbed Property Page Dim aUser(0) Dim sUser Call OTS_GetTableSelectionCount("") Call OTS_GetTableSelection("", 1, sUser) Call SA_TraceOut(SA_GetScriptFileName, "Selected user: " + sUser) aUser(0) = sUser L_PAGETITLE_TEXT = GetLocString("usermsg.dll","&H40300030", aUser) rc = SA_CreatePage( L_PAGETITLE_TEXT, "", PT_TABBED, page ) ' Add one tab rc = SA_AddTabPage( page, L_GENERAL_TEXT, idTabGeneral) ' Show the page rc = SA_ShowPage( page ) '------------------------------------------------------------------------- 'Function: OnInitPage() 'Description: Called to signal first time processing for this page. ' Use this method to do first time initialization tasks 'Input Variables: PageIn,EventArg 'Output Variables: PageIn,EventArg 'Returns: True/False 'Global Variables: None '------------------------------------------------------------------------- Public Function OnInitPage(ByRef PageIn, ByRef EventArg) 'globally required GetComputerObject() Dim iItemCount Dim sessionItem ' ' Get table selection count ' iItemCount = OTS_GetTableSelectionCount("") F_strCheckboxClass = "FormField" If iItemCount > 1 Then ' ' It's multiselection, only disable attribute can be changed ' Dim x Dim itemKey F_strIschecked = "unchecked" L_USERDISABLED_TEXT = objLocMgr.GetString("usermsg.dll","&H40300056", varReplacementStrings) For x = 1 To iItemCount 'Retrieve each user's property If ( OTS_GetTableSelection("", x, itemKey) ) Then F_strUserName = replace(itemKey,"\'","'") 'Get the user object Set F_objUser = F_objComputer.GetObject("User",F_strUserName) If Err.number <> 0 Then Err.Clear Call ServeFailurePage(L_ADSI_ERRORMESSAGE ,1) Exit Function End If If F_objUser.UserFlags And CONST_UF_ACCOUNTDISABLE Then 'Making F_strIschecked=checked for gui display only F_strIschecked = "checked" Else F_strCheckboxClass = "FormFieldTriState" End If Set F_objUser = Nothing 'Restore the session value ??? 'sessionItem = "Item" + CStr(x) 'Session(sessionItem) = itemKey End If Next F_strUserName = "" If F_strIschecked <> "checked" Then F_strCheckboxClass = "FormField" End If Else L_USERDISABLED_TEXT = objLocMgr.GetString("usermsg.dll","&H40300034", varReplacementStrings) ' ' It's single selection ' If F_strUserName = "" Then If ( OTS_GetTableSelection("", 1, itemKey) ) Then F_strUserName = replace(itemKey,"\'","'") ' making a copy for future reference F_strOldUserName= F_strUserName End If 'Restore the session value ??? 'sessionItem = "Item" + CStr(1) 'Session(sessionItem) = itemKey End If Set F_objUser = F_objComputer.GetObject("User",F_strOldUserName) If Err.number <> 0 Then SetErrMsg L_USERNOTFOUND_ERRORMESSAGE Exit Function End If F_strFullName = F_objUser.FullName 'Get's the full name F_strDescription = F_objUser.Description 'Gets the description F_strHomeDirectory = F_objUser.HomeDirectory 'Gets home directory F_strOldHomeDirectory = F_strHomeDirectory 'Store home directory ' checking for disable property If F_objUser.UserFlags And CONST_UF_ACCOUNTDISABLE Then 'Making F_strIschecked=checked for gui display only F_strIschecked = "checked" Else 'Making F_strIschecked=unchecked for gui display only F_strIschecked = "unchecked" End If Set F_objUser = Nothing End If Set F_objComputer =Nothing OnInitPage = TRUE End Function '------------------------------------------------------------------------- 'Function: OnPostBackPage() 'Description: Called to signal that the page has been posted-back. 'Input Variables: PageIn,EventArg 'Output Variables: None 'Returns: True/False 'Global Variables: None '------------------------------------------------------------------------- Public Function OnPostBackPage(ByRef PageIn, ByRef EventArg) OnPostBackPage = TRUE End Function '------------------------------------------------------------------------- 'Function: OnServeTabbedPropertyPage() 'Description: Called when the page needs to be served.Use this ' method to serve content 'Input Variables: PageIn,EventArg,iTab,bIsVisible 'Output Variables: PageIn,EventArg 'Returns: True/False 'Global Variables: None ' TRUE to indicate not problems occured. FALSE to indicate errors. ' Returning FALSE will cause the page to be abandoned. '------------------------------------------------------------------------- Public Function OnServeTabbedPropertyPage(ByRef PageIn, _ ByVal iTab, _ ByVal bIsVisible, ByRef EventArg) Dim iItemCount iItemCount = OTS_GetTableSelectionCount("") If iItemCount > 1 Then Dim x Dim itemKey Dim sessionItem 'Here we have to restore the session again. ??? For x = 1 To iItemCount If ( OTS_GetTableSelection("", x, itemKey) ) Then 'sessionItem = "Item" + CStr(x) 'Session(sessionItem) = itemKey End If Next ' Emit Web Framework required functions Call ServeMultiSelectionJScript() L_USERDISABLED_TEXT = GetLocString("usermsg.dll","40300056", "") 'Emit content for the requested tab Call ServeTab1(PageIn, bIsVisible, TRUE ) Else ' Emit Web Framework required functions Call ServeCommonJavaScript() L_USERDISABLED_TEXT = GetLocString("usermsg.dll","40300034", "") ' Emit content for the requested tab Call ServeTab1(PageIn, bIsVisible, FALSE ) End If OnServeTabbedPropertyPage = TRUE End Function '------------------------------------------------------------------------- 'Function: OnSubmitPage() 'Description: Called when the page has been submitted for processing. ' Use this method to process the submit request. 'Input Variables: PageIn,EventArg 'Output Variables: None 'Returns: True/False 'Global Variables: None '------------------------------------------------------------------------- Public Function OnSubmitPage(ByRef PageIn, ByRef EventArg) F_strUserName =Trim(Request.Form("txtUserName")) F_strOldUserName =Request.Form("hdnUsername") F_strFullName =Trim(Request.Form("txtfullName")) F_strDescription =Trim(Request.Form("txtDescription")) F_strHomeDirectory =Trim(Request.Form("txtHomeDirectory")) F_strOldHomeDirectory=Request.Form("hdnHomeDirectory") F_blnIschecked =Request.Form("chkuserDisabled") If F_blnIschecked=1 Then F_strIschecked = "checked" End if Dim iItemCount iItemCount = OTS_GetTableSelectionCount("") If( iItemCount > 1 ) Then OnSubmitPage = SetMultiSelectionProperty(iItemCount) Else OnSubmitPage = SetUserProperty() End If End Function '------------------------------------------------------------------------- 'Function: OnClosePage() 'Description: Called when the page is about closed.Use this method ' to perform clean-up processing 'Input Variables: PageIn,EventArg 'Output Variables: PageIn,EventArg 'Returns: True/False 'Global Variables: None '------------------------------------------------------------------------- Public Function OnClosePage(ByRef PageIn, ByRef EventArg) OnClosePage = TRUE End Function '------------------------------------------------------------------------- 'Function name: GetUserInformation 'Description: Get UserName from the system 'Input Variables: None 'Output Variables: None 'Returns: None 'Global Variables: None ' Out:F_objComputer 'User Name ' Out:F_objUsere 'Full Name ' In :L_ADSI_ERRORMESSAGE ' ' If ADSI Error, calls ServeFailurePage with the error string ' L_ADSI_ERRORMESSAGE. '-------------------------------------------------------------------------- Function GetComputerObject Err.Clear on Error resume next F_strComputerName=GetComputerName() Set F_objComputer = GetObject("WinNT://" & F_strComputerName) If Err.number <> 0 Then Err.Clear Call ServeFailurePage(L_ADSI_ERRORMESSAGE ,1) GetUserInformation=False Exit Function End If End function '------------------------------------------------------------------------- 'Function name: SetUserProperty 'Description: Setting the properties of the user 'Input Variables: None 'Output Variables: None 'Returns: (True / Flase ) 'Global Variables: None ' In:F_strFullname 'Fullname ' In:F_strDescription 'Description ' In:F_blnIschecked 'Checked or not ' In:F_strUserName 'Username ' In:F_strOldUserName 'Username to retain ' In:L_ADSI_ERRORMESSAGE ' In:L_NONUNIQUEUSERNAME_ERRORMESSAGE ' ' True ->If Implemented properly ' False->If Not Implemented ' Username allready exists, calls SetErrMsg with the error string ' L_NONUNIQUEUSERNAME_ERRORMESSAGE. ' If ADSI Error, calls SetErrMsg with the error string ' L_ADSI_ERRORMESSAGE. ' Const:CONST_UF_ACCOUNTDISABLE for setting disable property ' If administrator disabled Error,calls SetErrMsg with the error string ' L_ADMINDISABLED_ERRORMESSAGE '-------------------------------------------------------------------------- Function SetUserProperty Err.Clear on Error resume next Dim objDummy 'Dummy object Dim objFileSystem Dim bReturn 'Function call to connectto user GetComputerObject() Set F_objUser = F_objComputer.GetObject("User",F_strOldUserName) If Err.number <> 0 Then Err.Clear Call ServeFailurePage(L_ADSI_ERRORMESSAGE ,1) Exit Function End If Set objFileSystem=createobject("scripting.FileSystemObject") If Err.number <> 0 Then SetErrMsg L_CREATEHOMEDIRECTORY_ERRORMESSAGE Exit Function End If 'Create home directory by settings. If ((F_strHomeDirectory <> F_strOldHomeDirectory) AND (F_strHomeDirectory <> "")) Then bReturn = CreateHomeDirectory( F_strHomeDirectory, objFileSystem ) If( bReturn = CONST_CREATDIRECTORY_ERROR ) Then SetErrMsg L_CREATEHOMEDIRECTORY_ERRORMESSAGE Exit Function ElseIf( bReturn = CONST_CREATDIRECTORY_EXIST ) Then SetErrMsg L_CREATEHOMEDIRECTORY_EXISTMESSAGE Exit Function End If End If 'Setting the user info objDummy =F_objUser.Put("FullName",F_strFullName) objDummy =F_objUser.Put("Description",F_strDescription) objDummy =F_objUser.Put("HomeDirectory",F_strHomeDirectory) 'Setting the disable property SetDisableProperty() F_objUser.SetInfo() 'This is to change the Group name If ( F_strUserName <> F_strOldUserName ) Then F_objComputer.MoveHere F_objUser.AdsPath ,F_strUserName End If 'Set to Nothing Set F_objComputer =Nothing Set F_objUser =Nothing Set objFileSystem =Nothing 'Error Occurs,this Error validation takecare If Err.number <> 0 Then If Err.number = CONST_NONUNIQUEUSERNAME_ERRNO Then SetErrMsg L_UNIQUEUSERNAME_ERRORMESSAGE Elseif Err.Number = CONST_GROUP_EXISTS_ERRNO Then SetErrMsg L_GROUP_EXISTS_ERRORMESSAGE Elseif Err.Number = CONST_ADMINDISABLED_ERRNO then SetErrMsg L_ADMINDISABLED_ERRORMESSAGE Else SetErrMsg L_ADSI_ERRORMESSAGE End If 'This is to take care of old value to be replaced with new value in case of failure F_strUserName=F_strOldUserName SetUserProperty=False Exit Function End If If ((F_strHomeDirectory <> F_strOldHomeDirectory) AND (F_strHomeDirectory <> "")) Then Call SetHomeDirectoryPermission( F_strComputerName, F_strUsername, F_strHomeDirectory ) End If SetUserProperty=True End Function '-------------------------------------------------------------------------- 'Function name: GetDefaultHomeDirectory 'Description: Get default homedirectory of the user 'Input Variables: None 'Output Variables: None 'Returns: Default homedirectory of the user 'Global Variables: ' In:F_strUserName 'current user name '-------------------------------------------------------------------------- Function GetDefaultHomeDirectory() Dim objReg Dim strDefaultHomeDir Set objReg = RegConnection() strDefaultHomeDir = GetRegKeyValue( objReg,_ CONST_USERGROUP_KEYNAME,_ CONST_USERDIR_VALUENAME,_ CONST_STRING ) If ( Len(strDefaultHomeDir) <= 0 ) Then strDefaultHomeDir = CONST_DEFAULTHOMEDIR End If GetDefaultHomeDirectory = strDefaultHomeDir + F_strUserName Set objReg = nothing End Function '-------------------------------------------------------------------------- 'Function name: SetDisableProperty 'Description: Change the disable flage of the user 'Input Variables: None 'Output Variables: None 'Returns: None 'Global Variables: ' In:F_objUser 'Object of user ' In:F_blnIschecked 'Checked or not '-------------------------------------------------------------------------- Function SetDisableProperty() Dim flagUserFlags 'Flage variable If F_blnIschecked=1 Then flagUserFlags = F_objUser.UserFlags OR CONST_UF_ACCOUNTDISABLE Else if ((F_objUser.UserFlags) = (F_objUser.UserFlags OR CONST_UF_ACCOUNTDISABLE)) Then flagUserFlags = F_objUser.UserFlags XOR CONST_UF_ACCOUNTDISABLE Else flagUserFlags = F_objUser.UserFlags End If End If F_objUser.Put "UserFlags", flagUserFlags End Function '------------------------------------------------------------------------- 'Function name: SetMultiSelectionProperty 'Description: Setting the properties of the selected users 'Input Variables: iItemCount 'Output Variables: None 'Returns: (True / Flase ) 'Global Variables: None ' In:F_blnIschecked 'Checked or not ' In:L_ADSI_ERRORMESSAGE ' In:L_NONUNIQUEUSERNAME_ERRORMESSAGE ' ' True ->If Implemented properly ' False->If Not Implemented ' Username allready exists, calls SetErrMsg with the error string ' L_NONUNIQUEUSERNAME_ERRORMESSAGE. ' If ADSI Error, calls SetErrMsg with the error string ' L_ADSI_ERRORMESSAGE. ' Const:CONST_UF_ACCOUNTDISABLE for setting disable property ' If administrator disabled Error,calls SetErrMsg with the error string ' L_ADMINDISABLED_ERRORMESSAGE '-------------------------------------------------------------------------- Function SetMultiSelectionProperty(ByVal iItemCount) Err.Clear on Error resume next Dim x Dim itemKey Dim sessionItem SetMultiSelectionProperty = false GetComputerObject() For x = 1 To iItemCount If ( OTS_GetTableSelection("", x, itemKey) ) Then F_strUserName = replace(itemKey,"\'","'") Set F_objUser = F_objComputer.GetObject("User",F_strUserName) If Err.number <> 0 Then Err.Clear Call ServeFailurePage(L_ADSI_ERRORMESSAGE ,1) Exit Function End If SetDisableProperty() F_objUser.SetInfo() Set F_objUser = Nothing 'sessionItem = "Item" + CStr(x) 'Session(sessionItem) = itemKey If Err.number <> 0 Then If Err.Number = CONST_ADMINDISABLED_ERRNO then SetErrMsg L_ADMINDISABLED_ERRORMESSAGE & " " & "(" & F_strUserName & ")" Else SetErrMsg L_ADSI_ERRORMESSAGE& " " & "(" & F_strUserName & ")" End If Set F_objComputer =Nothing Exit Function End If End If Next Set F_objComputer =Nothing SetMultiSelectionProperty = true End Function '------------------------------------------------------------------------- 'Function: ServeTab1 'Description: Serves in getting the page for tab1 'Input Variables: PageIn,bIsVisible 'Output Variables: PageIn 'Returns: gc_ERR_SUCCESS 'Global Variables: L_(*)All ' F_(*) All '------------------------------------------------------------------------- Function ServeTab1(ByRef PageIn, ByVal bIsVisible, ByVal bIsMultiSelection ) Dim strTableClass Dim strIfDisabled Dim strFormClass If ( bIsMultiSelection ) Then strTableClass = "TasksBodyDisabled" strIfDisabled = "disabled" strFormClass = "FormFieldDisabled" Else strTableClass = "TasksBody" strIfDisabled = "" strFormClass = "FormField" End If If ( bIsVisible ) Then%>
<%=L_USERNAME_TEXT %> class="<%=Server.HTMLEncode(strFormClass)%>" maxlength=20 OnKeyUp="JavaScript:makeDisable(txtUserName)">
<%=L_FULLNAME_TEXT %> class="<%=Server.HTMLEncode(strFormClass)%>" VALUE="<%=Server.HTMLEncode(F_strFullName)%>">
<%=L_DESCRIPTION_TEXT %> class="<%=Server.HTMLEncode(strFormClass)%>" VALUE="<%=Server.HTMLEncode(F_strDescription)%>" maxlength=300>
<%=L_HOMEDIRECTORY_TEXT %> class="<%=Server.HTMLEncode(strFormClass)%>" VALUE="<%=Server.HTMLEncode(F_strHomeDirectory)%>" maxlength=300>
value="1" onclick="checkboxClick()"> <%=L_USERDISABLED_TEXT %>
<% End If ServeTab1 = gc_ERR_SUCCESS End Function '------------------------------------------------------------------------- 'Function: ServeMultiSelectionJScript 'Description: Serves in getting the page for tab1 in multiselect 'Input Variables: None 'Output Variables: None 'Returns: None 'Global Variables: L_(*)All ' F_(*) All '------------------------------------------------------------------------- Function ServeMultiSelectionJScript() %> <% End Function '------------------------------------------------------------------------- 'Function: ServeCommonJavaScript 'Description: Serves in initialiging the values,setting the form ' data and validating the form values 'Input Variables: None 'Output Variables: None 'Returns: None 'Global Variables: L_PASSWORDNOTMATCH_ERRORMESSAGE '------------------------------------------------------------------------- Function ServeCommonJavaScript() %> <% End Function %>