# Pre Advices

![](https://825821834-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LA-UVvJIdbk5Kfk3bDs%2F-LDgKL1W1MSU_y31_XLP%2F-LDgKRJ3JVC15vxLXsec%2Feventhandler-prepost.jpg?generation=1527604693250045\&alt=media)

With this interceptor you can intercept local event actions and execute things **before** the requested action executes. You can do it globally by using the `preHandler()` method or targeted to a specific action `pre{actionName}()`.

```javascript
// executes before any action
function preHandler( event, rc, prc, action, eventArguments ){
}

// executes before the list() action ONLY
function preList( event, rc, prc, action, eventArguments ){
}

// concrete example
function preHandler( event, rc, prc, action, eventArguments ){
    if( !security.isLoggedIn() ){
        event.overrideEvent( 'security.login' );
        log.info( "Unauthorized accessed detected!", getHTTPRequestData() );
    }
}
function preList( event, rc, prc, action, eventArguments ){
    log.info("Starting executing the list action");
}
```

The arguments received by these interceptors are:

* `event` : The request context reference
* `action` : The action name that was intercepted
* `eventArguments` : The struct of extra arguments sent to an action if executed via `runEvent()`
* `rc` : The **RC** reference
* `prc` : The **PRC** Reference

Here are a few options for altering the default event execution:

* Use `event.overrideEvent('myHandler.myAction')` to execute a different event than the default.
* Use `event.noExecution()` to halt execution of the current event. ONLY works when executed by interceptions before the main event. It will never work in pre/post advices.

See the [RequestContext](https://coldbox.ortusbooks.com/v6.x/the-basics/request-context) documentation for more details.

## Exceptions & Only Lists

You can fine tune these interception methods by leveraging two public properties in the handler:

* `this.prehandler_only` : A list of actions that `preHandler()` will ONLY fire on
* `this.prehandler_except` : A list of actions that `preHandler()` will NOT fire on

```javascript
// only fire for the actions: save(), delete()
this.prehandler_only = "save,delete";
// DO NOT fire for the actions: login(), doLogin(), logout()
this.prehandler_except = "login,doLogin,logout"
```
