using System.Security.Claims;
using Dpz.Core.Public.ViewModel;
using Dpz.Core.Service.RepositoryService;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using OpenIddict.Validation.AspNetCore;
namespace Dpz.Core.Auth.Controllers;
public class HomeController : Controller
{
public async Task<IActionResult> Index([FromServices] IAccountService accountService)
{
VmUserInfo? userInfo = null;
if (User.Identity?.IsAuthenticated == true)
{
var account = User.NameIdentifier;
userInfo = await accountService.GetOneUserAsync(account);
}
return View(userInfo);
}
/// <summary>
/// 用户信息
/// </summary>
/// <returns></returns>
[Authorize(AuthenticationSchemes = OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme)]
[HttpGet("~/connect/userinfo")]
public IActionResult GetUserInfo()
{
var scopes = User.FindAll("oi_scp").Select(c => c.Value);
var claims = User
.Claims.Where(c => !c.Type.StartsWith("oi_"))
.ToDictionary(c => c.Type, c => c.Value);
claims["scope"] = string.Join(" ", scopes);
return Ok(claims);
}
[Route("robots.txt")]
public IActionResult Robots()
{
return Content("User-agent: *\nDisallow: /", "text/plain");
}
}