Implements the core functionality and exposes the common methods for concrete controllers.
Inheritance: IAsyncController, IValidatorAccessor, IRedirectSupport
 public void RegisterDynamicActions(Controller controller)
 {
     foreach (IPresentationViewHandler handler in presentationTypesToViewHandlers.Values)
     {
         handler.RegisterDynamicActions(controller);
     }
 }
		private string GetControllerName(Controller c)
		{
			string controllerName = c.Name;
			if (!String.IsNullOrEmpty(c.AreaName))
				controllerName = c.AreaName + "/" + controllerName;
			return controllerName;
		}
		public static IAction AddRelatedAction(string description, Controller c, string action, params string[] queryString)
		{
			IDictionary parameters = null;
			if (queryString != null && queryString.Length > 0)
				parameters = dictHelper.CreateDict(queryString);
			return AddRelatedAction(description, c.AreaName, c.Name, action, parameters);
		}
		public AspViewBase CreateView(Type type, TextWriter output, IRailsEngineContext context, Controller controller)
		{
			ConstructorInfo constructor = (ConstructorInfo)constructors[type];
			AspViewBase self = (AspViewBase)FormatterServices.GetUninitializedObject(type);
			constructor.Invoke(self, new object[] { this, output, context, controller });
			return self;
		}
 protected virtual string[] GetBooPaths(Controller controller, string[] myBoos){
     var paths = new List<string>();
     foreach (var s in myBoos){
         paths.Add(controller.Context.Server.MapPath("~/views/report/" + s + ".boo"));
     }
     return paths.ToArray();
 }
		public bool Perform(ExecuteEnum exec, IRailsEngineContext context, Controller controller)
		{
			// Read previous authenticated principal from session 
			// (could be from cookie although with more work)
			
			User user = (User) context.Session["user"];
			
			// Sets the principal as the current user
			context.CurrentUser = user;
			
			// Checks if it is OK
			if (context.CurrentUser == null || !context.CurrentUser.Identity.IsAuthenticated)
			{
				// Not authenticated, redirect to login
				NameValueCollection parameters = new NameValueCollection();
				parameters.Add("ReturnUrl", context.Url);
				controller.Redirect("login", "index", parameters);
				
				// Prevent request from continue
				return false;
			}
			
			// Everything is ok
			return true;
		}
		/// <summary>
		/// Executa o filtro.
		/// </summary>
		public bool Perform(ExecuteEnum exec, IRailsEngineContext context, Controller controller)
		{
			if (!Enabled)
				return true;

			UserAgent ua = null;

			var uaString = context.UnderlyingContext.Request.UserAgent;
			if (uaString != null)
			{
				ua = (UserAgent) cache[uaString];
				if (ua == null)
					cache[uaString] = ua = new UserAgent(uaString);
			}

			if (IsValid(ua))
				return true;

			if (!logged)
			{
				Log.Error("Tentativa de acesso através de browser não suportado: {0}", uaString);
				logged = true;
			}

			controller.PropertyBag["invalidGecko"] = true;
			if (!Redirect)
				return true;

			throw new Exception("redir: " + Redirect);

			//RedirectToNotice(controller);
			//return false;
		}
		public bool Perform(ExecuteEnum exec, IRailsEngineContext ctx, Controller c)
		{
			if (!controllersToSkip.IsMatch(GetControllerName(c)))
				if (ctx.CurrentUser == null || !ctx.CurrentUser.Identity.IsAuthenticated)
					return TryAutoLogin();

			return true;
		}
