完善个人中心保存显示名称、更改密码功能
This commit is contained in:
parent
80a0b4e3e2
commit
6a989044ca
|
@ -152,4 +152,7 @@ Dotfuscated/
|
||||||
#AutoUpdate
|
#AutoUpdate
|
||||||
*/UpdateServer/v*
|
*/UpdateServer/v*
|
||||||
*/UpdateServer/*.dll
|
*/UpdateServer/*.dll
|
||||||
*/UpdateServer/*.exe
|
*/UpdateServer/*.exe
|
||||||
|
|
||||||
|
#uploader
|
||||||
|
uploader/
|
|
@ -136,6 +136,7 @@
|
||||||
<Content Include="Content\images\logo4.jpg" />
|
<Content Include="Content\images\logo4.jpg" />
|
||||||
<Content Include="Content\images\logo5.jpg" />
|
<Content Include="Content\images\logo5.jpg" />
|
||||||
<Content Include="Content\images\logo6.jpg" />
|
<Content Include="Content\images\logo6.jpg" />
|
||||||
|
<Content Include="Content\images\uploader\Admin.jpg" />
|
||||||
<Content Include="Content\images\uploader\default.jpg" />
|
<Content Include="Content\images\uploader\default.jpg" />
|
||||||
<Content Include="Content\images\uploader\readme.txt" />
|
<Content Include="Content\images\uploader\readme.txt" />
|
||||||
<Content Include="Content\js\bootstrap-datetimepicker.js" />
|
<Content Include="Content\js\bootstrap-datetimepicker.js" />
|
||||||
|
@ -317,9 +318,7 @@
|
||||||
<DependentUpon>Web.config</DependentUpon>
|
<DependentUpon>Web.config</DependentUpon>
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup />
|
||||||
<Folder Include="Content\images\uploader\" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Bootstrap.DataAccess\Bootstrap.DataAccess.csproj">
|
<ProjectReference Include="..\Bootstrap.DataAccess\Bootstrap.DataAccess.csproj">
|
||||||
<Project>{af16ca71-b8c6-4f51-b38c-0c0300fdebd7}</Project>
|
<Project>{af16ca71-b8c6-4f51-b38c-0c0300fdebd7}</Project>
|
||||||
|
|
|
@ -325,13 +325,20 @@
|
||||||
};
|
};
|
||||||
User.saveUsersByRoleId = function (roleId, userIds, callback) {
|
User.saveUsersByRoleId = function (roleId, userIds, callback) {
|
||||||
processData.call(this, { Id: roleId, callback: callback, method: "PUT", data: { type: "role", userIds: userIds } });
|
processData.call(this, { Id: roleId, callback: callback, method: "PUT", data: { type: "role", userIds: userIds } });
|
||||||
}
|
};
|
||||||
User.getUsersByGroupeId = function (groupId, callback) {
|
User.getUsersByGroupeId = function (groupId, callback) {
|
||||||
processData.call(this, { Id: groupId, callback: callback, data: { type: "group" } });
|
processData.call(this, { Id: groupId, callback: callback, data: { type: "group" } });
|
||||||
};
|
};
|
||||||
User.saveUsersByGroupId = function (groupId, userIds, callback) {
|
User.saveUsersByGroupId = function (groupId, userIds, callback) {
|
||||||
processData.call(this, { Id: groupId, callback: callback, method: "PUT", data: { type: "group", userIds: userIds } });
|
processData.call(this, { Id: groupId, callback: callback, method: "PUT", data: { type: "group", userIds: userIds } });
|
||||||
|
};
|
||||||
|
User.saveUserDisplayName = function (user, callback) {
|
||||||
|
processData.call(this, { Id: '', callback: callback, method: "PUT", data: user });
|
||||||
|
};
|
||||||
|
User.changePassword = function (user) {
|
||||||
|
processData.call(this, { Id: '', method: "PUT", data: user });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Groups
|
// Groups
|
||||||
Group = {
|
Group = {
|
||||||
url: '../api/Groups/',
|
url: '../api/Groups/',
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
using Bootstrap.Admin.Models;
|
using Bootstrap.Admin.Models;
|
||||||
using Bootstrap.DataAccess;
|
using Bootstrap.DataAccess;
|
||||||
|
using Longbow.Security.Principal;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -26,6 +27,24 @@ namespace Bootstrap.Admin.Controllers
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPut]
|
||||||
|
public bool Put([FromBody]User value)
|
||||||
|
{
|
||||||
|
var ret = false;
|
||||||
|
var userName = User.Identity.Name;
|
||||||
|
if (value.UserName == userName && !LgbPrincipal.IsAdmin(userName))
|
||||||
|
{
|
||||||
|
if (value.UserStatus == 1)
|
||||||
|
ret = UserHelper.SaveUserInfoByName(value);
|
||||||
|
else if (value.UserStatus == 2)
|
||||||
|
ret = UserHelper.ChangePassword(value);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
/// <param name="roleId"></param>
|
/// <param name="roleId"></param>
|
||||||
/// <param name="value"></param>
|
/// <param name="value"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
|
|
@ -17,4 +17,38 @@
|
||||||
var url = data.response;
|
var url = data.response;
|
||||||
if (!!url) $headerIcon.attr('src', url);
|
if (!!url) $headerIcon.attr('src', url);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var bsa = new BootstrapAdmin({
|
||||||
|
url: '../api/Infos',
|
||||||
|
bootstrapTable: null,
|
||||||
|
dataEntity: new DataEntity({
|
||||||
|
map: {
|
||||||
|
Password: "currentPassword",
|
||||||
|
NewPassword: "newPassword",
|
||||||
|
DisplayName: "displayName",
|
||||||
|
UserName: "userName"
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
click: {
|
||||||
|
assign: [{
|
||||||
|
id: 'btnSavePassword',
|
||||||
|
click: function (row, data) {
|
||||||
|
data.UserStatus = 2;
|
||||||
|
User.changePassword(data);
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
id: 'btnSaveDisplayName',
|
||||||
|
click: function (row, data) {
|
||||||
|
data.UserStatus = 1;
|
||||||
|
User.saveUserDisplayName(data, function (result) {
|
||||||
|
if (result) {
|
||||||
|
$('#userDisplayName').text(data.DisplayName);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$('button[data-admin="True"]').attr('disabled', 'disabled');
|
||||||
});
|
});
|
|
@ -50,7 +50,7 @@
|
||||||
},
|
},
|
||||||
success: function (src, data) {
|
success: function (src, data) {
|
||||||
if (src === 'save' && data.ID === $('#userId').val()) {
|
if (src === 'save' && data.ID === $('#userId').val()) {
|
||||||
$('.username').text(data.DisplayName);
|
$('#userDisplayName').text(data.DisplayName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
Layout = "~/Views/Shared/_Admin.cshtml";
|
Layout = "~/Views/Shared/_Admin.cshtml";
|
||||||
}
|
}
|
||||||
@section Javascript {
|
@section Javascript {
|
||||||
|
<script src="~/Content/js/longbow.dataentity.js"></script>
|
||||||
<script src="~/content/js/sweetalert.js"></script>
|
<script src="~/content/js/sweetalert.js"></script>
|
||||||
<script src="~/Content/js/fileinput.js"></script>
|
<script src="~/Content/js/fileinput.js"></script>
|
||||||
<script src="~/Content/js/zh.js"></script>
|
<script src="~/Content/js/zh.js"></script>
|
||||||
|
@ -23,20 +24,20 @@
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">基本资料</div>
|
<div class="panel-heading">基本资料</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<form class="form-inline" id="infoDataForm" name="infoDataForm" role="form">
|
<form id="infoDataForm" name="infoDataForm" class="form-inline" role="form">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="form-group col-xs-12 col-sm-6">
|
<div class="form-group col-xs-12 col-sm-6">
|
||||||
<label class="control-label" for="userName">登陆名称</label>
|
<label class="control-label" for="userName">登陆名称</label>
|
||||||
<input type="text" class="form-control" id="userName" name="userName" placeholder="不可为空" maxlength="50" />
|
<input type="text" class="form-control" id="userName" name="userName" value="@Model.UserName" readonly />
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group col-xs-12 col-sm-6">
|
<div class="form-group col-xs-12 col-sm-6">
|
||||||
<label class="control-label" for="DisplayName">显示名称</label>
|
<label class="control-label" for="DisplayName">显示名称</label>
|
||||||
<input type="text" class="form-control" id="DisplayName" name="DisplayName" placeholder="不可为空" maxlength="50" />
|
<input type="text" class="form-control" id="displayName" name="displayName" value="@Model.DisplayName" placeholder="不可为空" maxlength="50" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button class="btn btn-default" type="button">保存</button>
|
<button id="btnSaveDisplayName" class="btn btn-default" type="button" data-admin="@LgbPrincipal.IsAdmin(Model.UserName)">保存</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -60,7 +61,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button class="btn btn-default" type="button">保存</button>
|
<button id="btnSavePassword" class="btn btn-default" type="button" data-admin="@LgbPrincipal.IsAdmin(Model.UserName)">保存</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -191,9 +191,9 @@
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<a data-toggle="dropdown" class="dropdown-toggle" href="#">
|
<a data-toggle="dropdown" class="dropdown-toggle" href="#">
|
||||||
<img id="headerIcon" alt="" src="@Url.Content(Model.Icon)">
|
<img id="headerIcon" alt="" src="@Url.Content(Model.Icon)">
|
||||||
<span class="username">@Model.DisplayName</span>
|
<span id="userDisplayName" class="username">@Model.DisplayName</span>
|
||||||
<b class="caret"></b>
|
<b class="caret"></b>
|
||||||
<input id="userId" type="text" class="hide" value="@Model.UserID" />
|
<input id="userId" type="text" class="hidden" value="@Model.UserID" />
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu logout">
|
<ul class="dropdown-menu logout">
|
||||||
<div class="arrow-up"></div>
|
<div class="arrow-up"></div>
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||||
<pages pageBaseType="System.Web.Mvc.WebViewPage">
|
<pages pageBaseType="System.Web.Mvc.WebViewPage">
|
||||||
<namespaces>
|
<namespaces>
|
||||||
|
<add namespace="Longbow.Security.Principal" />
|
||||||
<add namespace="System.Web.Mvc" />
|
<add namespace="System.Web.Mvc" />
|
||||||
<add namespace="System.Web.Mvc.Ajax" />
|
<add namespace="System.Web.Mvc.Ajax" />
|
||||||
<add namespace="System.Web.Mvc.Html" />
|
<add namespace="System.Web.Mvc.Html" />
|
||||||
|
|
|
@ -60,8 +60,12 @@ namespace Bootstrap.DataAccess
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string RejectedTime { get; set; }
|
public string RejectedTime { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取/设置 用户头像
|
/// 获得/设置 用户头像
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Icon { get; set; }
|
public string Icon { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 获得/设置 新密码
|
||||||
|
/// </summary>
|
||||||
|
public string NewPassword { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -381,7 +381,66 @@ namespace Bootstrap.DataAccess
|
||||||
DBAccessManager.SqlDBAccess.ExecuteNonQuery(cmd);
|
DBAccessManager.SqlDBAccess.ExecuteNonQuery(cmd);
|
||||||
ret = true;
|
ret = true;
|
||||||
}
|
}
|
||||||
CacheManager.Clear(key => key == RetrieveUsersByNameDataKey);
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ExceptionManager.Publish(ex);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="user"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static bool SaveUserInfoByName(User user)
|
||||||
|
{
|
||||||
|
bool ret = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string sql = "Update Users set DisplayName = @DisplayName where UserName = @userName";
|
||||||
|
using (DbCommand cmd = DBAccessManager.SqlDBAccess.CreateCommand(CommandType.Text, sql))
|
||||||
|
{
|
||||||
|
cmd.Parameters.Add(DBAccessManager.SqlDBAccess.CreateParameter("@DisplayName", user.DisplayName, ParameterDirection.Input));
|
||||||
|
cmd.Parameters.Add(DBAccessManager.SqlDBAccess.CreateParameter("@userName", user.UserName, ParameterDirection.Input));
|
||||||
|
DBAccessManager.SqlDBAccess.ExecuteNonQuery(cmd);
|
||||||
|
CacheCleanUtility.ClearCache(userIds: string.Empty);
|
||||||
|
ret = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ExceptionManager.Publish(ex);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userName"></param>
|
||||||
|
/// <param name="user"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static bool ChangePassword(User user)
|
||||||
|
{
|
||||||
|
bool ret = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Authenticate(user.UserName, user.Password))
|
||||||
|
{
|
||||||
|
string sql = "Update Users set Password = @Password, PassSalt = @PassSalt where UserName = @userName";
|
||||||
|
user.PassSalt = LgbCryptography.GenerateSalt();
|
||||||
|
user.NewPassword = LgbCryptography.ComputeHash(user.NewPassword, user.PassSalt);
|
||||||
|
using (DbCommand cmd = DBAccessManager.SqlDBAccess.CreateCommand(CommandType.Text, sql))
|
||||||
|
{
|
||||||
|
cmd.Parameters.Add(DBAccessManager.SqlDBAccess.CreateParameter("@Password", user.NewPassword, ParameterDirection.Input));
|
||||||
|
cmd.Parameters.Add(DBAccessManager.SqlDBAccess.CreateParameter("@PassSalt", user.PassSalt, ParameterDirection.Input));
|
||||||
|
cmd.Parameters.Add(DBAccessManager.SqlDBAccess.CreateParameter("@userName", user.UserName, ParameterDirection.Input));
|
||||||
|
DBAccessManager.SqlDBAccess.ExecuteNonQuery(cmd);
|
||||||
|
string key = string.Format("{0}-{1}", RetrieveUsersByNameDataKey, user.UserName);
|
||||||
|
CacheManager.Clear(k => k == key);
|
||||||
|
ret = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue