V intranetovém systému je častým požadavkem formulář na změnu uživatelského hesla. Alternativou přístupu přes COM (ActiveDs) je doinstalování FrameWorku 3.5 na frond endy, kde provozujete platformu SharePoint a využití následující funkcionality kterou „nový“ FW přináší.
Reference
System.DirectoryServices.AccountManagement.dll
Příklad použití např. ve webové části:
_oldpassword - TextBox pro staré heslo
_newpassword - TextBox pro nové heslo
_labelmsg - Label pro vypsání výsledku, popř. chyb
Příklad definice TextBoxu:
protected override void CreateChildControls()
{
base.CreateChildControls();
this.Controls.Clear();
_oldpassword = new TextBox();
_oldpassword.ID = "OldPw";
_oldpassword.CssClass = "ms-input";
this.Controls.Add(_oldpassword);
// obdobně pokračujeme dále
}
UserPrincipal - nám dokáže vrátit i jiné informace o uživateli, například poslední změna hesla, expirace účtu, stav účtu, ....
protected void _submitButton_Click(object sender, EventArgs e)
{
SPSecurity.RunWithElevatedPrivileges(
delegate()
{
try
{
WindowsImpersonationContext aspContext = null;
WindowsIdentity identity = WindowsIdentity.GetCurrent();
aspContext = identity.Impersonate();
ContextOptions o = ContextOptions.Negotiate;
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
UserPrincipal u = new UserPrincipal(ctx);
u = UserPrincipal.FindByIdentity(ctx, SPContext.Current.Web.CurrentUser.LoginName);
try
{
u.ChangePassword(_oldpassword.Text, _newpassword.Text);
_labelmsg.Text = "Změna hesla proběhla úspěšně";
}
catch (PasswordException ex)
{
_labelmsg.Text = ex.Message.ToString();
}
}
}
Filip Havlín