mirror of https://github.com/tongzx/nt5src
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.
203 lines
7.1 KiB
203 lines
7.1 KiB
//-----------------------------------------------------------------------------
|
|
//
|
|
// @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
|