NetCoders Forum http://127.0.0.1 person@domain.com using System.Web; using Castle.MonoRail.Framework; using NetCoders.Helpers.Managers; using NetCoders.Model.User; namespace NetCoders.Controllers { [Layout("default")] public abstract class BaseController : SmartDispatcherController { #region Fields / Properties private string _siteTitle; private string _siteUrl; private string _siteEmail; public string SiteTitle { get { return _siteTitle; } set { _siteTitle = value; } } public string SiteUrl { get { return _siteUrl; } set { _siteUrl = value; } } public string SiteEmail { get { return _siteEmail; } set { _siteEmail = value; } } #endregion #region Constructor public BaseController() { PropertyBag["CurrentUser"] = CurrentUser; PropertyBag["SiteTitle"] = SiteTitle; PropertyBag["SiteUrl"] = SiteUrl; } #endregion #region Properties public User CurrentUser { get { HttpContext context = HttpContext.Current; if (context.User.Identity.IsAuthenticated) { return (User)context.User; } return new User(); } } #endregion #region Methods public bool HasPermission(string role) { return HasPermission(role, 0); } public bool HasPermission(string role, RolePermission required) { if (CurrentUser.IsInRole(role, required)) { return true; } else { Status("AccessDenied"); } return false; } public void Status(string message) { Status(message, null, false, false); } public void Status(string message, string redirect) { Status(message, redirect, false, false); } public void Status(string message, string redirect, bool isAdmin) { Status(message, redirect, isAdmin, false); } public void Status(string message, string redirect, bool isAdmin, bool skipLayout) { PropertyBag.Add("message", ResourceManager.Find(message)); PropertyBag.Add("redirect", redirect); if (isAdmin) { LayoutName = "admin"; RenderSharedView("common/status-admin", skipLayout); } else { LayoutName = "default"; RenderSharedView("common/status", skipLayout); } } #endregion } }