Directory Search API in die Benutzer-/Gruppenimport-Komponente im Angular-Frontend integriert.
This commit is contained in:
@@ -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")]
|
||||
|
||||
Reference in New Issue
Block a user