rendered paste body <component id="base.controller" type="NetCoders.Controllers.BaseController, NetCoders">
<parameters>
<SiteTitle>NetCoders Forum</SiteTitle>
<SiteUrl>http://127.0.0.1</SiteUrl>
<SiteEmail>person@domain.com</SiteEmail>
</parameters>
</component>
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
}
}