You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
3.7 KiB
C#

10 months ago
using BookingWeb.DB;
using BookingWeb.DB.Model;
using BookingWeb.Models;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Filters;
using System.Web.Security;
namespace BookingWeb.Controllers
{
public class BaseController : Controller
{
private BookingDB bookingDB = new BookingDB();
private string _clintId;
protected string ClientId
{
get
{
return _clintId;
}
private set { }
}
protected CurrentUser CurrentUser
{
get
{
if (Session["UserInfo"] != null)
{
return (CurrentUser)Session["UserInfo"];
}
return null;
}
}
protected CurrentCompany CurrentCompany
{
get
{
if (Session["CompanyInfo"] != null)
{
return (CurrentCompany)Session["CompanyInfo"];
}
return null;
}
}
protected void InitCurrentUser(SysUser user)
{
Session["UserInfo"] = user.AsCurrentUser();
}
protected void InitCurrentCompany(SysUser user)
{
Session["CompanyInfo"] = user.AsCurrentCompany();
}
protected override void OnAuthentication(AuthenticationContext filterContext)
{
base.OnAuthentication(filterContext);
var client = filterContext.RouteData.Values["client"].ToString();
var clientOjb = bookingDB.Clients.FirstOrDefault(c => c.GID == client);
if (clientOjb == null)
{
filterContext.Result = new HttpNotFoundResult();
}
else
{
_clintId = client;
object routeLang = filterContext.RouteData.Values["lang"];
if (routeLang == null)
{
routeLang = "cn";
}
if (routeLang.ToString() != "cn")
{
///从路由数据(url)里设置语言
var lang = filterContext.RouteData.Values["lang"].ToString();
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(lang);
}
if (Session["UserInfo"] == null)
{
if (!filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true)
&& !filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true))
{
filterContext.Result = new RedirectResult(Url.Action("login", "user", new { returnUrl = Request.Url }));
}
}
}
}
protected bool ValidData(out string message)
{
if (!ModelState.IsValid)
{
StringBuilder errStr = new StringBuilder();
foreach (var sta in ModelState.Values)
{
if (sta.Errors.Count > 0)
{
foreach (var err in sta.Errors)
{
errStr.AppendLine(err.ErrorMessage);
}
}
}
message = errStr.ToString();
return false;
}
else
{
message = string.Empty;
return true;
}
}
}
}