windows-nt/Source/XPSP1/NT/ds/security/passport/include/cprofile.h
2020-09-26 16:20:57 +08:00

204 lines
7.1 KiB
C++

//-----------------------------------------------------------------------------
//
// @doc
//
// @module CProfile.h | Declaration of the CProfile class.
//
// Author: Darren Anderson
//
// Date: 4/26/00
//
// Copyright <cp> 1999-2000 Microsoft Corporation. All Rights Reserved.
//
//-----------------------------------------------------------------------------
#pragma once
#include "ppstorage.h"
//-----------------------------------------------------------------------------
//
// @class CProfile | This class abstracts out a number of common profile
// operations.
//
//-----------------------------------------------------------------------------
class CUserProfileBase;
class CProfile
{
public:
static const UINT AllMembers = (UINT)(-1);
// @access Protected members
protected:
// @cmember <md CProfile::m_bInitialized> is true if this instance has been
// initialized with a profile string.
bool m_bInitialized;
// @cmember <md CProfile::m_piProfile> is used to perform ticket operations.
CComPtr<IPassportProfile> m_piProfile;
// @cmember Pointer to global handler base.
CPassportHandlerBase* m_pHandler;
// @cmember Helper function to create <md CProfile::m_piProfile>.
void CreateProfileObject(void);
// @cmember Create a test mode (i.e. site id 1) cookie.
static void MakeTest(LPCWSTR szMemberName,
ULONG ulIdLow,
ULONG ulIdHigh,
ULONG ulProfileVersion,
USHORT nKeyVersion,
CStringW& cszProfileCookie,
UINT cEle
);
// @cmember Create a limited consent cookie.
static HRESULT MakeLimited(
LPCWSTR szMemberName,
ULONG ulIdlow,
ULONG ulIdHigh,
ULONG ulProfileVersion,
PASSPORT_PROFILE_BDAYPRECISION nBDayPrecision,
DATE dtCookieBirthdate,
ULONG ulFlags,
ULONG ulSiteId,
USHORT nKeyVersion,
bool bSecure,
CStringW& cszProfileCookie,
UINT cEle
);
// @cmember Create a limited consent cookie.
static HRESULT MakeLimited(
LPCWSTR szMemberName,
ULONG ulIdlow,
ULONG ulIdHigh,
ULONG ulProfileVersion,
PASSPORT_PROFILE_BDAYPRECISION nBDayPrecision,
DATE dtCookieBirthdate,
ULONG ulFlags,
ULONG ulSiteId,
USHORT nKeyVersion,
CStringW& cszProfileCookie,
UINT cEle
);
// @access Public members
public:
//
// Note, two-phase construction. Constructor followed
// by PutProfile.
//
// @cmember Constructor.
CProfile();
// @cmember Destructor.
~CProfile();
// @cmember Initialize this instance with a profile cookie string.
void PutProfile(LPCWSTR szProfile);
// @cmember Has this instance been initialized?
bool IsInitialized(void);
// @cmember Does this instance contain a valid profile?
bool IsValid(void);
//
// Multiple Get's for different types.
//
// @cmember Get string-type attribute.
void Get(PASSPORT_PROFILE_ITEM item, CStringW& cszValue);
// @cmember Get string-type attribute, but return as BSTR.
void Get(PASSPORT_PROFILE_ITEM item, CComBSTR& cszValue);
// @cmember Get a ULONG-type attribute.
void Get(PASSPORT_PROFILE_ITEM item, ULONG& ulValue);
// @cmember Get a DATE-type attribute.
void Get(PASSPORT_PROFILE_ITEM item, DATE& dtValue);
// @cmember Get a USHORT-type attribute.
void Get(PASSPORT_PROFILE_ITEM item, USHORT& usValue);
//
// Membername/domain methods.
//
// @cmember Retrieve the domain portion of the current user's name.
HRESULT DomainFromMemberName(CStringW& cszDomain);
// @cmember Retrieve the alias portion of the current user's name.
HRESULT AliasFromMemberName(CStringW& cszAlias);
// @cmember Retrieve the display version of the current user's naem.
HRESULT FullDisplayMemberName(CStringW& cszMemberName);
//
// Profile cookie manipulation functions.
//
//todo change this later -- make sure to implement kids consent correct!!
static HRESULT Make(
CUserProfileBase * cdbCoreProfile,
LPCWSTR szMemberName,
ULONG nSiteId,
USHORT nKeyVersion,
KPP nKPP,
LPCWSTR szKPPVC,
bool bMD5Silent,
CStringW& cszProfileCookie,
ULONG &ulKidsFlags,
UINT cEle
);
// @cmember Create a profile cookie string using the parameters passed in.
static HRESULT Make(
CPPCoreProfileStorage& profile,
LPCWSTR szMemberName,
ULONG nSiteId,
USHORT nKeyVersion,
KPP nKPP,
LPCWSTR szKPPVC,
bool bSecure,
bool bMD5Silent,
CStringW& cszProfileCookie,
ULONG &ulKidsFlags,
UINT cEle
);
HRESULT MD5Make(ULONG nSiteId,
USHORT nKeyVersion,
UINT cEle,
CStringW& cszProfileCookie
);
// @cmember Create a copy of the current profile cookie using the
// information passed in.
HRESULT Copy(ULONG nSiteId,
USHORT nKeyVersion,
KPP nKPP,
LPCWSTR szKPPVC,
bool bSecure,
bool bNewReg,
CStringW& cszProfileCookie,
ULONG &ulKidsFlags,
UINT cEles,
bool bMD5Silent = false, // TODO: should remove default
LPCWSTR szMemberName = NULL);
// @cmember Add the cookie specified to the response.
static HRESULT Set(LPCWSTR szProfileCookie,
bool bPersist);
// @cmember Expire the current profile cookie.
static HRESULT Expire(void);
};
// EOF