修改BUG:注册新用户后台代码错误,重写逻辑

This commit is contained in:
Argo-Surface 2018-11-21 21:01:50 +08:00
parent fc461746a0
commit ea2b423995
4 changed files with 24 additions and 15 deletions

View File

@ -3,6 +3,7 @@ using Longbow.Web.SignalR;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.SignalR; using Microsoft.AspNetCore.SignalR;
using System;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -13,7 +14,8 @@ namespace Bootstrap.Admin.Controllers.Api
/// </summary> /// </summary>
[AllowAnonymous] [AllowAnonymous]
[Route("api/[controller]")] [Route("api/[controller]")]
public class RegisterController : Controller [ApiController]
public class RegisterController : ControllerBase
{ {
/// <summary> /// <summary>
/// 登录页面注册新用户remote validate调用 /// 登录页面注册新用户remote validate调用

View File

@ -3,6 +3,7 @@ using Bootstrap.DataAccess;
using Longbow.Web.Mvc; using Longbow.Web.Mvc;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -84,6 +85,7 @@ namespace Bootstrap.Admin.Controllers.Api
{ {
value.Description = string.Format("管理员{0}创建用户", User.Identity.Name); value.Description = string.Format("管理员{0}创建用户", User.Identity.Name);
value.ApprovedBy = User.Identity.Name; value.ApprovedBy = User.Identity.Name;
value.ApprovedTime = DateTime.Now;
ret = UserHelper.SaveUser(value); ret = UserHelper.SaveUser(value);
} }
else else

View File

@ -26,8 +26,8 @@
<script src="~/lib/validate/jquery.validate.min.js"></script> <script src="~/lib/validate/jquery.validate.min.js"></script>
<script src="~/lib/validate/localization/messages_zh.min.js"></script> <script src="~/lib/validate/localization/messages_zh.min.js"></script>
</environment> </environment>
<script src="~/js/longbow.dataentity.js" asp-append-version="true"></script> <script src="~/lib/longbow/longbow.dataentity.js" asp-append-version="true"></script>
<script src="~/js/longbow.validate.js" asp-append-version="true"></script> <script src="~/lib/longbow/longbow.validate.js" asp-append-version="true"></script>
<script src="~/js/profiles.js" asp-append-version="true"></script> <script src="~/js/profiles.js" asp-append-version="true"></script>
} }
<div class="card"> <div class="card">

View File

@ -213,27 +213,32 @@ namespace Bootstrap.DataAccess
p.PassSalt = LgbCryptography.GenerateSalt(); p.PassSalt = LgbCryptography.GenerateSalt();
p.Password = LgbCryptography.ComputeHash(p.Password, p.PassSalt); p.Password = LgbCryptography.ComputeHash(p.Password, p.PassSalt);
using (TransactionPackage transaction = DbAccessManager.DBAccess.BeginTransaction()) var db = DbAccessManager.DBAccess;
using (TransactionPackage transaction = db.BeginTransaction())
{ {
try try
{ {
using (DbCommand cmd = DbAccessManager.DBAccess.CreateCommand(CommandType.Text, "select UserName from Users Where UserName = @userName")) using (DbCommand cmd = db.CreateCommand(CommandType.Text, "select UserName from Users Where UserName = @userName"))
{ {
cmd.Parameters.Add(DbAccessManager.DBAccess.CreateParameter("@userName", p.UserName)); cmd.Parameters.Add(db.CreateParameter("@userName", p.UserName));
var un = DbAccessManager.DBAccess.ExecuteScalar(cmd, transaction); var un = db.ExecuteScalar(cmd, transaction);
if (DbAdapterManager.ToObjectValue(un) == null) if (DbAdapterManager.ToObjectValue(un) == null)
{ {
cmd.CommandText = "Insert Into Users (UserName, Password, PassSalt, DisplayName, RegisterTime, ApprovedBy, ApprovedTime, Description) values (@userName, @password, @passSalt, @displayName, datetime('now', 'localtime'), @approvedBy, now(), @description)"; object approveTime = DBNull.Value;
cmd.Parameters.Add(DbAccessManager.DBAccess.CreateParameter("@password", p.Password)); if (p.ApprovedTime != DateTime.MinValue) approveTime = p.ApprovedTime;
cmd.Parameters.Add(DbAccessManager.DBAccess.CreateParameter("@passSalt", p.PassSalt)); cmd.CommandText = "Insert Into Users (UserName, Password, PassSalt, DisplayName, RegisterTime, ApprovedBy, ApprovedTime, Description) values (@userName, @password, @passSalt, @displayName, @registerTime, @approvedBy, @approveTime, @description)";
cmd.Parameters.Add(DbAccessManager.DBAccess.CreateParameter("@displayName", p.DisplayName)); cmd.Parameters.Add(db.CreateParameter("@password", p.Password));
cmd.Parameters.Add(DbAccessManager.DBAccess.CreateParameter("@approvedBy", DbAdapterManager.ToDBValue(p.ApprovedBy))); cmd.Parameters.Add(db.CreateParameter("@passSalt", p.PassSalt));
cmd.Parameters.Add(DbAccessManager.DBAccess.CreateParameter("@description", p.Description)); cmd.Parameters.Add(db.CreateParameter("@registerTime", DateTime.Now));
DbAccessManager.DBAccess.ExecuteNonQuery(cmd, transaction); cmd.Parameters.Add(db.CreateParameter("@displayName", p.DisplayName));
cmd.Parameters.Add(db.CreateParameter("@approvedBy", DbAdapterManager.ToDBValue(p.ApprovedBy)));
cmd.Parameters.Add(db.CreateParameter("@approveTime", approveTime));
cmd.Parameters.Add(db.CreateParameter("@description", p.Description));
db.ExecuteNonQuery(cmd, transaction);
cmd.CommandText = $"insert into UserRole (UserID, RoleID) select ID, (select ID from Roles where RoleName = 'Default') RoleId from Users where UserName = '{p.UserName}'"; cmd.CommandText = $"insert into UserRole (UserID, RoleID) select ID, (select ID from Roles where RoleName = 'Default') RoleId from Users where UserName = '{p.UserName}'";
cmd.Parameters.Clear(); cmd.Parameters.Clear();
DbAccessManager.DBAccess.ExecuteNonQuery(cmd, transaction); db.ExecuteNonQuery(cmd, transaction);
transaction.CommitTransaction(); transaction.CommitTransaction();
ret = true; ret = true;