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

View File

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

View File

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

View File

@ -213,27 +213,32 @@ namespace Bootstrap.DataAccess
p.PassSalt = LgbCryptography.GenerateSalt();
p.Password = LgbCryptography.ComputeHash(p.Password, p.PassSalt);
using (TransactionPackage transaction = DbAccessManager.DBAccess.BeginTransaction())
var db = DbAccessManager.DBAccess;
using (TransactionPackage transaction = db.BeginTransaction())
{
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));
var un = DbAccessManager.DBAccess.ExecuteScalar(cmd, transaction);
cmd.Parameters.Add(db.CreateParameter("@userName", p.UserName));
var un = db.ExecuteScalar(cmd, transaction);
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)";
cmd.Parameters.Add(DbAccessManager.DBAccess.CreateParameter("@password", p.Password));
cmd.Parameters.Add(DbAccessManager.DBAccess.CreateParameter("@passSalt", p.PassSalt));
cmd.Parameters.Add(DbAccessManager.DBAccess.CreateParameter("@displayName", p.DisplayName));
cmd.Parameters.Add(DbAccessManager.DBAccess.CreateParameter("@approvedBy", DbAdapterManager.ToDBValue(p.ApprovedBy)));
cmd.Parameters.Add(DbAccessManager.DBAccess.CreateParameter("@description", p.Description));
DbAccessManager.DBAccess.ExecuteNonQuery(cmd, transaction);
object approveTime = DBNull.Value;
if (p.ApprovedTime != DateTime.MinValue) approveTime = p.ApprovedTime;
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(db.CreateParameter("@password", p.Password));
cmd.Parameters.Add(db.CreateParameter("@passSalt", p.PassSalt));
cmd.Parameters.Add(db.CreateParameter("@registerTime", DateTime.Now));
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.Parameters.Clear();
DbAccessManager.DBAccess.ExecuteNonQuery(cmd, transaction);
db.ExecuteNonQuery(cmd, transaction);
transaction.CommitTransaction();
ret = true;