Last active
April 30, 2020 15:24
-
-
Save stevewithington/5979618 to your computer and use it in GitHub Desktop.
Mura CMS : Examples of how to intercept User creation, update and save events to do some processing of the User Bean and then create custom error messages as well.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<cfscript> | |
public any function onBeforeUserCreate($, event) { | |
var user = arguments.event.getValue('userbean'); | |
// do some processing of the user 'bean' | |
// to create an error message, just add any key to the end of the User's getErrors() struct: | |
user.getErrors().createFailMessage1 = 'UserCreate fail message goes here. Sorry #user.getFName()#.'; | |
} | |
public any function onBeforeUserUpdate($, event) { | |
var user = arguments.event.getValue('userbean'); | |
user.getErrors().updateFailMessage1 = 'UserUpdate fail message goes here. Um...#user.getFName()#...whatcha tryin to do?'; | |
// maybe you do some more processing of the data and have another error... | |
user.getErrors().anotherFailMessage = 'Another fail while attempting to update the user...so here is the message.'; | |
} | |
public any function onBeforeUserSave($, event) { | |
var user = arguments.event.getValue('userbean'); | |
// if you need access to the original userbean | |
//var originalUserBean = arguments.$.getBean('user').loadBy(userid=user.getUserID()); | |
var originalUserBean = arguments.$.getBean('user').loadBy(username=user.getUsername()); | |
// 2 = user, 1 = group | |
if ( user.getType() == 2 ) { | |
user.getErrors().saveFailMessage1 = 'UserSave fail message: Hey #user.getFName()#...not gonna happen.'; | |
} | |
// you could check for errors, and even _replace_ the error message... | |
// for example, maybe there's a duplicate username | |
if ( StructKeyExists(user.getErrors(), 'username') { | |
user.getErrors().username = 'Hey, the username, #user.getUsername()#, is already being used! The email address associated with the account is #originalUserBean.getEmail()#. If that is you, then reset the password by entering the email address in the form located at <a href="./?nocache=1&display=login">HERE</a>.'; | |
} | |
} | |
</cfscript> |
Theres a typo on line 20: user.getUseranme() should be user.getUsername()
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi Steve, Is this code still valid with the latest version of mura? I've tried your onBeforeUserUpdate code and the error just get ignored and the user details save.