Exemple #9
0
		/// <summary>
		/// Initializes a new instance of the <see cref="BrailBase"/> class.
		/// </summary>
		/// <param name="viewEngine">The view engine.</param>
		/// <param name="output">The output.</param>
		/// <param name="context">The context.</param>
		/// <param name="__controller">The controller.</param>
		public BrailBase(BooViewEngine viewEngine, TextWriter output, IRailsEngineContext context, Controller __controller)
		{
			this.viewEngine = viewEngine;
			this.outputStream = output;
			this.context = context;
			this.__controller = __controller;
			InitProperties(context, __controller);
		}
 public static string GetCurrentLang(Controller controller)
 {
     string lang = controller.Request.ReadCookie(Constants.LOCALE_COOKIE);
     if ((lang == null) || (lang.Length == 0))
     {
         lang = controller.Request.UserLanguages[0].Substring(0,2);
     }
     return lang;
 }
 public bool Perform(ExecuteEnum exec, IRailsEngineContext context, Controller controller)
 {
     User user = (User)context.Session["logonUser"];
     if (user == null)
     {
         return false;
     }
     return true;
 }
 public INode BuildContent(IReportControllerExtension extension, Controller controller){
     var content = Stub.Create();
     SetValue("content", content);
     Extension = extension;
     Extension.CustomContentPreparatorPrepare(this);
     CustomPrepare();
     processBrail(controller);
     return content;
 }
 public bool Perform(ExecuteEnum exec, IRailsEngineContext context, Controller controller)
 {
     if (context.Request.Headers["mybadheader"] != null)
     {
         context.Response.Write("Denied!");
         return false;
     }
     return true;
 }
Exemple #14
0
		public bool Perform(ExecuteEnum exec, IRailsEngineContext context, Controller controller)
		{
			if (context.Params["printable"] != null)
			{
				controller.LayoutName = "printabletheme";
			}

			return true;
		}
		public virtual bool Perform(ExecuteEnum exec, IRailsEngineContext context, Controller controller)
		{
			if (!PerformAuthentication(context))
			{
				context.Response.Redirect("account", "authentication");
				return false;
			}

			return true;
		}
		public bool Perform(ExecuteEnum exec, IRailsEngineContext context, Controller controller)
		{
			_userAddFilter.Perform(exec,context,controller);
			if (Thread.CurrentPrincipal!=null && Thread.CurrentPrincipal.Identity.IsAuthenticated){
				log.Debug("authenticated");
				return true;
			}
			log.Debug("not authenticated");
			controller.Redirect("intro","index");
			return false;
		}
		public bool Perform(ExecuteEnum exec, IRailsEngineContext context, Controller controller)
		{
			if (context.CurrentUser == null || !context.CurrentUser.Identity.IsAuthenticated)
			{
				context.Response.Redirect("admin", "login");

				return false;
			}

			return true;
		}
Exemple #18
0
		protected override void PerformActionProcess(Controller controller)
		{
			base.PerformActionProcess(controller);
			
			controller.PropertyBag.Add( "items", 
				PaginationHelper.CreatePagination(controller, PerformFindAll(), 10) );
			
			controller.PropertyBag["properties"] = ObtainListableProperties(Model);

			controller.RenderView(controller.Name, "list" + Model.Type.Name);
		}
		public override bool Perform(ExecuteEnum exec, IRailsEngineContext context, Controller controller)
		{
			if (context.CurrentUser.Identity.IsAuthenticated)
			{
				return true;
			}

			base.PerformAuthentication(context);

			return true;
		}
		public bool Perform(ExecuteEnum exec, IRailsEngineContext context, Controller controller)
		{
			if (exec == ExecuteEnum.BeforeAction)
			{
				context.Response.Write("(before)");
			}
			else if (exec == ExecuteEnum.AfterRendering)
			{
				context.Response.Write("(after)");
			}

			return true; // Continue execution
		}
Exemple #21
0
        public bool Perform(ExecuteEnum exec, IRailsEngineContext context, Castle.MonoRail.Framework.Controller controller)
        {
            U_UserInfo u = context.Session["logonUser"] as U_UserInfo;

            if (u == null)
            {
                Hashtable p = new Hashtable();
                p.Add("backUrl", context.Request.Uri.AbsoluteUri);
                controller.Redirect("/login", p);
                return(false);
            }
            return(true);
        }
