YNICTE/Base/Filter/AuthFilter.cs

78 lines
3.6 KiB
C#
Raw Normal View History

2020-10-12 14:39:23 +09:00
using System;
using System.Collections.Generic;
using System.Text;
using NP.Base.ENUM;
using System.Security.Claims;
using System.Web.Mvc;
using System.Linq;
namespace NP.Base.Auth
{
public class AFilter : ActionFilterAttribute
{
public EMRole[] Roles { get; set; }
BaseController _base;
public bool IsFront { get; set; }
public override void OnActionExecuting(ActionExecutingContext context)
{
Controller currentControll = context.Controller as Controller;
_base = currentControll as BaseController;
//if (_base.SUserInfo.UserNo > 0 && Array.Exists(Roles, el => el == GetEMRole(_base.SUserInfo.UserType)))
if (!IsFront)
{
var cm = _base.GetMENUS.Where(w => w.usertype == _base.SUserInfo.UserType && w.menuurl.Equals(context.HttpContext.Request.Url.AbsolutePath)).OrderByDescending(od => od.menulevel).FirstOrDefault();
if (cm != null
|| (_base.SUserInfo.UserNo > 0 && (context.HttpContext.Request.Url.AbsolutePath.Equals("/Home/Index/")
|| context.HttpContext.Request.Url.AbsolutePath.Equals("/Home/Index")
|| context.HttpContext.Request.Url.AbsolutePath.Equals("/Home/")
|| context.HttpContext.Request.Url.AbsolutePath.Equals("/Home")
|| context.HttpContext.Request.Url.AbsolutePath.Equals("/"))))
{
_base.ViewBag.Title = (cm ?? new Model.Menu()).menuname ?? "Home";
_base.ViewBag.CMenu = cm;
_base.ViewBag.CMenuNo = (cm ?? new Model.Menu()).menuno;
_base.ViewBag.CHidden = (cm ?? new Model.Menu()).ishid;
var pmenu = (_base.GetMENUS.Where(w => w.menuno == (cm ?? new Model.Menu()).pmenuno).FirstOrDefault() ?? new Model.Menu());
_base.ViewBag.pmenuno = pmenu.ishid == 1 ? pmenu.pmenuno : pmenu.menuno;
_base.ViewBag.pmenunos = (cm ?? new Model.Menu()).menurout;
//접속로그
var rtn = System.Threading.Tasks.Task.Run(async() => Console.WriteLine(await _base.Dao.Log(
new NP.Model.PageLog() { uno = _base.SUserInfo.UserNo, uip = _base.GetUserIP(), logsite = 0, menuno = _base.ViewBag.CMenuNo < 1 ? (int?)null : _base.ViewBag.CMenuNo, loginfo = _base.ViewBag.Title })));
base.OnActionExecuting(context);
}
else
{
context.Result = new RedirectResult("/Account/Index?returnUrl=" + context.HttpContext.Request.Path.ToString() + context.HttpContext.Request.QueryString);
}
}
else
{
var ap = context.HttpContext.Request.Url.AbsolutePath.ToUpper();
if (_base.SUserInfo.UserNo > 0)
{
base.OnActionExecuting(context);
}
else
{
context.Result = new RedirectResult("/Account/Index?returnUrl=" + context.HttpContext.Request.Path.ToString() + context.HttpContext.Request.QueryString);
}
}
}
public static EMRole GetEMRole(int userType)
{
switch (userType)
{
case 99:
return EMRole.Admin;
case 1:
return EMRole.Student;
}
return EMRole.Anonymous;
}
}
}