Mini.Crm/Mini.Web/Areas/Admin/Controllers/BaseController.cs

247 lines
8.4 KiB
C#

using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Abstractions;
using Microsoft.AspNetCore.Mvc.Filters;
using Mini.Common;
using Mini.Model.ViewModel;
using Mini.Services;
using Mini.Web.WebHelper;
using Mini.Web.WebHelper.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Security.Principal;
namespace Mini.Web.Areas.Admin.Controllers
{
public abstract class BaseController : Controller
{
private UserInfo _userinfo;
private string[] _rights;
private bool needToRedirect;
private bool rightRedirct = false;
private readonly ICacheService _cacheservice = new CacheService();
protected IHttpContextAccessor _accessor;
protected BaseController()
{
HttpContext content = MvcContext.GetContext();
_rights = UserRightsHelper.getUserRights(content);
if (_rights.Contains("-1"))
{
rightRedirct = true;
}
var authenticate = content.AuthenticateAsync("MyCookies");
if (authenticate.Result.Succeeded)
{
IIdentity id = content.User.Identity;
string userdata = content.User.FindFirstValue(ClaimTypes.UserData);
if (userdata != null)
{
try
{
_userinfo = Newtonsoft.Json.JsonConvert.DeserializeObject<UserInfo>(userdata);
}
catch (Exception e)
{
_userinfo = new UserInfo();
LogHelper.Error(e.ToString());
}
}
needToRedirect = false;
}
else
{
_userinfo = new UserInfo();
needToRedirect = true;
// Redirect("Base/Account/LogOn");
}
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (this.needToRedirect || rightRedirct)
{
var account = filterContext.HttpContext.Request.Query["weixincrmaccount"];
if (!string.IsNullOrEmpty(account) && needToRedirect == true)
{
//HttpContext.SignOutAsync("MyCookies");
//string RedirectLocation = string.Format("~/Admin/Account/OutLogon?eid={0}&ReturnUrl={1}", account, filterContext.HttpContext.Request.Path + filterContext.HttpContext.Request.QueryString);
//filterContext.Result = new RedirectResult(RedirectLocation);
return;
}
else if (!string.IsNullOrEmpty(account) && needToRedirect == false)
{
//HttpContext.SignOutAsync("MyCookies");
//string RedirectLocation = string.Format("~/Admin/Account/UnAuthorized?ReturnUrl={0}", filterContext.HttpContext.Request.Path);
//filterContext.Result = new RedirectResult(RedirectLocation);
return;
}
else
{
//FormsAuthentication.SignOut();
HttpContext.SignOutAsync("MyCookies");
string RedirectLocation = string.Format("~/Admin/Account/LogOn?ReturnUrl={0}", filterContext.HttpContext.Request.Path);
filterContext.Result = new RedirectResult(RedirectLocation);
return;
}
}
}
//public override void OnException(ExceptionContext filterContext)
//{
// string controllerName = filterContext.RouteData.Values["controller"].ToString();
// string actionName = filterContext.RouteData.Values["action"].ToString();
// string msg = string.Concat(controllerName, "-", actionName, ";");
// var dbEx = filterContext.Exception as DbEntityValidationException;
// if (dbEx != null)
// {
// foreach (var validationErrors in dbEx.EntityValidationErrors)
// {
// msg += validationErrors.Entry.Entity.ToString();
// foreach (var validationError in validationErrors.ValidationErrors)
// {
// msg += string.Format("。Property:{0} Error:{1}", validationError.PropertyName, validationError.ErrorMessage) + Environment.NewLine;
// }
// }
// }
// else
// {
// msg += filterContext.Exception.ToString() + ";" + filterContext.Exception.StackTrace;
// }
// LogHelper.Error(msg);
// if (filterContext.RequestContext.HttpContext.Request.IsAjaxRequest())
// {
// filterContext.HttpContext.Response.StatusCode = 200;
// filterContext.ExceptionHandled = true;
// filterContext.Result = new JsonResult
// {
// ContentType = "text/html",
// Data = new
// {
// type = 0,
// message = "系统错误:" + filterContext.Exception.Message,
// errorMessag = "系统错误:" + filterContext.Exception.Message
// },
// JsonRequestBehavior = JsonRequestBehavior.AllowGet
// };
// }
// else
// {
// //filterContext.ExceptionHandled = true;
// //string msg = string.Concat(controllerName, "_", actionName, ";", filterContext.Exception.Message);
// //filterContext.Result = new RedirectResult(Url.Action("ErrorView", "Error", new { message = msg }));
// // filterContext.Result = new PartialViewResult("/Bas/Error/ErrorView", new { message = msg});
// base.OnException(filterContext);
// }
// // JsonHandler.ExceptionMessage(filterContext.Exception.Message);
//}
//protected override JsonResult Json(object data, string contentType, System.Text.Encoding contentEncoding, JsonRequestBehavior behavior)
//{
// return new ConfigurableJsonResult { Data = data, ContentType = contentType, ContentEncoding = contentEncoding, JsonRequestBehavior = behavior };
//}
//public bool IsLogin
//{
// get
// {
// if (System.Web.HttpContext.Current.Request.IsAuthenticated)
// return true;
// else
// return false;
// }
//}
public string UserName
{
get
{
return _userinfo.userName;
}
}
/// <summary>
/// 员工工号
/// </summary>
public decimal Eid
{
get
{
return _userinfo.userEid;
}
}
/// <summary>
/// 员工Id
/// </summary>
public int UserId
{
get
{
return _userinfo.userId;
}
}
/// <summary>
/// 员工组别id
/// </summary>
public decimal userGroupId
{
get
{
return _userinfo.userGroupId;
}
}
/// <summary>
/// 员工角色id
/// </summary>
public int[] userRoleId
{
get { return _userinfo.userRoleId; }
}
/// <summary>
/// 员工角色id
/// </summary>
public string[] userRoleNames
{
get { return _userinfo.userRoleName; }
}
public decimal LoginLogId
{
get { return _userinfo.logInLogID; }
}
/// <summary>
/// 员工权限id
/// </summary>
public string[] userRightId
{
get
{
return _rights;
}
}
public string[] userRoleCodes
{
get { return _userinfo.userRoleCode; }
//get { return null; }
}
public List<Ww_Dept_CorpInt> QwDeptControlList
{
get { return _userinfo.qwdeptcontrolList; }
}
}
}