Exemple #22
0
		public bool Perform(ExecuteEnum exec, IRailsEngineContext context, Controller controller)
		{
			String className = controller.GetType().FullName.Replace('.', '/');
			
			if (className.StartsWith("SampleSite"))
			{
				className = className.Substring( "SampleSite/".Length );
			}

			controller.PropertyBag.Add("controllerfile", className + ".cs");

			return true;
		}
		protected override void PerformActionProcess(Controller controller)
		{
			object instance = null;
			
			try
			{
				AssertIsPost(controller);
				
				instance = binder.BindObject(Model.Type, Model.Type.Name, builder.BuildSourceNode(controller.Request.Form));

				CommonOperationUtils.SaveInstance(instance, controller, errors, ref prop2Validation, false);

				SessionScope.Current.Flush();
				
				if (UseModelName)
				{
					controller.Redirect(controller.AreaName, controller.Name, "list" + Model.Type.Name);
				}
				else
				{
					controller.Redirect(controller.AreaName, controller.Name, "list");
				}
			}
			catch(Exception ex)
			{
				errors.Add("Could not save " + Model.Type.Name + ". " + ex.Message);
			}

			if (errors.Count != 0)
			{
				controller.Context.Flash[Model.Type.Name] = instance;
				controller.Context.Flash["errors"] = errors;

				PropertyInfo keyProp = ObtainPKProperty();
				IDictionary props = new Hashtable();

				if (instance != null)
				{
					props[keyProp.Name] = keyProp.GetValue(instance, null);
				}
				
				if (UseModelName)
				{
					controller.Redirect(controller.AreaName, controller.Name, "edit" + Model.Type.Name, props);
				}
				else
				{
					controller.Redirect(controller.AreaName, controller.Name, "edit", props);
				}
			}
		}
        public static void PrepareWorkbench(Controller controller)
        {
            foreach (var prop in Enumerable.ToArray<KeyValuePair<string, object>>(myapp.getProfile().GetAsDictionary()))
            {
                if (prop.Key.StartsWith("wb."))
                {
                    var key = prop.Key.Substring(3);

                    controller.PropertyBag[key] = prop.Value;

                }

            }
        }
		public void Process(Controller controller)
		{
			InitializeTemplateEngine();

			bool useDefaultLayout = controller.MetaDescriptor.Layout == null;

			if (controller.MetaDescriptor.Scaffoldings.Count == 1)
			{
				ScaffoldingAttribute scaffoldAtt = (ScaffoldingAttribute)
				                                   controller.MetaDescriptor.Scaffoldings[0];

				controller.DynamicActions["new"] = 
					new NewAction(scaffoldAtt.Model, templateEngine, false, useDefaultLayout);
				controller.DynamicActions["create"] = 
					new CreateAction(scaffoldAtt.Model, templateEngine, false, useDefaultLayout);
				controller.DynamicActions["edit"] = 
					new EditAction(scaffoldAtt.Model, templateEngine, false, useDefaultLayout);
				controller.DynamicActions["update"] = 
					new UpdateAction(scaffoldAtt.Model, templateEngine, false, useDefaultLayout);
				controller.DynamicActions["remove"] = 
					new RemoveAction(scaffoldAtt.Model, templateEngine, false, useDefaultLayout);
				controller.DynamicActions["confirm"] =
					new ConfirmRemoveAction(scaffoldAtt.Model, templateEngine, false, useDefaultLayout);
				controller.DynamicActions["list"] = 
					new ListAction(scaffoldAtt.Model, templateEngine, false, useDefaultLayout);
			}
			else
			{
				foreach(ScaffoldingAttribute scaffoldAtt in controller.MetaDescriptor.Scaffoldings)
				{
					String name = scaffoldAtt.Model.Name;

					controller.DynamicActions[String.Format("new{0}", name)] =
						new NewAction(scaffoldAtt.Model, templateEngine, true, useDefaultLayout);
					controller.DynamicActions[String.Format("create{0}", name)] =
						new CreateAction(scaffoldAtt.Model, templateEngine, true, useDefaultLayout);
					controller.DynamicActions[String.Format("edit{0}", name)] =
						new EditAction(scaffoldAtt.Model, templateEngine, true, useDefaultLayout);
					controller.DynamicActions[String.Format("update{0}", name)] =
						new UpdateAction(scaffoldAtt.Model, templateEngine, true, useDefaultLayout);
					controller.DynamicActions[String.Format("remove{0}", name)] =
						new RemoveAction(scaffoldAtt.Model, templateEngine, true, useDefaultLayout);
					controller.DynamicActions[String.Format("confirm{0}", name)] =
						new ConfirmRemoveAction(scaffoldAtt.Model, templateEngine, true, useDefaultLayout);
					controller.DynamicActions[String.Format("list{0}", name)] =
						new ListAction(scaffoldAtt.Model, templateEngine, true, useDefaultLayout);
				}
			}
		}
