All pastes #404360 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-03-20 23:41 UTC
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
    }
}