Compare commits
10 Commits
88cffc12a5
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 7ea89aa35e | |||
| 50f5289191 | |||
| f8dcd5ba41 | |||
| 8f5015f7d7 | |||
| efcd26fb29 | |||
| 2ee0f976fd | |||
| a3087a5e34 | |||
| 525a30b541 | |||
| f5471a8d01 | |||
| bcdcdd679a |
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "user-manager-ui",
|
"name": "user-manager-ui",
|
||||||
"version": "4.1.0",
|
"version": "2.0.0",
|
||||||
"minApiVersion":"6.1.3",
|
"minApiVersion":"6.1.3",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"ng": "ng",
|
"ng": "ng",
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ using Microsoft.Extensions.Localization;
|
|||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using DigitalData.Core.Abstraction.Application;
|
using DigitalData.Core.Abstraction.Application;
|
||||||
using DigitalData.Core.Abstraction.Application.DTO;
|
using DigitalData.Core.Abstraction.Application.DTO;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
using DigitalData.UserManager.API.Models;
|
||||||
|
|
||||||
namespace DigitalData.UserManager.API.Controllers;
|
namespace DigitalData.UserManager.API.Controllers;
|
||||||
|
|
||||||
@@ -23,8 +25,9 @@ public class DirectoryController : ControllerBase
|
|||||||
private readonly Dictionary<string, string> _customSearchFilters;
|
private readonly Dictionary<string, string> _customSearchFilters;
|
||||||
private readonly IStringLocalizer<Resource> _localizer;
|
private readonly IStringLocalizer<Resource> _localizer;
|
||||||
private readonly ILogger<DirectoryController> _logger;
|
private readonly ILogger<DirectoryController> _logger;
|
||||||
|
private readonly DirSearchRoot _dirSearchRoot;
|
||||||
|
|
||||||
public DirectoryController(IConfiguration configuration, IStringLocalizer<Resource> localizer, IUserService userService, IDirectorySearchService directorySearchService, ILogger<DirectoryController> logger)
|
public DirectoryController(IConfiguration configuration, IStringLocalizer<Resource> localizer, IUserService userService, IDirectorySearchService directorySearchService, ILogger<DirectoryController> logger, IOptions<DirSearchRoot> dirSearchRootOptions)
|
||||||
{
|
{
|
||||||
_localizer = localizer;
|
_localizer = localizer;
|
||||||
_userService = userService;
|
_userService = userService;
|
||||||
@@ -33,23 +36,7 @@ public class DirectoryController : ControllerBase
|
|||||||
var customSearchFiltersSection = configuration.GetSection("DirectorySearch:CustomSearchFilters");
|
var customSearchFiltersSection = configuration.GetSection("DirectorySearch:CustomSearchFilters");
|
||||||
_customSearchFilters = customSearchFiltersSection.Get<Dictionary<string, string>>() ?? new();
|
_customSearchFilters = customSearchFiltersSection.Get<Dictionary<string, string>>() ?? new();
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
_dirSearchRoot = dirSearchRootOptions.Value;
|
||||||
|
|
||||||
[HttpGet("Root/{username}")]
|
|
||||||
public IActionResult GetRootOf(string username)
|
|
||||||
{
|
|
||||||
var root = _dirSearchService.GetSearchRootCache(username);
|
|
||||||
|
|
||||||
return root is null ? NotFound() : Ok(new
|
|
||||||
{
|
|
||||||
guid = root.Guid,
|
|
||||||
nativeGuid = root.NativeGuid,
|
|
||||||
name = root.Name,
|
|
||||||
path = root.Path,
|
|
||||||
parentPath = root.Parent?.Path,
|
|
||||||
username = root.Username,
|
|
||||||
schemaClassName = root.SchemaClassName
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("CustomSearchFilter")]
|
[HttpGet("CustomSearchFilter")]
|
||||||
@@ -66,26 +53,6 @@ public class DirectoryController : ControllerBase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
|
||||||
public async Task<IActionResult> CreateSearchRoot([FromBody] SearchRootCreateDto searchRootCreateDto)
|
|
||||||
{
|
|
||||||
var dirEntryUsername = searchRootCreateDto.Username ?? CurrentUser;
|
|
||||||
if (dirEntryUsername is null)
|
|
||||||
return Unauthorized();
|
|
||||||
|
|
||||||
bool isValid = _dirSearchService.ValidateCredentials(dirEntryUsername, searchRootCreateDto.Password);
|
|
||||||
|
|
||||||
if (!isValid)
|
|
||||||
return Unauthorized(Result.Fail().Message(_localizer[Key.UserNotFound]));
|
|
||||||
|
|
||||||
var userResult = await _userService.ReadByUsernameAsync(dirEntryUsername);
|
|
||||||
if (!userResult.IsSuccess || userResult.Data is null)
|
|
||||||
return Unauthorized(Result.Fail().Message(_localizer[Key.UserNotFoundInLocalDB]));
|
|
||||||
|
|
||||||
_dirSearchService.SetSearchRootCache(userResult.Data.Username, searchRootCreateDto.Password);
|
|
||||||
return Ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("SearchByFilter/{filter}")]
|
[HttpGet("SearchByFilter/{filter}")]
|
||||||
public IActionResult SearchByFilter([FromRoute] string filter, string? dirEntryUsername, params string[] propName)
|
public IActionResult SearchByFilter([FromRoute] string filter, string? dirEntryUsername, params string[] propName)
|
||||||
{
|
{
|
||||||
@@ -94,7 +61,9 @@ public class DirectoryController : ControllerBase
|
|||||||
if (dirEntryUsername is null)
|
if (dirEntryUsername is null)
|
||||||
return Unauthorized();
|
return Unauthorized();
|
||||||
|
|
||||||
return _dirSearchService.FindAllByUserCache(dirEntryUsername, filter, properties: propName).Then(Ok, IActionResult (m, n) =>
|
using var sRoot = _dirSearchRoot.ToDirectoryEntry;
|
||||||
|
|
||||||
|
return _dirSearchService.FindAll(sRoot, filter, properties: propName).Then(Ok, IActionResult (m, n) =>
|
||||||
{
|
{
|
||||||
_logger.LogNotice(n);
|
_logger.LogNotice(n);
|
||||||
return StatusCode(StatusCodes.Status424FailedDependency);
|
return StatusCode(StatusCodes.Status424FailedDependency);
|
||||||
@@ -114,7 +83,9 @@ public class DirectoryController : ControllerBase
|
|||||||
if (filter is null)
|
if (filter is null)
|
||||||
return NotFound($"The filter named {filterName} does not exist.");
|
return NotFound($"The filter named {filterName} does not exist.");
|
||||||
|
|
||||||
return _dirSearchService.FindAllByUserCache(dirEntryUsername, filter, properties: propName).Then(Ok, IActionResult (m, n) =>
|
using var sRoot = _dirSearchRoot.ToDirectoryEntry;
|
||||||
|
|
||||||
|
return _dirSearchService.FindAll(sRoot, filter, properties: propName).Then(Ok, IActionResult (m, n) =>
|
||||||
{
|
{
|
||||||
_logger.LogNotice(n);
|
_logger.LogNotice(n);
|
||||||
return StatusCode(StatusCodes.Status424FailedDependency);
|
return StatusCode(StatusCodes.Status424FailedDependency);
|
||||||
@@ -135,7 +106,9 @@ public class DirectoryController : ControllerBase
|
|||||||
if (filter is null)
|
if (filter is null)
|
||||||
throw new InvalidOperationException("The LDAP Group Search filter configuration is missing in your appsettings. Please ensure it's added under DirectorySearch:CustomSearchFilters:Group to enable group searches.");
|
throw new InvalidOperationException("The LDAP Group Search filter configuration is missing in your appsettings. Please ensure it's added under DirectorySearch:CustomSearchFilters:Group to enable group searches.");
|
||||||
|
|
||||||
return _dirSearchService.FindAllByUserCache(username: dirEntryUsername, filter, properties: propName).Then(Ok, IActionResult (m, n) =>
|
using var sRoot = _dirSearchRoot.ToDirectoryEntry;
|
||||||
|
|
||||||
|
return _dirSearchService.FindAll(_dirSearchRoot.ToDirectoryEntry, filter, properties: propName).Then(Ok, IActionResult (m, n) =>
|
||||||
{
|
{
|
||||||
_logger.LogNotice(n);
|
_logger.LogNotice(n);
|
||||||
return StatusCode(StatusCodes.Status424FailedDependency);
|
return StatusCode(StatusCodes.Status424FailedDependency);
|
||||||
@@ -156,7 +129,9 @@ public class DirectoryController : ControllerBase
|
|||||||
if (filter is null)
|
if (filter is null)
|
||||||
throw new InvalidOperationException("The LDAP User Search filter configuration is missing in your appsettings. Please ensure it's added under DirectorySearch:CustomSearchFilters:User to enable group searches.");
|
throw new InvalidOperationException("The LDAP User Search filter configuration is missing in your appsettings. Please ensure it's added under DirectorySearch:CustomSearchFilters:User to enable group searches.");
|
||||||
|
|
||||||
return _dirSearchService.FindAllByUserCache(username: dirEntryUsername, filter, properties: propName).Then(
|
using var sRoot = _dirSearchRoot.ToDirectoryEntry;
|
||||||
|
|
||||||
|
return _dirSearchService.FindAll(sRoot, filter, properties: propName).Then(
|
||||||
Success: data =>
|
Success: data =>
|
||||||
{
|
{
|
||||||
if (groupName is not null)
|
if (groupName is not null)
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<TargetFrameworks>net7.0;net8.0;net9.0</TargetFrameworks>
|
<TargetFrameworks>net7.0;net8.0;net9.0</TargetFrameworks>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Version>6.1.3</Version>
|
<Version>6.1.4</Version>
|
||||||
<AssemblyVersion>6.1.3</AssemblyVersion>
|
<AssemblyVersion>6.1.4</AssemblyVersion>
|
||||||
<FileVersion>6.1.3</FileVersion>
|
<FileVersion>6.1.4</FileVersion>
|
||||||
<PackageIcon>icon.png</PackageIcon>
|
<PackageIcon>icon.png</PackageIcon>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|||||||
@@ -8,5 +8,5 @@ public class AuthTokenKeys
|
|||||||
|
|
||||||
public string Issuer { get; init; } = "auth.digitaldata.works";
|
public string Issuer { get; init; } = "auth.digitaldata.works";
|
||||||
|
|
||||||
public string Audience { get; init; } = "user-manager.digitaldata.works";
|
public string Audience { get; init; } = "usermanager.digitaldata.works";
|
||||||
}
|
}
|
||||||
|
|||||||
22
src/DigitalData.UserManager.API/Models/DirSearchRoot.cs
Normal file
22
src/DigitalData.UserManager.API/Models/DirSearchRoot.cs
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
using DigitalData.Core.Application;
|
||||||
|
using System.DirectoryServices;
|
||||||
|
|
||||||
|
namespace DigitalData.UserManager.API.Models;
|
||||||
|
|
||||||
|
[Obsolete("Use ActiveDirectory.API")]
|
||||||
|
public class DirSearchRoot : DirectorySearchOptions
|
||||||
|
{
|
||||||
|
public string Path => $"LDAP://{ServerName}/{Root}";
|
||||||
|
|
||||||
|
public string? Username { get; set; }
|
||||||
|
|
||||||
|
public string? Password { get; set; }
|
||||||
|
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessage("Interoperability", "CA1416:Validate platform compatibility", Justification = "<Pending>")]
|
||||||
|
public DirectoryEntry ToDirectoryEntry => new ()
|
||||||
|
{
|
||||||
|
Path = Path,
|
||||||
|
Username = Username,
|
||||||
|
Password = Password
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -82,6 +82,7 @@ try {
|
|||||||
|
|
||||||
builder.ConfigureBySection<DirectorySearchOptions>();
|
builder.ConfigureBySection<DirectorySearchOptions>();
|
||||||
builder.Services.AddDirectorySearchService(config.GetSection("DirectorySearchOptions"));
|
builder.Services.AddDirectorySearchService(config.GetSection("DirectorySearchOptions"));
|
||||||
|
builder.Services.Configure<DirSearchRoot>(config.GetSection("DirectorySearchOptions"));
|
||||||
builder.Services.AddJWTService<UserReadDto>(user => new SecurityTokenDescriptor()
|
builder.Services.AddJWTService<UserReadDto>(user => new SecurityTokenDescriptor()
|
||||||
{
|
{
|
||||||
Claims = user.ToClaimList().ToDictionary(claim => claim.Type, claim => claim.Value as object)
|
Claims = user.ToClaimList().ToDictionary(claim => claim.Type, claim => claim.Value as object)
|
||||||
@@ -171,7 +172,6 @@ try {
|
|||||||
var eCnnStr = config.GetConnectionString("UM_DEF") ?? throw new InvalidOperationException("Connection string 'DD_ECM_Connection' is missing from the configuration.");
|
var eCnnStr = config.GetConnectionString("UM_DEF") ?? throw new InvalidOperationException("Connection string 'DD_ECM_Connection' is missing from the configuration.");
|
||||||
|
|
||||||
SqlConnectionStringBuilder cnnStrBuilder = new(eCnnStr);
|
SqlConnectionStringBuilder cnnStrBuilder = new(eCnnStr);
|
||||||
cnnStrBuilder.UserID = encryptor.Decrypt(cnnStrBuilder.UserID);
|
|
||||||
cnnStrBuilder.Password = encryptor.Decrypt(cnnStrBuilder.Password);
|
cnnStrBuilder.Password = encryptor.Decrypt(cnnStrBuilder.Password);
|
||||||
var dCnnStr = cnnStrBuilder.ConnectionString;
|
var dCnnStr = cnnStrBuilder.ConnectionString;
|
||||||
return dCnnStr;
|
return dCnnStr;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"PublicKeys": [
|
"PublicKeys": [
|
||||||
{
|
{
|
||||||
"Issuer": "auth.digitaldata.works",
|
"Issuer": "auth.digitaldata.works",
|
||||||
"Audience": "user-manager.digitaldata.works"
|
"Audience": "usermanager.digitaldata.works"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"RetryDelay": "00:00:05"
|
"RetryDelay": "00:00:05"
|
||||||
|
|||||||
@@ -6,14 +6,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"UM_DEF": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=g+2edXEbMbujCUjh7INZRQ==;Password=Bz/n9pu8EyzlVqicaMRQGQ==;Encrypt=false;TrustServerCertificate=True;"
|
"UM_DEF": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=Bz/n9pu8EyzlVqicaMRQGQ==;Encrypt=false;TrustServerCertificate=True;"
|
||||||
},
|
},
|
||||||
"AllowedOrigins": [ "https://localhost:7103", "http://172.24.12.39:85", "http://localhost:85", "http://localhost:4200", "http://localhost:5500", "https://localhost:7202" ],
|
"AllowedOrigins": [ "https://localhost:7103", "http://172.24.12.39:85", "http://localhost:85", "http://localhost:4200", "http://localhost:5500", "https://localhost:7202" ],
|
||||||
"RunAsWindowsService": false,
|
"RunAsWindowsService": false,
|
||||||
"DirectorySearchOptions": {
|
"DirectorySearchOptions": {
|
||||||
"ServerName": "DD-VMP01-DC01",
|
"ServerName": "DD-VMP01-DC01",
|
||||||
"Root": "DC=dd-gan,DC=local,DC=digitaldata,DC=works",
|
"Root": "DC=dd-gan,DC=local,DC=digitaldata,DC=works",
|
||||||
"UserCacheExpirationDays": 1,
|
"Username": "FABRIK19-User01",
|
||||||
|
"Password": "9bWOr0UGuHn_7VkC",
|
||||||
"CustomSearchFilters": {
|
"CustomSearchFilters": {
|
||||||
"User": "(&(objectClass=user)(sAMAccountName=*))",
|
"User": "(&(objectClass=user)(sAMAccountName=*))",
|
||||||
"Group": "(&(objectClass=group) (samAccountName=*))"
|
"Group": "(&(objectClass=group) (samAccountName=*))"
|
||||||
|
|||||||
@@ -13,9 +13,9 @@
|
|||||||
<PackageIcon>icon.png</PackageIcon>
|
<PackageIcon>icon.png</PackageIcon>
|
||||||
<RepositoryUrl>http://git.dd:3000/AppStd/WebUserManager.git</RepositoryUrl>
|
<RepositoryUrl>http://git.dd:3000/AppStd/WebUserManager.git</RepositoryUrl>
|
||||||
<PackageTags>digital data user maanger</PackageTags>
|
<PackageTags>digital data user maanger</PackageTags>
|
||||||
<Version>1.1.2</Version>
|
<Version>1.1.3</Version>
|
||||||
<AssemblyVersion>1.1.2</AssemblyVersion>
|
<AssemblyVersion>1.1.3</AssemblyVersion>
|
||||||
<FileVersion>1.1.2</FileVersion>
|
<FileVersion>1.1.3</FileVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -6,7 +6,12 @@ using System;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace DigitalData.UserManager.Domain.Entities
|
namespace DigitalData.UserManager.Domain.Entities
|
||||||
|
#if NET
|
||||||
|
;
|
||||||
|
#elif NETFRAMEWORK
|
||||||
{
|
{
|
||||||
|
#endif
|
||||||
|
|
||||||
public class BaseEntity
|
public class BaseEntity
|
||||||
{
|
{
|
||||||
[Column("GUID")]
|
[Column("GUID")]
|
||||||
@@ -17,7 +22,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
[StringLength(50)]
|
[StringLength(50)]
|
||||||
[Column("ADDED_WHO")]
|
[Column("ADDED_WHO")]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
AddedWho { get; set; }
|
AddedWho { get; set; }
|
||||||
@@ -25,7 +30,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
[StringLength(50)]
|
[StringLength(50)]
|
||||||
[Column("CHANGED_WHO")]
|
[Column("CHANGED_WHO")]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
ChangedWho { get; set; }
|
ChangedWho { get; set; }
|
||||||
@@ -38,4 +43,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
[Column("CHANGED_WHEN", TypeName = "datetime")]
|
[Column("CHANGED_WHEN", TypeName = "datetime")]
|
||||||
public DateTime? ChangedWhen { get; set; }
|
public DateTime? ChangedWhen { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if NETFRAMEWORK
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@@ -25,7 +25,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
|
|
||||||
[Column("COMMENT")]
|
[Column("COMMENT")]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Comment { get; set; }
|
Comment { get; set; }
|
||||||
@@ -33,7 +33,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
[StringLength(50)]
|
[StringLength(50)]
|
||||||
[Column("ADDED_WHO")]
|
[Column("ADDED_WHO")]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
AddedWho { get; set; }
|
AddedWho { get; set; }
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
{
|
{
|
||||||
[StringLength(50)]
|
[StringLength(50)]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Name { get; set; }
|
Name { get; set; }
|
||||||
@@ -29,7 +29,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
|
|
||||||
[StringLength(200)]
|
[StringLength(200)]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Comment { get; set; }
|
Comment { get; set; }
|
||||||
|
|||||||
@@ -16,21 +16,21 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
|
|
||||||
[StringLength(200)]
|
[StringLength(200)]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Comment { get; set; }
|
Comment { get; set; }
|
||||||
|
|
||||||
[ForeignKey("UserId")]
|
[ForeignKey("UserId")]
|
||||||
public virtual User
|
public virtual User
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
User { get; set; }
|
User { get; set; }
|
||||||
|
|
||||||
[ForeignKey("GroupId")]
|
[ForeignKey("GroupId")]
|
||||||
public virtual Group
|
public virtual Group
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Group { get; set; }
|
Group { get; set; }
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
|
|
||||||
[StringLength(50)]
|
[StringLength(50)]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Name { get; set; }
|
Name { get; set; }
|
||||||
@@ -21,7 +21,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
[StringLength(20)]
|
[StringLength(20)]
|
||||||
[Column("SHORT_NAME")]
|
[Column("SHORT_NAME")]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
ShortName { get; set; }
|
ShortName { get; set; }
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
[Column("COMMENT")]
|
[Column("COMMENT")]
|
||||||
[StringLength(200)]
|
[StringLength(200)]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Comment { get; set; }
|
Comment { get; set; }
|
||||||
@@ -30,7 +30,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
[Column("ADDED_WHO")]
|
[Column("ADDED_WHO")]
|
||||||
[StringLength(50)]
|
[StringLength(50)]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
AddedWho { get; set; } = "DEFAULT";
|
AddedWho { get; set; } = "DEFAULT";
|
||||||
@@ -38,21 +38,21 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
[Column("CHANGED_WHO")]
|
[Column("CHANGED_WHO")]
|
||||||
[StringLength(50)]
|
[StringLength(50)]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
ChangedWho { get; set; }
|
ChangedWho { get; set; }
|
||||||
|
|
||||||
[ForeignKey("UserId")]
|
[ForeignKey("UserId")]
|
||||||
public virtual User
|
public virtual User
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
User { get; set; }
|
User { get; set; }
|
||||||
|
|
||||||
[ForeignKey("ModuleId")]
|
[ForeignKey("ModuleId")]
|
||||||
public virtual Module
|
public virtual Module
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Module { get; set; }
|
Module { get; set; }
|
||||||
|
|||||||
@@ -6,14 +6,19 @@ using System;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace DigitalData.UserManager.Domain.Entities
|
namespace DigitalData.UserManager.Domain.Entities
|
||||||
|
#if NET
|
||||||
|
;
|
||||||
|
#elif NETFRAMEWORK
|
||||||
{
|
{
|
||||||
|
#endif
|
||||||
|
|
||||||
[Table("TBDD_USER", Schema = "dbo")]
|
[Table("TBDD_USER", Schema = "dbo")]
|
||||||
public partial class User : BaseEntity
|
public partial class User : BaseEntity
|
||||||
{
|
{
|
||||||
[Column("PRENAME")]
|
[Column("PRENAME")]
|
||||||
[StringLength(50)]
|
[StringLength(50)]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Prename { get; set; }
|
Prename { get; set; }
|
||||||
@@ -21,7 +26,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
[Column("NAME")]
|
[Column("NAME")]
|
||||||
[StringLength(50)]
|
[StringLength(50)]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Name { get; set; }
|
Name { get; set; }
|
||||||
@@ -30,7 +35,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
[Column("USERNAME")]
|
[Column("USERNAME")]
|
||||||
[StringLength(50)]
|
[StringLength(50)]
|
||||||
public
|
public
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
required
|
required
|
||||||
#endif
|
#endif
|
||||||
string Username { get; set; }
|
string Username { get; set; }
|
||||||
@@ -38,7 +43,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
[Column("SHORTNAME")]
|
[Column("SHORTNAME")]
|
||||||
[StringLength(30)]
|
[StringLength(30)]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Shortname
|
Shortname
|
||||||
@@ -47,7 +52,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
[Column("EMAIL")]
|
[Column("EMAIL")]
|
||||||
[StringLength(100)]
|
[StringLength(100)]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Email { get; set; }
|
Email { get; set; }
|
||||||
@@ -57,7 +62,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
[StringLength(5)]
|
[StringLength(5)]
|
||||||
[DefaultValue("de-DE")]
|
[DefaultValue("de-DE")]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Language { get; set; }
|
Language { get; set; }
|
||||||
@@ -65,7 +70,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
[Column("COMMENT")]
|
[Column("COMMENT")]
|
||||||
[StringLength(500)]
|
[StringLength(500)]
|
||||||
public string
|
public string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Comment { get; set; }
|
Comment { get; set; }
|
||||||
@@ -78,7 +83,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
[StringLength(10)]
|
[StringLength(10)]
|
||||||
[DefaultValue("dd.MM.yyyy")]
|
[DefaultValue("dd.MM.yyyy")]
|
||||||
public
|
public
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
required
|
required
|
||||||
#endif
|
#endif
|
||||||
string DateFormat { get; set; }
|
string DateFormat { get; set; }
|
||||||
@@ -92,7 +97,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
[StringLength(30)]
|
[StringLength(30)]
|
||||||
[DefaultValue("NONE")]
|
[DefaultValue("NONE")]
|
||||||
public
|
public
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
required
|
required
|
||||||
#endif
|
#endif
|
||||||
string GeneralViewer { get; set; }
|
string GeneralViewer { get; set; }
|
||||||
@@ -107,7 +112,7 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
|
|
||||||
[Column("DELETED_WHEN")]
|
[Column("DELETED_WHEN")]
|
||||||
public DateTime
|
public DateTime
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
DeletedWhen { get; set; }
|
DeletedWhen { get; set; }
|
||||||
@@ -115,13 +120,16 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
[Column("DELETED_WHO")]
|
[Column("DELETED_WHO")]
|
||||||
[StringLength(50)]
|
[StringLength(50)]
|
||||||
public
|
public
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
required
|
required
|
||||||
#endif
|
#endif
|
||||||
string
|
string
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
DeletedWho { get; set; }
|
DeletedWho { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if NETFRAMEWORK
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@@ -28,28 +28,28 @@ namespace DigitalData.UserManager.Domain.Entities
|
|||||||
|
|
||||||
[ForeignKey("UserId")]
|
[ForeignKey("UserId")]
|
||||||
public virtual User
|
public virtual User
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
User { get; set; }
|
User { get; set; }
|
||||||
|
|
||||||
[ForeignKey("RepGroupId")]
|
[ForeignKey("RepGroupId")]
|
||||||
public virtual Group
|
public virtual Group
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
RepGroup { get; set; }
|
RepGroup { get; set; }
|
||||||
|
|
||||||
[ForeignKey("GroupId")]
|
[ForeignKey("GroupId")]
|
||||||
public virtual Group
|
public virtual Group
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Group { get; set; }
|
Group { get; set; }
|
||||||
|
|
||||||
[ForeignKey("RepUserId")]
|
[ForeignKey("RepUserId")]
|
||||||
public virtual User
|
public virtual User
|
||||||
#if NET7_0_OR_GREATER
|
#if NET
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
RepUser { get; set; }
|
RepUser { get; set; }
|
||||||
|
|||||||
Reference in New Issue
Block a user