95 lines
3.1 KiB
C#
95 lines
3.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
using Microsoft.AspNet.Membership.OpenAuth;
|
|
|
|
namespace CMS_SC.Account
|
|
{
|
|
public partial class Manage : System.Web.UI.Page
|
|
{
|
|
protected string SuccessMessage
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
protected bool CanRemoveExternalLogins
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
protected void Page_Load()
|
|
{
|
|
if (!IsPostBack)
|
|
{
|
|
// Determine the sections to render
|
|
var hasLocalPassword = OpenAuth.HasLocalPassword(User.Identity.Name);
|
|
setPassword.Visible = !hasLocalPassword;
|
|
changePassword.Visible = hasLocalPassword;
|
|
|
|
CanRemoveExternalLogins = hasLocalPassword;
|
|
|
|
// Render success message
|
|
var message = Request.QueryString["m"];
|
|
if (message != null)
|
|
{
|
|
// Strip the query string from action
|
|
Form.Action = ResolveUrl("~/Account/Manage");
|
|
|
|
SuccessMessage =
|
|
message == "ChangePwdSuccess" ? "Your password has been changed."
|
|
: message == "SetPwdSuccess" ? "Your password has been set."
|
|
: message == "RemoveLoginSuccess" ? "The external login was removed."
|
|
: String.Empty;
|
|
successMessage.Visible = !String.IsNullOrEmpty(SuccessMessage);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
protected void setPassword_Click(object sender, EventArgs e)
|
|
{
|
|
if (IsValid)
|
|
{
|
|
var result = OpenAuth.AddLocalPassword(User.Identity.Name, password.Text);
|
|
if (result.IsSuccessful)
|
|
{
|
|
Response.Redirect("~/Account/Manage?m=SetPwdSuccess");
|
|
}
|
|
else
|
|
{
|
|
|
|
ModelState.AddModelError("NewPassword", result.ErrorMessage);
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public IEnumerable<OpenAuthAccountData> GetExternalLogins()
|
|
{
|
|
var accounts = OpenAuth.GetAccountsForUser(User.Identity.Name);
|
|
CanRemoveExternalLogins = CanRemoveExternalLogins || accounts.Count() > 1;
|
|
return accounts;
|
|
}
|
|
|
|
public void RemoveExternalLogin(string providerName, string providerUserId)
|
|
{
|
|
var m = OpenAuth.DeleteAccount(User.Identity.Name, providerName, providerUserId)
|
|
? "?m=RemoveLoginSuccess"
|
|
: String.Empty;
|
|
Response.Redirect("~/Account/Manage" + m);
|
|
}
|
|
|
|
|
|
protected static string ConvertToDisplayDateTime(DateTime? utcDateTime)
|
|
{
|
|
// You can change this method to convert the UTC date time into the desired display
|
|
// offset and format. Here we're converting it to the server timezone and formatting
|
|
// as a short date and a long time string, using the current thread culture.
|
|
return utcDateTime.HasValue ? utcDateTime.Value.ToLocalTime().ToString("G") : "[never]";
|
|
}
|
|
}
|
|
} |