123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- using System;
- using Luticate2.Auth.Controllers;
- using Luticate2.Auth.Dbo.Users;
- using Luticate2.Auth.Interfaces.Users;
- using Luticate2.Utils.Controllers;
- using Luticate2.Utils.Dbo.Result;
- using Luticate2.Utils.Utils;
- using Microsoft.AspNetCore.Mvc.Filters;
-
- namespace Luticate2.Auth.Middlewares
- {
- public class LuLoggedUserMiddleware : IActionFilter
- {
- public const string TokenCookieName = "luticate2-token";
-
- private readonly ILuUsersBusiness _luUsersBusiness;
-
- public LuLoggedUserMiddleware(ILuUsersBusiness luUsersBusiness)
- {
- _luUsersBusiness = luUsersBusiness;
- }
-
- public void OnActionExecuting(ActionExecutingContext context)
- {
- var token = context.HttpContext.Request.Cookies[TokenCookieName];
- var userId = Guid.Empty.ToDbo();
- if (!string.IsNullOrWhiteSpace(token))
- {
- var tokenRes = _luUsersBusiness.GetToken(token);
- if (tokenRes.Status == LuStatus.NotFound)
- {
- throw new LuResultException(LuResult<object>.Error(LuStatus.LoginError, $"{token}", "Invalid session"));
- }
- if (!tokenRes)
- {
- throw new LuResultException(tokenRes.To<object>());
- }
- userId = tokenRes.Data.UserId;
- }
-
- var userRes = _luUsersBusiness.GetSingleById(userId);
- if (!userRes)
- {
- throw new LuResultException(userRes.To<object>());
- }
-
- context.HttpContext.SetLuLoggedUser(userRes.Data);
- }
-
- public void OnActionExecuted(ActionExecutedContext context)
- {
- }
- }
- }
|