mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
532 lines
14 KiB
532 lines
14 KiB
/**********************************************************************/
|
|
/** Microsoft Windows NT **/
|
|
/** Copyright(c) Microsoft Corp., 1991 **/
|
|
/**********************************************************************/
|
|
|
|
/*
|
|
AlsProp.hxx
|
|
|
|
Header file for the alias properties dialog and subdialogs.
|
|
|
|
The inheritance diagram is as follows:
|
|
|
|
...
|
|
|
|
|
DIALOG_WINDOW PERFORMER
|
|
\ /
|
|
BASEPROP_DLG
|
|
/ \
|
|
PROP_DLG ...
|
|
/ \
|
|
ALIASPROP_DLG ...
|
|
/ \
|
|
EDIT_ALIASPROP_DLG NEW_ALIASPROP_DLG
|
|
|
|
|
|
FILE HISTORY:
|
|
Thomaspa 17-Mar-1992 Templated from grpprop.cxx
|
|
Thomaspa 11-May-1992 Code review changes
|
|
JonN 17-Aug-1992 HAW-for-Hawaii in listbox
|
|
*/
|
|
|
|
#ifndef _ALSPROP_HXX_
|
|
#define _ALSPROP_HXX_
|
|
|
|
|
|
#include <propdlg.hxx>
|
|
#include <uintsam.hxx> // SAM_ALIAS
|
|
#include <security.hxx>
|
|
#include <asel.hxx>
|
|
#include <slestrip.hxx>
|
|
#include <slist.hxx>
|
|
#include <memblb.hxx>
|
|
#include <usrmain.hxx> // for QueryAdminAuthority()
|
|
|
|
// Forward refs
|
|
|
|
class SEARCH_LISTBOX_LOCK;
|
|
class SUBJECT_BITMAP_BLOCK;
|
|
|
|
DECLARE_SLIST_OF( OS_SID )
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: ACCOUNTS_LBI
|
|
|
|
SYNOPSIS: This class is used to list the Users and Groups
|
|
contained in the "Members" listbox.
|
|
|
|
INTERFACE: Standard LBI interface... not
|
|
|
|
PARENT: LBI
|
|
|
|
HISTORY:
|
|
Thomaspa 3-Apr-1992 Templated from Usrbrows.hxx
|
|
beng 22-Apr-1992 Change to LBI::Paint
|
|
beng 08-Jun-1992 Differentiate remote users
|
|
|
|
**************************************************************************/
|
|
|
|
class ACCOUNTS_LBI : public LBI
|
|
{
|
|
public:
|
|
ACCOUNTS_LBI( const TCHAR * pszSubjectName,
|
|
PSID psidSubject, // This will be copied.
|
|
SID_NAME_USE SidType,
|
|
BOOL fIsMemberAlready = TRUE,
|
|
BOOL fRemoteUser = FALSE ) ;
|
|
|
|
ACCOUNTS_LBI( const TCHAR * pszSubjectName,
|
|
ULONG ulRIDSubject,
|
|
PSID psidDomain,
|
|
SID_NAME_USE SidType,
|
|
BOOL fIsMemberAlready = TRUE,
|
|
BOOL fRemoteUser = FALSE ) ;
|
|
virtual ~ACCOUNTS_LBI() ;
|
|
|
|
virtual VOID Paint( LISTBOX * plb, HDC hdc, const RECT * prect,
|
|
GUILTT_INFO * pGUILTT ) const;
|
|
virtual INT Compare( const LBI * plbi ) const;
|
|
virtual WCHAR QueryLeadingChar() const;
|
|
|
|
/* This method is primarily used to determine which display map should
|
|
* be used for this LBI.
|
|
*/
|
|
SID_NAME_USE QueryType() const
|
|
{ return _SidType ; }
|
|
|
|
VOID SetType( SID_NAME_USE sidtype )
|
|
{ _SidType = sidtype; }
|
|
|
|
const TCHAR * QueryDisplayName() const
|
|
{ return _nlsDisplayName.QueryPch() ; }
|
|
|
|
APIERR SetDisplayName( const TCHAR * pszName )
|
|
{ return _nlsDisplayName.CopyFrom( pszName ); }
|
|
|
|
const OS_SID * QueryOSSID() const
|
|
{ return &_ossid; }
|
|
|
|
PSID QueryPSID() const
|
|
{ return QueryOSSID()->QuerySid() ; }
|
|
|
|
BOOL IsMemberAlready() const
|
|
{ return _fIsMemberAlready ; }
|
|
|
|
BOOL IsRemoteUser() const
|
|
{ return _fRemoteUser; }
|
|
|
|
protected:
|
|
virtual INT Compare_HAWforHawaii( const NLS_STR & nls ) const;
|
|
|
|
private:
|
|
NLS_STR _nlsDisplayName ;
|
|
|
|
OS_SID _ossid;
|
|
|
|
/* This enum (contained in ntseapi.h) defines what type of name this
|
|
* lbi contains.
|
|
*/
|
|
SID_NAME_USE _SidType ;
|
|
|
|
/*
|
|
* True if the account is already a member of the alias. False if
|
|
* it is to be added to alias.
|
|
*/
|
|
BOOL _fIsMemberAlready ;
|
|
|
|
BOOL _fRemoteUser;
|
|
};
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: ACCOUNTS_LB
|
|
|
|
SYNOPSIS: This class is the container listbox for the Members of
|
|
the alias.
|
|
|
|
INTERFACE:
|
|
|
|
PARENT: BLT_LISTBOX
|
|
|
|
USES: DISPLAY_MAP
|
|
|
|
HISTORY:
|
|
Thomaspa 3-Apr-1992 Templated from usrbrows.hxx
|
|
JonN 17-Aug-1992 HAW-for-Hawaii in listbox
|
|
|
|
**************************************************************************/
|
|
|
|
class ACCOUNTS_LB : public BLT_LISTBOX_HAW
|
|
{
|
|
private:
|
|
|
|
/* Column widths array.
|
|
*/
|
|
UINT _adxColumns[2] ;
|
|
|
|
const SUBJECT_BITMAP_BLOCK & _bmpblock;
|
|
|
|
public:
|
|
ACCOUNTS_LB( OWNER_WINDOW * powin,
|
|
CID cid,
|
|
const SUBJECT_BITMAP_BLOCK & bmpblock ) ;
|
|
~ACCOUNTS_LB() ;
|
|
|
|
DECLARE_LB_QUERY_ITEM( ACCOUNTS_LBI ) ;
|
|
|
|
DISPLAY_MAP * QueryDisplayMap( const ACCOUNTS_LBI * plbi ) ;
|
|
|
|
UINT * QueryColWidthArray()
|
|
{ return _adxColumns ; }
|
|
};
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: ALIASPROP_DLG
|
|
|
|
SYNOPSIS: ALIASPROP_DLG is the base dialog class for all variants
|
|
of the main Alias Properties dialog.
|
|
|
|
INTERFACE:
|
|
QueryAliasPtr() : Returns a pointer to the SAM_ALIAS for this
|
|
selected alias. Default arg = 0
|
|
SetAliasPtr() : Changes the pointer to the SAM_ALIAS for this
|
|
selected alias. Deletes the previous pointer.
|
|
W_MapPerformOneError() : When PerformOne encounters an
|
|
error, this method determines whether any field
|
|
should be selected and a more specific error
|
|
message displayed.
|
|
|
|
W_GetOne() : creates SAM_ALIAS obj for GetOne
|
|
|
|
W_PerformOne() : work function for subclasses' PerformOne
|
|
|
|
_nlsComment : Contains the current contents of the
|
|
Comment edit field. This will initially be the
|
|
empty string for New Alias variants.
|
|
|
|
AddAccountsToMembersLb() : Move accounts (that are in current
|
|
SAM_ALIAS) Members listbox
|
|
|
|
PARENT: PROP_DLG
|
|
|
|
USES: SEARCH_LISTBOX_LOCK, NLS_STR, SLT, SLE_STRIP, SAM_ALIAS,
|
|
OS_SID, PUSH_BUTTON, ACCOUNTS_LB, LAZY_USER_LISTBOX
|
|
|
|
NOTES:
|
|
New alias variants are required to pass psel==NULL to the constructor.
|
|
|
|
ALIASPROP_DLG's constructor is protected.
|
|
|
|
We do not need the _nlsInit and _fValidInit data members
|
|
in this class. These data members are only needed for
|
|
multiple selection.
|
|
|
|
Due to the potentially large number of users we bypass the
|
|
"members" for the list of users, and move them directly
|
|
between the dialog and the LMOBJ.
|
|
|
|
See also the SEARCH_LISTBOX_LOCK class (which should be local
|
|
to the class - C7 workitem).
|
|
|
|
HISTORY:
|
|
Thomaspa 17-Mar-1992 Templated from GROUPPROP_DLG
|
|
beng 08-Jun-1992 Differentiate remote users
|
|
|
|
**************************************************************************/
|
|
|
|
class ALIASPROP_DLG: public PROP_DLG
|
|
{
|
|
friend class SEARCH_LISTBOX_LOCK;
|
|
|
|
private:
|
|
|
|
SAM_ALIAS ** _apsamalias;
|
|
SLT _sltAliasNameLabel;
|
|
SLIST_OF( OS_SID ) _slRemovedAccounts ;
|
|
PUSH_BUTTON _pushbuttonFullNames;
|
|
PUSH_BUTTON _pushbuttonRemove;
|
|
PUSH_BUTTON _pushbuttonAdd;
|
|
PUSH_BUTTON _pushbuttonOK;
|
|
|
|
UINT _cLocks; // See SEARCH_LISTBOX_LOCK
|
|
USER_LISTBOX_SORTORDER _ulsoSave;
|
|
|
|
BOOL IsRemoteUser( const NLS_STR & nlsName );
|
|
|
|
|
|
protected:
|
|
|
|
const UM_ADMIN_APP * _pumadminapp;
|
|
|
|
SLT _sltAliasName; // for edit variant
|
|
SLE_STRIP _sleAliasName; // for new variant
|
|
|
|
NLS_STR _nlsComment;
|
|
|
|
SLE _sleComment;
|
|
|
|
ACCOUNTS_LB _lbMembers;
|
|
|
|
BOOL _fShowFullNames ;
|
|
|
|
const LAZY_USER_LISTBOX *_pulb; // pointer to main screen's user lb
|
|
|
|
ALIASPROP_DLG(
|
|
const OWNER_WINDOW * powin,
|
|
const UM_ADMIN_APP * pumadminapp,
|
|
const LAZY_USER_LISTBOX * pulb,
|
|
const LOCATION & loc,
|
|
const ADMIN_SELECTION * psel // "new alias" variants pass NULL
|
|
) ;
|
|
|
|
/* inherited from PROP_DLG */
|
|
virtual APIERR GetOne(
|
|
UINT iObject,
|
|
APIERR * pErrMsg
|
|
) = 0;
|
|
|
|
virtual APIERR InitControls();
|
|
|
|
APIERR MoveAccountsToMembersLb();
|
|
|
|
APIERR W_PerformOne(
|
|
UINT iObject,
|
|
APIERR * pErrMsg,
|
|
BOOL * pfWorkWasDone
|
|
);
|
|
|
|
/* inherited from PERFORMER */
|
|
APIERR PerformOne(
|
|
UINT iObject,
|
|
APIERR * pErrMsg,
|
|
BOOL * pfWorkWasDone
|
|
) = 0;
|
|
|
|
virtual APIERR W_LMOBJtoMembers(
|
|
UINT iObject
|
|
);
|
|
|
|
virtual APIERR W_DialogToMembers();
|
|
|
|
APIERR AddAccountsToMembersLb(BOOL fIsNewAlias = FALSE);
|
|
|
|
|
|
virtual BOOL OnCommand( const CONTROL_EVENT & ce );
|
|
virtual BOOL OnOK();
|
|
virtual BOOL OnAdd();
|
|
virtual BOOL OnRemove();
|
|
virtual BOOL OnShowFullnames();
|
|
|
|
const ADMIN_AUTHORITY * QueryAdminAuthority()
|
|
{
|
|
return _pulb->QueryUAppWindow()->QueryAdminAuthority();
|
|
}
|
|
|
|
inline ULONG QueryHelpOffset( void ) const
|
|
{ return _pulb->QueryUAppWindow()->QueryHelpOffset(); }
|
|
|
|
public:
|
|
|
|
virtual ~ALIASPROP_DLG();
|
|
|
|
/* inherited from PERFORMER */
|
|
virtual UINT QueryObjectCount() const;
|
|
virtual const TCHAR * QueryObjectName(
|
|
UINT iObject
|
|
) const = 0;
|
|
|
|
enum UM_TARGET_TYPE QueryTargetServerType() const
|
|
{ return _pumadminapp->QueryTargetServerType(); }
|
|
|
|
SAM_ALIAS * QueryAliasPtr( UINT iObject ) const;
|
|
VOID SetAliasPtr( UINT iObject, SAM_ALIAS * psamaliasNew );
|
|
};
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: SEARCH_LISTBOX_LOCK
|
|
|
|
SYNOPSIS: Locks the main user listbox for remote-user searches
|
|
|
|
CAVEATS:
|
|
Clients have no business instantiating this class.
|
|
|
|
NOTES:
|
|
This class should be private to ALIASPROP_DLG.
|
|
See ALIASPROP_DLG::IsRemoteUser().
|
|
|
|
HISTORY:
|
|
beng 08-Jun-1992 Created
|
|
|
|
**************************************************************************/
|
|
|
|
class SEARCH_LISTBOX_LOCK: public BASE
|
|
{
|
|
private:
|
|
ALIASPROP_DLG * _pdlgOwner;
|
|
|
|
public:
|
|
SEARCH_LISTBOX_LOCK( ALIASPROP_DLG * );
|
|
~SEARCH_LISTBOX_LOCK();
|
|
};
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: EDIT_ALIASPROP_DLG
|
|
|
|
SYNOPSIS: EDIT_ALIASPROP_DLG is the dialog class for the Alias
|
|
Properties dialog.
|
|
|
|
INTERFACE: EDIT_ALIASPROP_DLG - constructor
|
|
|
|
~EDIT_ALIASPROP_DLG - destructor
|
|
|
|
QueryObjectName - returns alias name
|
|
|
|
|
|
PARENT: ALIASPROP_DLG
|
|
|
|
HISTORY:
|
|
Thomaspa 17-Mar-1992 Templated from EDIT_GROUPPROP_DLG
|
|
|
|
**************************************************************************/
|
|
|
|
class EDIT_ALIASPROP_DLG: public ALIASPROP_DLG
|
|
{
|
|
private:
|
|
const ADMIN_SELECTION * _psel;
|
|
|
|
ULONG QueryObjectRID(
|
|
UINT iObject
|
|
) const;
|
|
|
|
BOOL IsBuiltinAlias(
|
|
UINT iObject
|
|
) const;
|
|
|
|
|
|
protected:
|
|
|
|
/* inherited from PROP_DLG */
|
|
virtual APIERR GetOne(
|
|
UINT iObject,
|
|
APIERR * pErrMsg
|
|
);
|
|
virtual APIERR InitControls();
|
|
|
|
/* inherited from PERFORMER */
|
|
virtual APIERR PerformOne(
|
|
UINT iObject,
|
|
APIERR * pErrMsg,
|
|
BOOL * pfWorkWasDone
|
|
);
|
|
|
|
virtual ULONG QueryHelpContext();
|
|
|
|
|
|
public:
|
|
|
|
EDIT_ALIASPROP_DLG(
|
|
const OWNER_WINDOW * powin,
|
|
const UM_ADMIN_APP * pumadminapp,
|
|
const LAZY_USER_LISTBOX * pulb,
|
|
const LOCATION & loc,
|
|
const ADMIN_SELECTION * psel
|
|
) ;
|
|
|
|
virtual ~EDIT_ALIASPROP_DLG();
|
|
|
|
/* inherited from PERFORMER */
|
|
virtual const TCHAR * QueryObjectName(
|
|
UINT iObject
|
|
) const;
|
|
};
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: NEW_ALIASPROP_DLG
|
|
|
|
SYNOPSIS: NEW_ALIASPROP_DLG is the dialog class for the new alias
|
|
variant of the Alias Properties dialog. This includes
|
|
both "New Alias..." and "Copy Alias...".
|
|
|
|
INTERFACE: NEW_ALIASPROP_DLG - constructor
|
|
|
|
~NEW_ALIASPROP_DLG - destructor
|
|
|
|
QueryObjectName - returns alias name
|
|
|
|
PARENT: ALIASPROP_DLG
|
|
|
|
HISTORY:
|
|
Thomaspa 17-Mar-1992 Templated from NEW_GROUPPROP_DLG
|
|
|
|
**************************************************************************/
|
|
|
|
class NEW_ALIASPROP_DLG: public ALIASPROP_DLG
|
|
{
|
|
private:
|
|
|
|
NLS_STR _nlsAliasName;
|
|
const ULONG * _pridCopyFrom;
|
|
BOOL _fCopyBuiltin;
|
|
|
|
protected:
|
|
|
|
/* inherited from PROP_DLG */
|
|
virtual APIERR GetOne(
|
|
UINT iObject,
|
|
APIERR * pErrMsg
|
|
);
|
|
|
|
virtual APIERR InitControls();
|
|
|
|
/* inherited from PERFORMER */
|
|
virtual APIERR PerformOne(
|
|
UINT iObject,
|
|
APIERR * pErrMsg,
|
|
BOOL * pfWorkWasDone
|
|
);
|
|
|
|
virtual ULONG QueryHelpContext();
|
|
|
|
APIERR FillMembersListbox(
|
|
const INT * aiSel = NULL,
|
|
INT iSize = 0 );
|
|
|
|
virtual MSGID W_MapPerformOneError(
|
|
APIERR err
|
|
);
|
|
|
|
virtual APIERR W_DialogToMembers();
|
|
|
|
public:
|
|
|
|
NEW_ALIASPROP_DLG(
|
|
const OWNER_WINDOW * powin,
|
|
const UM_ADMIN_APP * pumadminapp,
|
|
const LAZY_USER_LISTBOX * pulb,
|
|
const LOCATION & loc,
|
|
const ULONG * pridCopyFrom = NULL,
|
|
BOOL fCopyBuiltin = FALSE
|
|
) ;
|
|
|
|
virtual ~NEW_ALIASPROP_DLG();
|
|
|
|
/* inherited from PERFORMER */
|
|
virtual const TCHAR * QueryObjectName(
|
|
UINT iObject
|
|
) const;
|
|
};
|
|
|
|
|
|
#endif //_ALSPROP_HXX_
|
|
|