|
|
@@ -11,26 +11,24 @@ using Novell.Directory.Ldap;
|
|
|
namespace Admin.NET.Core;
|
|
|
|
|
|
/// <summary>
|
|
|
-/// 系统域登录信息配置表服务
|
|
|
+/// 系统域登录配置服务 💥
|
|
|
/// </summary>
|
|
|
-[ApiDescriptionSettings(Order = 100)]
|
|
|
+[ApiDescriptionSettings(Order = 485)]
|
|
|
public class SysLdapService : IDynamicApiController, ITransient
|
|
|
{
|
|
|
private readonly SqlSugarRepository<SysLdap> _sysLdapRep;
|
|
|
- private readonly SysUserLdapService _sysUserLdapService;
|
|
|
|
|
|
- public SysLdapService(SqlSugarRepository<SysLdap> rep, SysUserLdapService sysUserLdapService)
|
|
|
+ public SysLdapService(SqlSugarRepository<SysLdap> sysLdapRep)
|
|
|
{
|
|
|
- _sysLdapRep = rep;
|
|
|
- _sysUserLdapService = sysUserLdapService;
|
|
|
+ _sysLdapRep = sysLdapRep;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 获取系统域登录信息配置分页列表
|
|
|
+ /// 获取系统域登录配置分页列表
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
|
- [DisplayName("获取系统域登录信息配置分页列表")]
|
|
|
+ [DisplayName("获取系统域登录配置分页列表")]
|
|
|
public async Task<SqlSugarPagedList<SysLdap>> Page(SysLdapInput input)
|
|
|
{
|
|
|
return await _sysLdapRep.AsQueryable()
|
|
|
@@ -41,12 +39,12 @@ public class SysLdapService : IDynamicApiController, ITransient
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 增加系统域登录信息配置
|
|
|
+ /// 增加系统域登录配置
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
|
[ApiDescriptionSettings(Name = "Add"), HttpPost]
|
|
|
- [DisplayName("增加系统域登录信息配置")]
|
|
|
+ [DisplayName("增加系统域登录配置")]
|
|
|
public async Task<long> Add(AddSysLdapInput input)
|
|
|
{
|
|
|
var entity = input.Adapt<SysLdap>();
|
|
|
@@ -56,12 +54,12 @@ public class SysLdapService : IDynamicApiController, ITransient
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 更新系统域登录信息配置
|
|
|
+ /// 更新系统域登录配置
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
|
[ApiDescriptionSettings(Name = "Update"), HttpPost]
|
|
|
- [DisplayName("更新系统域登录信息配置")]
|
|
|
+ [DisplayName("更新系统域登录配置")]
|
|
|
public async Task Update(UpdateSysLdapInput input)
|
|
|
{
|
|
|
var entity = input.Adapt<SysLdap>();
|
|
|
@@ -73,12 +71,12 @@ public class SysLdapService : IDynamicApiController, ITransient
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 删除系统域登录信息配置
|
|
|
+ /// 删除系统域登录配置
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
|
[ApiDescriptionSettings(Name = "Delete"), HttpPost]
|
|
|
- [DisplayName("删除系统域登录信息配置")]
|
|
|
+ [DisplayName("删除系统域登录配置")]
|
|
|
public async Task Delete(DeleteSysLdapInput input)
|
|
|
{
|
|
|
var entity = await _sysLdapRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
|
|
|
@@ -87,36 +85,35 @@ public class SysLdapService : IDynamicApiController, ITransient
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 获取系统域登录信息配置详情
|
|
|
+ /// 获取系统域登录配置详情
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
|
- [DisplayName("获取系统域登录信息配置详情")]
|
|
|
+ [DisplayName("获取系统域登录配置详情")]
|
|
|
public async Task<SysLdap> GetDetail([FromQuery] DetailSysLdapInput input)
|
|
|
{
|
|
|
return await _sysLdapRep.GetFirstAsync(u => u.Id == input.Id);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 获取系统域登录信息配置列表
|
|
|
+ /// 获取系统域登录配置列表
|
|
|
/// </summary>
|
|
|
- /// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
|
- [DisplayName("获取系统域登录信息配置列表")]
|
|
|
- public async Task<List<SysLdap>> GetList([FromQuery] SysLdapInput input)
|
|
|
+ [DisplayName("获取系统域登录配置列表")]
|
|
|
+ public async Task<List<SysLdap>> GetList()
|
|
|
{
|
|
|
return await _sysLdapRep.AsQueryable().Select<SysLdap>().ToListAsync();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 账号验证
|
|
|
+ /// 验证账号
|
|
|
/// </summary>
|
|
|
/// <param name="account">域用户</param>
|
|
|
/// <param name="password">密码</param>
|
|
|
/// <param name="tenantId">租户</param>
|
|
|
/// <returns></returns>
|
|
|
[NonAction]
|
|
|
- public async Task<bool> Auth(long tenantId, string account, string password)
|
|
|
+ public async Task<bool> AuthAccount(long tenantId, string account, string password)
|
|
|
{
|
|
|
var ldap = await _sysLdapRep.GetFirstAsync(u => u.TenantId == tenantId) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
|
|
|
var ldapConn = new LdapConnection();
|
|
|
@@ -142,17 +139,12 @@ public class SysLdapService : IDynamicApiController, ITransient
|
|
|
}
|
|
|
catch (LdapException e)
|
|
|
{
|
|
|
- switch (e.ResultCode)
|
|
|
+ return e.ResultCode switch
|
|
|
{
|
|
|
- case LdapException.NoSuchObject:
|
|
|
- case LdapException.NoSuchAttribute:
|
|
|
- throw Oops.Oh(ErrorCodeEnum.D0009);
|
|
|
- case LdapException.InvalidCredentials:
|
|
|
- return false;
|
|
|
-
|
|
|
- default:
|
|
|
- throw Oops.Oh(e.Message);
|
|
|
- }
|
|
|
+ LdapException.NoSuchObject or LdapException.NoSuchAttribute => throw Oops.Oh(ErrorCodeEnum.D0009),
|
|
|
+ LdapException.InvalidCredentials => false,
|
|
|
+ _ => throw Oops.Oh(e.Message),
|
|
|
+ };
|
|
|
}
|
|
|
finally
|
|
|
{
|
|
|
@@ -167,7 +159,7 @@ public class SysLdapService : IDynamicApiController, ITransient
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
|
[DisplayName("同步域用户")]
|
|
|
- public async Task SyncSysLdapUser(SyncSysLdapInput input)
|
|
|
+ public async Task SyncUser(SyncSysLdapInput input)
|
|
|
{
|
|
|
var ldap = await _sysLdapRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
|
|
|
var ldapConn = new LdapConnection();
|
|
|
@@ -191,7 +183,7 @@ public class SysLdapService : IDynamicApiController, ITransient
|
|
|
}
|
|
|
var attrs = entity.GetAttributeSet();
|
|
|
if (attrs.Count == 0 || attrs.ContainsKey("OU"))
|
|
|
- LdapUserSearchDn(ldapConn, ldap, listUserLdap, entity.Dn);
|
|
|
+ SearchDnLdapUser(ldapConn, ldap, listUserLdap, entity.Dn);
|
|
|
else
|
|
|
{
|
|
|
var sysUserLdap = new SysUserLdap
|
|
|
@@ -206,19 +198,15 @@ public class SysLdapService : IDynamicApiController, ITransient
|
|
|
if (listUserLdap.Count == 0)
|
|
|
return;
|
|
|
|
|
|
- await _sysUserLdapService.InsertUserLdaps(ldap.TenantId.Value, listUserLdap);
|
|
|
+ await App.GetRequiredService<SysUserLdapService>().InsertUserLdaps(ldap.TenantId.Value, listUserLdap);
|
|
|
}
|
|
|
catch (LdapException e)
|
|
|
{
|
|
|
- switch (e.ResultCode)
|
|
|
+ throw e.ResultCode switch
|
|
|
{
|
|
|
- case LdapException.NoSuchObject:
|
|
|
- case LdapException.NoSuchAttribute:
|
|
|
- throw Oops.Oh(ErrorCodeEnum.D0009);
|
|
|
- case LdapException.InvalidCredentials:
|
|
|
- default:
|
|
|
- throw Oops.Oh(e.Message);
|
|
|
- }
|
|
|
+ LdapException.NoSuchObject or LdapException.NoSuchAttribute => Oops.Oh(ErrorCodeEnum.D0009),
|
|
|
+ _ => Oops.Oh(e.Message),
|
|
|
+ };
|
|
|
}
|
|
|
finally
|
|
|
{
|
|
|
@@ -227,13 +215,13 @@ public class SysLdapService : IDynamicApiController, ITransient
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 域用户遍历查询
|
|
|
+ /// 遍历查询域用户
|
|
|
/// </summary>
|
|
|
/// <param name="conn"></param>
|
|
|
/// <param name="ldap"></param>
|
|
|
/// <param name="listUserLdap"></param>
|
|
|
/// <param name="baseDn"></param>
|
|
|
- private void LdapUserSearchDn(LdapConnection conn, SysLdap ldap, List<SysUserLdap> listUserLdap, string baseDn)
|
|
|
+ private static void SearchDnLdapUser(LdapConnection conn, SysLdap ldap, List<SysUserLdap> listUserLdap, string baseDn)
|
|
|
{
|
|
|
var userEntitys = conn.Search(baseDn, LdapConnection.ScopeOne, "(objectClass=*)", null, false);
|
|
|
while (userEntitys.HasMore())
|
|
|
@@ -250,7 +238,7 @@ public class SysLdapService : IDynamicApiController, ITransient
|
|
|
}
|
|
|
var attrs = entity.GetAttributeSet();
|
|
|
if (attrs.Count == 0 || attrs.ContainsKey("OU"))
|
|
|
- LdapUserSearchDn(conn, ldap, listUserLdap, entity.Dn);
|
|
|
+ SearchDnLdapUser(conn, ldap, listUserLdap, entity.Dn);
|
|
|
else
|
|
|
{
|
|
|
var sysUserLdap = new SysUserLdap
|