-
-
Save javafun/84ef6c4d7e027a78f2549646cca1d35b to your computer and use it in GitHub Desktop.
Commerce Manager Membership Account Edit
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="~/Overrides/MembershipAccountEdit.ascx.cs" Inherits="Web.Commerce.Overrides.MembershipAccountEdit" %> | |
<%@ Register Src="~/Apps/Core/Controls/BooleanEditControl.ascx" TagName="BooleanEditControl" | |
TagPrefix="ecf" %> | |
<%@ Register TagPrefix="mc2" Assembly="Mediachase.BusinessFoundation" Namespace="Mediachase.BusinessFoundation" %> | |
<div style="padding: 5px;"> | |
<asp:Label runat="server" ID="lblErrorInfo" Style="color: Red"></asp:Label> | |
<table width="100%" class="DataForm"> | |
<tr> | |
<td class="FormLabelCell"> | |
<asp:Label runat="server" ID="UserNameLabel" Text="<%$ Resources:SharedStrings, User_Name %>"></asp:Label>: | |
</td> | |
<td class="FormFieldCell"> | |
<asp:TextBox runat="server" ID="UserNameTextBox" Width="250" MaxLength="256"></asp:TextBox> | |
<asp:RequiredFieldValidator runat="server" ID="UserNameRequired" ControlToValidate="UserNameTextBox" | |
ErrorMessage="<%$ Resources:SharedStrings, User_Name_Required %>" >*</asp:RequiredFieldValidator> | |
</td> | |
</tr> | |
<tr> | |
<td colspan="2" class="FormSpacerCell"> | |
</td> | |
</tr> | |
<tr runat="server" id="TrPassword"> | |
<td class="FormLabelCell"> | |
<asp:Label runat="server" ID="LabelPassword" Text="<%$ Resources:SharedStrings, Password %>"></asp:Label>: | |
</td> | |
<td class="FormFieldCell"> | |
<asp:TextBox runat="server" ID="TbPassword" TextMode="Password" Width="250"></asp:TextBox> | |
<asp:RequiredFieldValidator runat="server" ID="PasswordRequired" ControlToValidate="TbPassword" | |
ErrorMessage="<%$ Resources:SharedStrings, RequiredField %>">*</asp:RequiredFieldValidator> | |
<asp:CustomValidator ID="PasswordCustomValidator" runat="server" ControlToValidate="TbPassword" | |
OnServerValidate="UserPassword_ServerValidate" dispaly="dynamic" /> | |
</td> | |
</tr> | |
<tr> | |
<td class="FormLabelCell"> | |
<asp:Label ID="Label14" runat="server" Text="<%$ Resources:SharedStrings, Description %>"></asp:Label>: | |
</td> | |
<td class="FormFieldCell"> | |
<asp:TextBox runat="server" Width="250" ID="tbDescription"></asp:TextBox><br /> | |
</td> | |
</tr> | |
<tr> | |
<td colspan="2" class="FormSpacerCell"> | |
</td> | |
</tr> | |
<tr> | |
<td class="FormLabelCell"> | |
<asp:Label runat="server" ID="Label5" Text="<%$ Resources:SharedStrings, Email %>"></asp:Label>: | |
</td> | |
<td class="FormFieldCell"> | |
<asp:TextBox runat="server" ID="tbEmailText" Width="250" MaxLength="256"></asp:TextBox> | |
<asp:RequiredFieldValidator runat="server" ID="RequiredFieldValidator1" ControlToValidate="tbEmailText" | |
ErrorMessage="<%$ Resources:SharedStrings, RequiredField %>">*</asp:RequiredFieldValidator> | |
<asp:RegularExpressionValidator id="RegularExpressionValidator1" | |
runat="server" ControlToValidate="tbEmailText" | |
display="Dynamic" | |
ErrorMessage="<%$ Resources:SharedStrings, Valid_Email_Required%>" | |
ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"> | |
</asp:RegularExpressionValidator> | |
</td> | |
</tr> | |
<tr> | |
<td colspan="2" class="FormSpacerCell"> | |
</td> | |
</tr> | |
<tr> | |
<td class="FormLabelCell"> | |
<asp:Label runat="server" ID="Label6" Text="<%$ Resources:SharedStrings, Approved %>"></asp:Label>: | |
</td> | |
<td class="FormFieldCell"> | |
<ecf:BooleanEditControl ID="IsApproved" runat="server"></ecf:BooleanEditControl> | |
</td> | |
</tr> | |
<tr> | |
<td colspan="2" class="FormSpacerCell"> | |
</td> | |
</tr> | |
<tr> | |
<td align="right" colspan="2" style="padding-top: 10px; padding-right: 10px;"> | |
<mc2:IMButton ID="btnSave" runat="server" style="width: 105px;" OnServerClick="btnSave_ServerClick"> | |
</mc2:IMButton> | |
| |
<mc2:IMButton ID="btnCancel" runat="server" style="width: 105px;" CausesValidation="false"> | |
</mc2:IMButton> | |
</td> | |
</tr> | |
</table> | |
</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using EPiServer.Cms.UI.AspNetIdentity; | |
using EPiServer.ServiceLocation; | |
using Mediachase.BusinessFoundation; | |
using Mediachase.BusinessFoundation.Data; | |
using Mediachase.Commerce.Customers; | |
using Mediachase.Commerce.Extensions; | |
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Web; | |
using System.Web.UI; | |
using System.Web.UI.WebControls; | |
namespace Web.Commerce.Overrides | |
{ | |
public partial class MembershipAccountEdit : MCDataBoundControl | |
{ | |
public ApplicationUserManager<ApplicationUser> UserManager => ServiceLocator.Current.GetInstance<ApplicationUserManager<ApplicationUser>>(); | |
public ApplicationSignInManager<ApplicationUser> SignInManager => ServiceLocator.Current.GetInstance<ApplicationSignInManager<ApplicationUser>>(); | |
public PrimaryKeyId ContactId | |
{ | |
get | |
{ | |
PrimaryKeyId empty = PrimaryKeyId.Empty; | |
if (this.Request.QueryString[nameof(ContactId)] != null) | |
empty = PrimaryKeyId.Parse(this.Request.QueryString[nameof(ContactId)]); | |
if (empty == PrimaryKeyId.Empty) | |
{ | |
var user = UserManager.FindByNameAsync(UserName).Result; | |
if (user != null) | |
{ | |
CustomerContact contactForUser = CustomerContext.Current.GetContactByUserId(UserName); | |
if (contactForUser != null) | |
empty = contactForUser.PrimaryKeyId.Value; | |
} | |
} | |
return empty; | |
} | |
} | |
protected string UserName => Request.QueryString[nameof(UserName)]; | |
public ApplicationUser GetCurrentApplicationUser() | |
{ | |
ApplicationUser applicationUser = (ApplicationUser)null; | |
if (!string.IsNullOrEmpty(UserName)) | |
applicationUser = UserManager.FindByNameAsync(UserName).Result; | |
else if (ContactId != PrimaryKeyId.Empty) | |
applicationUser = UserManager.FindByIdAsync(ContactId.ToString()).Result; | |
return applicationUser; | |
} | |
protected string CommandName | |
{ | |
get | |
{ | |
string empty = string.Empty; | |
if (Request.QueryString["commandName"] != null) | |
empty = Request.QueryString["commandName"]; | |
return empty; | |
} | |
} | |
protected bool IsEditMode => CustomerContext.Current.GetUserForContactId(ContactId) != null; | |
private void BindData() | |
{ | |
ApplicationUser currentMembershipUser = GetCurrentApplicationUser(); | |
if (currentMembershipUser != null) | |
{ | |
this.UserNameTextBox.Text = currentMembershipUser.UserName; | |
this.UserNameTextBox.Enabled = false; | |
this.tbDescription.Text = currentMembershipUser.Comment; | |
this.tbEmailText.Text = currentMembershipUser.Email; | |
this.IsApproved.IsSelected = currentMembershipUser.IsApproved; | |
} | |
else | |
{ | |
CustomerContact contactById = CustomerContext.Current.GetContactById((Guid)ContactId); | |
if (contactById == null) | |
return; | |
tbEmailText.Text = contactById.GetHtmlEncodedEmail(); | |
} | |
} | |
private void BindButtons() | |
{ | |
btnSave.Text = this.GetGlobalResourceObject("Common", "btnOK").ToString(); | |
btnSave.CustomImage = this.Page.ResolveUrl("~/Apps/MetaDataBase/images/ok-button.gif"); | |
btnCancel.Text = this.GetGlobalResourceObject("Common", "btnCancel").ToString(); | |
btnCancel.CustomImage = this.Page.ResolveUrl("~/Apps/MetaDataBase/images/cancel-button.gif"); | |
btnCancel.Attributes.Add("onclick", CommandHandler.GetCloseOpenedFrameScript(this.Page, string.Empty, false, true)); | |
} | |
protected void Page_Load(object sender, EventArgs e) | |
{ | |
lblErrorInfo.Text = string.Empty; | |
if (!IsPostBack) | |
{ | |
TrPassword.Visible = !IsEditMode; | |
BindData(); | |
} | |
BindButtons(); | |
} | |
public void UserName_ServerValidator(object sender, ServerValidateEventArgs args) | |
{ | |
ApplicationUser user = UserManager.FindByNameAsync(UserNameTextBox.Text).Result; | |
if (user == null || user != null && !this.UserNameTextBox.Enabled) | |
args.IsValid = true; | |
else | |
args.IsValid = false; | |
} | |
public void UserPassword_ServerValidate(object source, ServerValidateEventArgs args) | |
{ | |
//args.IsValid = false; | |
//if (SecurityContext.ValidateMembershipUserPassword(this.TbPassword.Text) != UserPasswordValidationResult.PasswordOk) | |
//{ | |
// if (Membership.MinRequiredNonAlphanumericCharacters > 0) | |
// this.PasswordCustomValidator.ErrorMessage = string.Format(SharedStrings.Pasword_NonAlphabetChars_Num_ValidationError, (object)Membership.MinRequiredPasswordLength, (object)Membership.MinRequiredNonAlphanumericCharacters); | |
// else | |
// this.PasswordCustomValidator.ErrorMessage = string.Format(SharedStrings.Password_Min_Length_ValidationError, (object)Membership.MinRequiredPasswordLength); | |
//} | |
//else | |
args.IsValid = true; | |
} | |
protected void btnSave_ServerClick(object sender, EventArgs e) | |
{ | |
Page.Validate(); | |
if (!Page.IsValid) | |
return; | |
ApplicationUser user = this.GetCurrentApplicationUser(); | |
if (user == null) | |
{ | |
CustomerContact contact = CustomerContext.Current.GetContactByUserId(UserNameTextBox.Text); | |
user = new ApplicationUser() | |
{ | |
UserName = UserNameTextBox.Text, | |
Email = tbEmailText.Text, | |
}; | |
var result = UserManager.CreateAsync(user, TbPassword.Text).Result; | |
if (result.Succeeded) | |
{ | |
CustomerContact contactById = CustomerContext.Current.GetContactById((Guid)this.ContactId); | |
contactById.UserId = new MapUserKey().ToTypedString((object)user.UserName); | |
contactById.SaveChanges(); | |
//TODO: Assign default role | |
//TODO: Send Email | |
} | |
else | |
{ | |
lblErrorInfo.Text = "Create user operation error : " + string.Join(". ", result.Errors.ToArray()); | |
return; | |
} | |
} | |
user.Comment = this.tbDescription.Text; | |
if (!user.Email.Equals(this.tbEmailText.Text, StringComparison.OrdinalIgnoreCase)) | |
user.Email = this.tbEmailText.Text; | |
user.IsApproved = this.IsApproved.IsSelected; | |
try | |
{ | |
var updateResult = UserManager.UpdateAsync(user).Result; | |
} | |
catch (Exception ex) | |
{ | |
this.lblErrorInfo.Text = ex.Message; | |
return; | |
} | |
string empty = string.Empty; | |
if (!string.IsNullOrEmpty(this.CommandName)) | |
empty = new CommandParameters(this.CommandName).ToString(); | |
CommandHandler.RegisterCloseOpenedFrameScript(this.Page, empty, true); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//------------------------------------------------------------------------------ | |
// <auto-generated> | |
// This code was generated by a tool. | |
// | |
// Changes to this file may cause incorrect behavior and will be lost if | |
// the code is regenerated. | |
// </auto-generated> | |
//------------------------------------------------------------------------------ | |
namespace Web.Commerce.Overrides | |
{ | |
public partial class MembershipAccountEdit | |
{ | |
/// <summary> | |
/// lblErrorInfo control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::System.Web.UI.WebControls.Label lblErrorInfo; | |
/// <summary> | |
/// UserNameLabel control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::System.Web.UI.WebControls.Label UserNameLabel; | |
/// <summary> | |
/// UserNameTextBox control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::System.Web.UI.WebControls.TextBox UserNameTextBox; | |
/// <summary> | |
/// UserNameRequired control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::System.Web.UI.WebControls.RequiredFieldValidator UserNameRequired; | |
/// <summary> | |
/// TrPassword control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::System.Web.UI.HtmlControls.HtmlTableRow TrPassword; | |
/// <summary> | |
/// LabelPassword control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::System.Web.UI.WebControls.Label LabelPassword; | |
/// <summary> | |
/// TbPassword control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::System.Web.UI.WebControls.TextBox TbPassword; | |
/// <summary> | |
/// PasswordRequired control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::System.Web.UI.WebControls.RequiredFieldValidator PasswordRequired; | |
/// <summary> | |
/// PasswordCustomValidator control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::System.Web.UI.WebControls.CustomValidator PasswordCustomValidator; | |
/// <summary> | |
/// Label14 control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::System.Web.UI.WebControls.Label Label14; | |
/// <summary> | |
/// tbDescription control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::System.Web.UI.WebControls.TextBox tbDescription; | |
/// <summary> | |
/// Label5 control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::System.Web.UI.WebControls.Label Label5; | |
/// <summary> | |
/// tbEmailText control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::System.Web.UI.WebControls.TextBox tbEmailText; | |
/// <summary> | |
/// RequiredFieldValidator1 control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1; | |
/// <summary> | |
/// RegularExpressionValidator1 control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::System.Web.UI.WebControls.RegularExpressionValidator RegularExpressionValidator1; | |
/// <summary> | |
/// Label6 control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::System.Web.UI.WebControls.Label Label6; | |
/// <summary> | |
/// IsApproved control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::Mediachase.Commerce.Manager.Core.Controls.BooleanEditControl IsApproved; | |
/// <summary> | |
/// btnSave control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::Mediachase.BusinessFoundation.IMButton btnSave; | |
/// <summary> | |
/// btnCancel control. | |
/// </summary> | |
/// <remarks> | |
/// Auto-generated field. | |
/// To modify move field declaration from designer file to code-behind file. | |
/// </remarks> | |
protected global::Mediachase.BusinessFoundation.IMButton btnCancel; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment