Directory Search API in die Benutzer-/Gruppenimport-Komponente im Angular-Frontend integriert.

This commit is contained in:
Developer 02
2024-03-25 12:32:30 +01:00
parent 7463f36013
commit 0c3a2eb09d
300 changed files with 34364 additions and 512 deletions

View File

@@ -1,14 +1,14 @@

using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authentication;
using System.Security.Claims;
using System.DirectoryServices.AccountManagement;
using Microsoft.AspNetCore.Mvc;
using DigitalData.UserManager.Application.Contracts;
using DigitalData.UserManager.Application.DTOs.User;
using Microsoft.AspNetCore.Authorization;
using DigitalData.UserManager.Application;
using DigitalData.UserManager.Application.DTOs.Auth;
using DigitalData.Core.Contracts.Application;
using Microsoft.Extensions.Caching.Memory;
namespace DigitalData.UserManager.API.Controllers
{
@@ -17,11 +17,17 @@ namespace DigitalData.UserManager.API.Controllers
{
private IUserService _userService;
private IGroupOfUserService _gouService;
private IMemoryCache _memoryCache;
private IConfiguration _configuration;
private IDirectorySearchService _dirSearchService;
public AuthController(IUserService userService, IGroupOfUserService gouService)
public AuthController(IUserService userService, IGroupOfUserService gouService, IMemoryCache memoryCache, IConfiguration configuration, IDirectorySearchService directorySearchService)
{
_userService = userService;
_gouService = gouService;
_memoryCache = memoryCache;
_configuration = configuration;
_dirSearchService = directorySearchService;
}
[AllowAnonymous]
@@ -32,8 +38,7 @@ namespace DigitalData.UserManager.API.Controllers
[HttpPost("login")]
public async Task<IActionResult> Login([FromBody] LogInDto login)
{
using var context = new PrincipalContext(ContextType.Domain);
bool isValid = context.ValidateCredentials(login.Username, login.Password);
bool isValid = _dirSearchService.ValidateCredentials(login.Username, login.Password);
if (!isValid)
return Unauthorized(_userService.Failed(MessageKey.UserNotFound.ToString()));
@@ -79,12 +84,30 @@ namespace DigitalData.UserManager.API.Controllers
new ClaimsPrincipal(claimsIdentity),
authProperties);
return Ok(2);
_dirSearchService.SetSearchRootCache(user.Username, login.Password);
return Ok();
}
[Authorize]
[HttpGet("user")]
public IActionResult GetUser() => Ok(User.Claims.ToList());
public async Task<IActionResult> GetUserWithClaims()
{
// Extract the username from the Name claim.
string? username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name)?.Value;
if (string.IsNullOrEmpty(username))
return Unauthorized();
var userDto = await _userService.ReadByUsernameAsync(username);
if (!userDto.IsSuccess || userDto.Data is null)
{
return NotFound(_userService.Failed("User not found."));
}
return Ok(userDto.Data);
}
[AllowAnonymous]
[HttpPost("logout")]