Exemple #26
0
		protected override void PerformActionProcess(Controller controller)
		{
			base.PerformActionProcess(controller);
			
			if (instance == null)
			{
				instance = Activator.CreateInstance(Model.Type);
			}

			string prefix = Model.Type.Name;

			controller.PropertyBag["prefix"] = prefix;
			controller.PropertyBag[prefix + "type"] = Model.Type;
			controller.PropertyBag["instance"] = instance;
		}
		public bool Perform(ExecuteEnum when, IRailsEngineContext context, Controller controller)
		{
			context.CurrentUser = context.Session["user"] as IPrincipal;

			if (context.CurrentUser == null || 
				context.CurrentUser.Identity == null || 
				!context.CurrentUser.Identity.IsAuthenticated)
			{
				context.Session["FromUrl"] = context.Url;
				
				context.Response.Redirect("home", "authentication");
				
				return false;
			}
			return true;
		}
		internal static void SaveInstance(object instance, Controller controller, 
		                                  ArrayList errors, ref IDictionary prop2Validation, bool create)
		{
			bool isValid = true;
			
			Type genType = typeof(ActiveRecordValidationBase<>).MakeGenericType(instance.GetType());
			
			if (genType.IsAssignableFrom(instance.GetType()))
			{
				MethodInfo isValidMethod = instance.GetType().GetMethod("IsValid");

				isValid = (bool) isValidMethod.Invoke(instance, null);
				
				if (!isValid)
				{
					MethodInfo getValidationErrorMessages = instance.GetType().GetMethod("get_ValidationErrorMessages");
					MethodInfo getPropertiesValidationErrorMessage = instance.GetType().GetMethod("get_PropertiesValidationErrorMessage");

					errors.AddRange((ICollection) getValidationErrorMessages.Invoke(instance, null));
					prop2Validation = (IDictionary) getPropertiesValidationErrorMessage.Invoke(instance, null);
				}
			}
			else if (instance is ActiveRecordValidationBase)
			{
				ActiveRecordValidationBase instanceBase = instance as ActiveRecordValidationBase;

				isValid = instanceBase.IsValid();
				
				if (!isValid)
				{
					errors.AddRange(instanceBase.ValidationErrorMessages);
					prop2Validation = instanceBase.PropertiesValidationErrorMessage;
				}
			}

			if (isValid)
			{
				if (create)
				{
					ActiveRecordMediator.Create(instance);
				}
				else
				{
					ActiveRecordMediator.Update(instance);
				}
			}
		}
        public void SetUp()
        {
            controller = new ReturnBinderTestController();
            viewEngineManager = new InjectableStubViewEngineManager();
            PrepareController(controller);

            services = controller.Context.Services as StubMonoRailServices;
            services.ViewEngineManager = viewEngineManager;

            engineContext = controller.Context as StubEngineContext;
            engineContext.Request.Headers.Add("User-Agent", "Test Fixture");

            controllerContext = services.ControllerContextFactory.
                Create("", "ReturnBinderTest", "Index", services.ControllerDescriptorProvider.BuildDescriptor(controller));

            controller.Contextualize(controller.Context, controllerContext);
            viewEngineManager.RegisterTemplate(string.Format("ReturnBinderTest{0}Index", Path.DirectorySeparatorChar));
        }
		protected override void PerformActionProcess(Controller controller)
		{
			base.PerformActionProcess(controller);
			
			object idVal = CommonOperationUtils.ReadPkFromParams(controller, ObtainPKProperty());

			try
			{
				object instance = ActiveRecordMediator.FindByPrimaryKey(Model.Type, idVal, true);

				controller.PropertyBag["instance"] = instance;
				controller.PropertyBag["id"] = idVal;
			}
			catch(Exception ex)
			{
				throw new ScaffoldException("Could not obtain instance by using this id", ex);
			}
		}
 public bool Perform(ExecuteEnum exec, IRailsEngineContext context, Controller controller)
 {
     if ((appContext.CurrentProject == null)
         && !((controller is ProjectsController) && (controller.Action.Equals("new") || controller.Action.Equals("create")))) // Avoid infinite loop when redirecting
     {
         if (Project.Exists())
         {
             appContext.CurrentProject = Project.FindFirst();
         }
         else
         {
             context.Response.Redirect("projects", "new");
             return false;
         }
     }
     controller.PropertyBag["currentproject"] = appContext.CurrentProject;
     return true;
 }