mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-11-08 18:34:44 +08:00
sync with OpenAuth.Core
This commit is contained in:
@@ -65,6 +65,11 @@ namespace OpenAuth.App
|
||||
/// <returns></returns>
|
||||
public List<UploadFile> Add(IFormFileCollection files)
|
||||
{
|
||||
if (!_auth.CheckLogin())
|
||||
{
|
||||
throw new Exception("必需登录才能上传附件");
|
||||
}
|
||||
|
||||
var result = new List<UploadFile>();
|
||||
foreach (var file in files)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Infrastructure;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Infrastructure;
|
||||
using OpenAuth.Repository.Domain;
|
||||
|
||||
namespace OpenAuth.App.Request
|
||||
@@ -18,6 +19,7 @@ namespace OpenAuth.App.Request
|
||||
/// <summary>
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Required(ErrorMessage = "账号肯定不能为空啊~~")]
|
||||
public string Account { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@@ -27,9 +29,10 @@ namespace OpenAuth.App.Request
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 组织名称
|
||||
/// 用户姓名
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Required(ErrorMessage="姓名不能为空")]
|
||||
public string Name { get; set; }
|
||||
|
||||
|
||||
@@ -50,6 +53,7 @@ namespace OpenAuth.App.Request
|
||||
/// 所属组织Id,多个可用,分隔
|
||||
/// </summary>
|
||||
/// <value>The organizations.</value>
|
||||
[Required(ErrorMessage = "请为用户分配机构")]
|
||||
public string OrganizationIds { get; set; }
|
||||
|
||||
public static implicit operator UpdateUserReq(User user)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using OpenAuth.App.Interface;
|
||||
using OpenAuth.App.Request;
|
||||
using OpenAuth.Repository.Domain;
|
||||
@@ -8,10 +9,13 @@ using OpenAuth.Repository.Interface;
|
||||
|
||||
namespace OpenAuth.App
|
||||
{
|
||||
public class RevelanceManagerApp :BaseApp<Relevance>
|
||||
public class RevelanceManagerApp : BaseApp<Relevance>
|
||||
{
|
||||
public RevelanceManagerApp(IUnitWork unitWork, IRepository<Relevance> repository,IAuth auth) : base(unitWork, repository, auth)
|
||||
private readonly ILogger<RevelanceManagerApp> _logger;
|
||||
public RevelanceManagerApp(IUnitWork unitWork, IRepository<Relevance> repository, IAuth auth, ILogger<RevelanceManagerApp> logger) : base(unitWork,
|
||||
repository, auth)
|
||||
{
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -57,7 +61,7 @@ namespace OpenAuth.App
|
||||
}
|
||||
else
|
||||
{
|
||||
DeleteBy(req.type, req.secIds.ToLookup(u => req.firstId));
|
||||
DeleteBy(req.type, req.secIds.ToLookup(u => req.firstId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,16 +76,23 @@ namespace OpenAuth.App
|
||||
{
|
||||
foreach (var value in sameVals)
|
||||
{
|
||||
UnitWork.Delete<Relevance>(u => u.Key == key && u.FirstId == sameVals.Key && u.SecondId == value);
|
||||
_logger.LogInformation($"start=> delete {key} {sameVals.Key} {value}");
|
||||
try
|
||||
{
|
||||
UnitWork.Delete<Relevance>(u => u.Key == key && u.FirstId == sameVals.Key && u.SecondId == value);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError(e,e.Message);
|
||||
}
|
||||
_logger.LogInformation($"end=> {key} {sameVals.Key} {value}");
|
||||
}
|
||||
}
|
||||
UnitWork.Save();
|
||||
}
|
||||
|
||||
public void DeleteBy(string key, params string[] firstIds)
|
||||
{
|
||||
UnitWork.Delete<Relevance>(u => firstIds.Contains(u.FirstId) && u.Key == key);
|
||||
UnitWork.Save();
|
||||
}
|
||||
|
||||
|
||||
@@ -97,12 +108,12 @@ namespace OpenAuth.App
|
||||
if (returnSecondIds)
|
||||
{
|
||||
return Repository.Find(u => u.Key == key
|
||||
&& ids.Contains(u.FirstId)).Select(u => u.SecondId).ToList();
|
||||
&& ids.Contains(u.FirstId)).Select(u => u.SecondId).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
return Repository.Find(u => u.Key == key
|
||||
&& ids.Contains(u.SecondId)).Select(u => u.FirstId).ToList();
|
||||
&& ids.Contains(u.SecondId)).Select(u => u.FirstId).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,6 +136,11 @@ namespace OpenAuth.App
|
||||
/// <param name="request"></param>
|
||||
public void AssignData(AssignDataReq request)
|
||||
{
|
||||
if (!request.Properties.Any())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var relevances = new List<Relevance>();
|
||||
foreach (var requestProperty in request.Properties)
|
||||
{
|
||||
@@ -137,6 +153,7 @@ namespace OpenAuth.App
|
||||
OperateTime = DateTime.Now
|
||||
});
|
||||
}
|
||||
|
||||
UnitWork.BatchAdd(relevances.ToArray());
|
||||
UnitWork.Save();
|
||||
}
|
||||
@@ -149,25 +166,24 @@ namespace OpenAuth.App
|
||||
{
|
||||
if (request.Properties == null || request.Properties.Length == 0)
|
||||
{
|
||||
if (string.IsNullOrEmpty(request.ModuleCode)) //模块为空,直接把角色的所有授权删除
|
||||
if (string.IsNullOrEmpty(request.ModuleCode)) //模块为空,直接把角色的所有授权删除
|
||||
{
|
||||
DeleteBy(Define.ROLEDATAPROPERTY, request.RoleId);
|
||||
}
|
||||
else //把角色的某一个模块权限全部删除
|
||||
else //把角色的某一个模块权限全部删除
|
||||
{
|
||||
DeleteBy(Define.ROLEDATAPROPERTY, new []{ request.ModuleCode }.ToLookup(u =>request.RoleId));
|
||||
DeleteBy(Define.ROLEDATAPROPERTY, new[] {request.ModuleCode}.ToLookup(u => request.RoleId));
|
||||
}
|
||||
}
|
||||
else //按具体的id删除
|
||||
else //按具体的id删除
|
||||
{
|
||||
foreach (var property in request.Properties)
|
||||
{
|
||||
UnitWork.Delete<Relevance>(u => u.Key == Define.ROLEDATAPROPERTY
|
||||
&& u.FirstId == request.RoleId
|
||||
&& u.SecondId == request.ModuleCode
|
||||
&& u.ThirdId == property);
|
||||
&& u.FirstId == request.RoleId
|
||||
&& u.SecondId == request.ModuleCode
|
||||
&& u.ThirdId == property);
|
||||
}
|
||||
UnitWork.Save();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -29,29 +29,37 @@ namespace OpenAuth.App
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 添加角色,如果当前登录用户不是System,则直接把新角色分配给当前登录用户
|
||||
/// </summary>
|
||||
public void Add(RoleView obj)
|
||||
{
|
||||
|
||||
Role role = obj;
|
||||
role.CreateTime = DateTime.Now;
|
||||
Repository.Add(role);
|
||||
obj.Id = role.Id; //要把保存后的ID存入view
|
||||
UnitWork.ExecuteWithTransaction(() =>
|
||||
{
|
||||
Role role = obj;
|
||||
role.CreateTime = DateTime.Now;
|
||||
UnitWork.Add(role);
|
||||
UnitWork.Save();
|
||||
obj.Id = role.Id; //要把保存后的ID存入view
|
||||
|
||||
//如果当前账号不是SYSTEM,则直接分配
|
||||
var loginUser = _auth.GetCurrentUser();
|
||||
if (loginUser.User.Account != Define.SYSTEM_USERNAME)
|
||||
{
|
||||
_revelanceApp.Assign(new AssignReq
|
||||
{
|
||||
type = Define.USERROLE,
|
||||
firstId = loginUser.User.Id,
|
||||
secIds = new[] {role.Id}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//如果当前账号不是SYSTEM,则直接分配
|
||||
var loginUser = _auth.GetCurrentUser();
|
||||
if (loginUser.User.Account != Define.SYSTEM_USERNAME)
|
||||
{
|
||||
_revelanceApp.Assign(new AssignReq
|
||||
{
|
||||
type = Define.USERROLE,
|
||||
firstId = loginUser.User.Id,
|
||||
secIds = new[] {role.Id}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新角色属性
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
public void Update(RoleView obj)
|
||||
{
|
||||
Role role = obj;
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace OpenAuth.App.Test
|
||||
|
||||
var cachemock = new Mock<ICacheContext>();
|
||||
cachemock.Setup(x => x.Get<UserAuthSession>("tokentest"))
|
||||
.Returns(new UserAuthSession { Account = "System" });
|
||||
.Returns(new UserAuthSession { Account = Define.SYSTEM_USERNAME });
|
||||
services.AddScoped(x => cachemock.Object);
|
||||
|
||||
var httpContextAccessorMock = new Mock<IHttpContextAccessor>();
|
||||
@@ -56,5 +56,32 @@ namespace OpenAuth.App.Test
|
||||
Console.WriteLine(JsonHelper.Instance.Serialize(result));
|
||||
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void UnAssign()
|
||||
{
|
||||
var app = _autofacServiceProvider.GetService<RevelanceManagerApp>();
|
||||
app.UnAssignData(new AssignDataReq
|
||||
{
|
||||
ModuleCode = "WmsInboundOrderTbl",
|
||||
Properties = new string[]{},
|
||||
RoleId = "09ee2ffa-7463-4938-ae0b-1cb4e80c7c13"
|
||||
});
|
||||
app.UnAssignData(new AssignDataReq
|
||||
{
|
||||
ModuleCode = "Category",
|
||||
Properties = new string[]{},
|
||||
RoleId = "09ee2ffa-7463-4938-ae0b-1cb4e80c7c13"
|
||||
});
|
||||
|
||||
app.UnAssignData(new AssignDataReq
|
||||
{
|
||||
ModuleCode = "Resource",
|
||||
Properties = new string[]{},
|
||||
RoleId = "09ee2ffa-7463-4938-ae0b-1cb4e80c7c13"
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace OpenAuth.App.Test
|
||||
|
||||
var cachemock = new Mock<ICacheContext>();
|
||||
cachemock.Setup(x => x.Get<UserAuthSession>("tokentest"))
|
||||
.Returns(new UserAuthSession { Account = "System" });
|
||||
.Returns(new UserAuthSession { Account = Define.SYSTEM_USERNAME });
|
||||
services.AddScoped(x => cachemock.Object);
|
||||
|
||||
var httpContextAccessorMock = new Mock<IHttpContextAccessor>();
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace OpenAuth.App.Test
|
||||
var services = new ServiceCollection();
|
||||
|
||||
var cachemock = new Mock<ICacheContext>();
|
||||
cachemock.Setup(x => x.Get<UserAuthSession>("tokentest")).Returns(new UserAuthSession { Account = "System" });
|
||||
cachemock.Setup(x => x.Get<UserAuthSession>("tokentest")).Returns(new UserAuthSession { Account = Define.SYSTEM_USERNAME });
|
||||
services.AddScoped(x => cachemock.Object);
|
||||
|
||||
var httpContextAccessorMock = new Mock<IHttpContextAccessor>();
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace OpenAuth.App.Test
|
||||
var services = new ServiceCollection();
|
||||
|
||||
var cachemock = new Mock<ICacheContext>();
|
||||
cachemock.Setup(x => x.Get<UserAuthSession>("tokentest")).Returns(new UserAuthSession { Account = "System" });
|
||||
cachemock.Setup(x => x.Get<UserAuthSession>("tokentest")).Returns(new UserAuthSession { Account = Define.SYSTEM_USERNAME});
|
||||
services.AddScoped(x => cachemock.Object);
|
||||
|
||||
var httpContextAccessorMock = new Mock<IHttpContextAccessor>();
|
||||
@@ -28,6 +28,27 @@ namespace OpenAuth.App.Test
|
||||
return services;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 测试添加用户时,数据校验。
|
||||
/// 因为请求数据没有Account,Name等,该测试会提示异常
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestValidation()
|
||||
{
|
||||
var app = _autofacServiceProvider.GetService<UserManagerApp>();
|
||||
try
|
||||
{
|
||||
app.AddOrUpdate(new UpdateUserReq
|
||||
{
|
||||
OrganizationIds = "08f41bf6-4388-4b1e-bd3e-2ff538b44b1b",
|
||||
});
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestAdd()
|
||||
{
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Castle.Core.Internal;
|
||||
using Infrastructure.Extensions;
|
||||
using OpenAuth.App.Interface;
|
||||
using OpenAuth.App.Request;
|
||||
using OpenAuth.App.Response;
|
||||
@@ -115,6 +116,8 @@ namespace OpenAuth.App
|
||||
|
||||
public void AddOrUpdate(UpdateUserReq request)
|
||||
{
|
||||
request.ValidationEntity(u => new {u.Account,u.Name, u.OrganizationIds});
|
||||
|
||||
if (string.IsNullOrEmpty(request.OrganizationIds))
|
||||
throw new Exception("请为用户分配机构");
|
||||
User requser = request;
|
||||
|
||||
Reference in New Issue
Block a user