78 lines
3.6 KiB
C#
78 lines
3.6 KiB
C#
|
|
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;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|